这功能提醒微信通知信息吗?

HAMI_7589580509 · 4 小时前
第 1 条补充
·
4 小时前

帮我采集一套代码,一步一步教我

第 2 条补充
·
4 小时前

财信信息转发到云服务器,展示页面

回答

Hamibot AI
1
· 4 小时前

是的,Hamibot 可以监听微信通知信息。通过开启通知监听功能(events.observeNotification()),然后注册通知事件回调(events.onNotification),你可以获取到微信通知的标题、内容、包名等信息,并据此执行后续操作,例如判断是否为未读消息并自动处理。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实
Hamibot AI
1
· 4 小时前

好的,我们来写一个最简单的“采集”脚本。这个脚本会打开一个指定的 App(这里以“微信”为例,你也可以改成别的),然后自动点击某个按钮,最后把页面上的一些文字复制出来,保存到剪贴板或者日志里。

一步步跟着做,就能运行起来。


第一步:新建脚本

  1. 打开 Hamibot 控制台:https://hamibot.cn/dashboard
  2. 在左侧菜单点击「脚本」,然后点击「新建脚本」。
  3. 给脚本起个名字,比如“微信采集示例”,点击「创建」。

第二步:粘贴代码

把下面的代码完整复制到脚本编辑器中,然后保存。

// 文档地址 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); 把采集到的微信号直接复制到剪贴板,方便粘贴到其他地方

第四步:运行脚本

  1. 在脚本编辑页面,点击右上角的「保存」。
  2. 点击「运行」按钮,选择你的手机设备(确保手机已经安装了 Hamibot 并连接了配对码)。
  3. 观察手机屏幕,脚本会自动执行,最后弹出提示显示采集到的微信号(如果微信界面布局没变的话)。

常见问题与调整

  • 点击位置不对:每个手机的分辨率不同,你需要用 Hamibot 的「抓抓」工具(设备列表里点手机图标 → 抓抓),重新获取“+”号和“添加朋友”的坐标,替换 click 里的数字。
  • 找不到控件:如果 text("添加朋友") 找不到,可能是微信版本不同,可以改用 className("android.widget.TextView").text("添加朋友") 或者用 idMatches 定位。
  • 采集的内容不是微信号:我只是举例采集微信号,你可以把 text("我的微信号") 改成你想采集的其他文字,比如 text("某某公众号"),然后照葫芦画瓢。

如果你想采集其他 App 或者网页,原理是一样的:启动应用 → 等待 → 点击/滑动 → 找到目标控件 → 取出文本。如果需要更复杂的采集(比如循环翻页、批量保存到文件),可以再问我,我会继续提供代码。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实
Hamibot AI
1
· 4 小时前

好的,我来帮你设计一套完整的方案: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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
        }

        // 首次加载
        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 的页面布局,找到你要采集的文字所在的控件,记录它的 textidclassName,然后修改 collectData() 函数。

3. 替换服务器地址

把脚本里的 http://你的服务器IP:3000/upload 换成你的真实服务器地址。

4. 运行测试

保存脚本后点击运行,观察手机屏幕和日志输出,确认数据能正常上传。


定时自动采集

如果你需要定时采集,可以在 Hamibot 控制台创建「定时任务」:

  1. 进入控制台 → 定时任务
  2. 选择你的脚本和设备
  3. 设置 Cron 表达式,例如每 5 分钟执行一次:*/5 * * * *

安全建议

  1. 加个简单的密钥验证,防止别人随便上传数据:

    // 服务端 server.js 的 /upload 里加上
    if (req.body.key !== '你设置的密钥') {
        return res.status(403).json({ error: '无权访问' });
    }
    
    // Hamibot 脚本里上传时带上 key
    http.postJson(UPLOAD_URL, {
        content: content,
        key: '你设置的密钥'
    });
    
  2. 用 Nginx 反向代理,加上 HTTPS,安全性更高。


如果你能把财信 App 的具体界面截图或描述一下(比如你要采集哪个页面的什么信息),我可以帮你写出更精准的采集代码。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实