这功能提醒微信通知信息吗?
帮我采集一套代码,一步一步教我
财信信息转发到云服务器,展示页面
回答
是的,Hamibot 可以监听微信通知信息。通过开启通知监听功能(events.observeNotification()),然后注册通知事件回调(events.onNotification),你可以获取到微信通知的标题、内容、包名等信息,并据此执行后续操作,例如判断是否为未读消息并自动处理。
好的,我们来写一个最简单的“采集”脚本。这个脚本会打开一个指定的 App(这里以“微信”为例,你也可以改成别的),然后自动点击某个按钮,最后把页面上的一些文字复制出来,保存到剪贴板或者日志里。
一步步跟着做,就能运行起来。
第一步:新建脚本
- 打开 Hamibot 控制台:https://hamibot.cn/dashboard
- 在左侧菜单点击「脚本」,然后点击「新建脚本」。
- 给脚本起个名字,比如“微信采集示例”,点击「创建」。
第二步:粘贴代码
把下面的代码完整复制到脚本编辑器中,然后保存。
// 文档地址 https://docs.hamibot.com/
// 1. 启动微信(包名:com.tencent.mm)
launchApp("微信");
sleep(3000); // 等待3秒,让微信完全打开
// 2. 点击右上角的“+”号(为了演示,我们点“+”然后选“添加朋友”)
// 这里使用坐标点击,你需要根据自己手机分辨率调整坐标。
// 示例坐标:x=950, y=70(通常1080x1920分辨率下,右上角“+”附近)
click(950, 70);
sleep(1000);
// 3. 在弹出的菜单中点击“添加朋友”
// “添加朋友”文字出现在屏幕上,我们用 text() 找到它并点击
if (text("添加朋友").exists()) {
text("添加朋友").click();
sleep(2000);
} else {
toast("没找到“添加朋友”按钮,请检查脚本或手动点击");
exit();
}
// 4. 这时会进入“添加朋友”页面,我们采集页面最上方的标题文字
// 通常标题是“添加朋友”,我们用 idMatches 或者 className 找到标题控件
// 这里简单采集“我的微信号”一栏里的文字,如果有的话
// 先找“我的微信号”这个控件
var myWechatId = text("我的微信号").findOne();
if (myWechatId) {
// 获取它的父控件,再找旁边的微信号文本
var parent = myWechatId.parent();
var idText = parent.child(1); // 假设微信号在第二个子控件里
var wechatId = idText.text();
toast("采集到的微信号:" + wechatId);
log("采集结果:" + wechatId);
// 你也可以把结果复制到剪贴板
setClip(wechatId);
} else {
toast("没找到微信号信息,可能页面结构不同");
}
// 5. 脚本结束
第三步:理解代码每一步(你可以根据需求修改)
| 步骤 | 代码 | 作用 |
|---|---|---|
| ① 启动应用 | launchApp("微信"); |
打开微信,括号里改成其他应用的包名就可以采集别的 App |
| ② 等待加载 | sleep(3000); |
暂停3秒,保证应用完全打开 |
| ③ 点击坐标 | click(950, 70); |
点击右上角“+”号。坐标需要根据你的手机调整,可以用 Hamibot 的“抓抓”功能获取坐标 |
| ④ 判断并点击文字 | if (text("添加朋友").exists()) |
如果屏幕上出现了“添加朋友”这几个字,就点击它 |
| ⑤ 采集信息 | text("我的微信号").findOne() |
查找包含“我的微信号”的控件,然后取出旁边的微信号文本 |
| ⑥ 显示结果 | toast("采集到的微信号:" + wechatId); |
弹出提示,并在日志里记录 |
| ⑦ 复制到剪贴板 | setClip(wechatId); |
把采集到的微信号直接复制到剪贴板,方便粘贴到其他地方 |
第四步:运行脚本
- 在脚本编辑页面,点击右上角的「保存」。
- 点击「运行」按钮,选择你的手机设备(确保手机已经安装了 Hamibot 并连接了配对码)。
- 观察手机屏幕,脚本会自动执行,最后弹出提示显示采集到的微信号(如果微信界面布局没变的话)。
常见问题与调整
- 点击位置不对:每个手机的分辨率不同,你需要用 Hamibot 的「抓抓」工具(设备列表里点手机图标 → 抓抓),重新获取“+”号和“添加朋友”的坐标,替换
click里的数字。 - 找不到控件:如果
text("添加朋友")找不到,可能是微信版本不同,可以改用className("android.widget.TextView").text("添加朋友")或者用idMatches定位。 - 采集的内容不是微信号:我只是举例采集微信号,你可以把
text("我的微信号")改成你想采集的其他文字,比如text("某某公众号"),然后照葫芦画瓢。
如果你想采集其他 App 或者网页,原理是一样的:启动应用 → 等待 → 点击/滑动 → 找到目标控件 → 取出文本。如果需要更复杂的采集(比如循环翻页、批量保存到文件),可以再问我,我会继续提供代码。
好的,我来帮你设计一套完整的方案:Hamibot 采集财信信息 → 发送到云服务器 → 网页展示。
整体架构
手机(Hamibot脚本)──采集数据──→ 云服务器(接收+存储)──查询──→ 网页展示
第一步:搭建云服务器接收端
这里以 Node.js 为例,用最轻量的方式搭建。如果你用其他语言(Python / PHP),原理一样。
1. 在云服务器上安装 Node.js(如果还没装)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
2. 创建项目文件夹
mkdir caixin-server
cd caixin-server
npm init -y
npm install express body-parser
3. 创建 server.js(接收数据 + 提供展示页面)
// server.js
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const path = require('path');
const app = express();
app.use(bodyParser.json());
app.use(express.static('public'));
const DATA_FILE = './data.json';
// 读取已有数据
function readData() {
try {
if (fs.existsSync(DATA_FILE)) {
return JSON.parse(fs.readFileSync(DATA_FILE, 'utf8'));
}
} catch (e) {}
return [];
}
// 保存数据
function saveData(data) {
fs.writeFileSync(DATA_FILE, JSON.stringify(data, null, 2), 'utf8');
}
// 接收 Hamibot 上传的数据
app.post('/upload', function(req, res) {
var body = req.body;
var record = {
content: body.content || '',
time: body.time || new Date().toISOString(),
source: body.source || '财信'
};
var data = readData();
data.unshift(record); // 最新数据放在最前面
// 只保留最近 200 条
if (data.length > 200) {
data = data.slice(0, 200);
}
saveData(data);
console.log('收到数据:', record.content.substring(0, 50));
res.json({ success: true });
});
// 获取所有数据(供网页调用)
app.get('/api/data', function(req, res) {
var data = readData();
res.json(data);
});
// 启动服务
app.listen(3000, function() {
console.log('服务已启动,端口 3000');
});
4. 创建展示页面 public/index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>财信信息展示</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: #1a1a2e; color: #eee; font-family: -apple-system, sans-serif; padding: 20px; }
h1 { text-align: center; color: #e94560; margin-bottom: 20px; }
.card { background: #16213e; border-radius: 10px; padding: 16px; margin-bottom: 12px; border-left: 4px solid #e94560; }
.card .content { font-size: 16px; line-height: 1.6; margin-bottom: 8px; word-break: break-all; }
.card .meta { font-size: 12px; color: #888; }
.refresh-btn { display: block; margin: 0 auto 20px; padding: 10px 30px; background: #e94560; color: #fff; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; }
.empty { text-align: center; color: #666; padding: 40px; }
</style>
</head>
<body>
<h1>📊 财信信息展示</h1>
<button class="refresh-btn" onclick="loadData()">刷新数据</button>
<div id="list"></div>
<script>
function loadData() {
fetch('/api/data')
.then(function(res) { return res.json(); })
.then(function(data) {
var list = document.getElementById('list');
if (data.length === 0) {
list.innerHTML = '<div class="empty">暂无数据,等待 Hamibot 上传...</div>';
return;
}
var html = '';
data.forEach(function(item) {
html += '<div class="card">';
html += '<div class="content">' + escapeHtml(item.content) + '</div>';
html += '<div class="meta">来源: ' + escapeHtml(item.source) + ' | 时间: ' + escapeHtml(item.time) + '</div>';
html += '</div>';
});
list.innerHTML = html;
});
}
function escapeHtml(str) {
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
}
// 首次加载
loadData();
// 每 30 秒自动刷新
setInterval(loadData, 30000);
</script>
</body>
</html>
5. 启动服务器
node server.js
看到 服务已启动,端口 3000 就说明成功了。访问 http://你的服务器IP:3000 就能看到展示页面。
注意:需要在云服务器安全组中放行 3000 端口。
第二步:编写 Hamibot 采集脚本
这个脚本需要根据你的「财信」App 实际界面来调整。这里给出一个通用模板,你需要用 Hamibot 的「抓抓」工具获取真实坐标和控件信息后替换。
// 文档地址 https://docs.hamibot.com/
// ========== 配置 ==========
var UPLOAD_URL = "http://你的服务器IP:3000/upload"; // 改成你的服务器地址
var PACKAGE_NAME = "com.xxx.xxx"; // 改成财信App的包名
// ========== 采集函数 ==========
function collectData() {
// 1. 启动财信 App
launchApp(PACKAGE_NAME);
sleep(5000); // 等待加载
// 2. 进入目标页面(根据实际情况编写)
// 示例:点击某个按钮进入信息列表
// click(坐标x, 坐标y);
// sleep(2000);
// 3. 采集信息
// 方式一:按文字匹配
// var target = text("目标文字").findOne();
// if (target) {
// var info = target.parent().child(1).text();
// }
// 方式二:按 ID 匹配
// var target = id("com.xxx:id/title").findOne();
// if (target) {
// var info = target.text();
// }
// 方式三:遍历所有文本控件
var allTexts = [];
className("android.widget.TextView").find().forEach(function(el) {
var t = el.text();
if (t && t.length > 0) {
allTexts.push(t);
}
});
var content = allTexts.join(" | ");
return content;
}
// ========== 上传到服务器 ==========
function uploadToServer(content) {
try {
var res = http.postJson(UPLOAD_URL, {
content: content,
time: new Date().toISOString(),
source: "财信"
});
var result = res.body.json();
if (result.success) {
toast("上传成功");
log("上传成功: " + content.substring(0, 30));
} else {
toast("上传失败");
}
} catch (e) {
toast("网络错误: " + e.message);
log("上传异常: " + e);
}
}
// ========== 主流程 ==========
function main() {
log("开始采集财信信息...");
var data = collectData();
if (data && data.length > 0) {
uploadToServer(data);
} else {
toast("未采集到数据");
}
}
main();
第三步:配置与调试
1. 获取财信 App 的包名
在 Hamibot 客户端里,点击设备 → 抓抓 → 切换到财信 App → 顶部会显示包名。
2. 获取控件信息
用「抓抓」工具分析财信 App 的页面布局,找到你要采集的文字所在的控件,记录它的 text、id 或 className,然后修改 collectData() 函数。
3. 替换服务器地址
把脚本里的 http://你的服务器IP:3000/upload 换成你的真实服务器地址。
4. 运行测试
保存脚本后点击运行,观察手机屏幕和日志输出,确认数据能正常上传。
定时自动采集
如果你需要定时采集,可以在 Hamibot 控制台创建「定时任务」:
- 进入控制台 → 定时任务
- 选择你的脚本和设备
- 设置 Cron 表达式,例如每 5 分钟执行一次:
*/5 * * * *
安全建议
-
加个简单的密钥验证,防止别人随便上传数据:
// 服务端 server.js 的 /upload 里加上 if (req.body.key !== '你设置的密钥') { return res.status(403).json({ error: '无权访问' }); }// Hamibot 脚本里上传时带上 key http.postJson(UPLOAD_URL, { content: content, key: '你设置的密钥' }); -
用 Nginx 反向代理,加上 HTTPS,安全性更高。
如果你能把财信 App 的具体界面截图或描述一下(比如你要采集哪个页面的什么信息),我可以帮你写出更精准的采集代码。