5.2 KiB
5.2 KiB
闲鱼卖家消息通知(Edge + 调试端口轮询)
在不改网页、不装扩展的前提下,用你自己的登录态盯着 seller.goofish.com 的未读红点,一旦有新消息就: 本地 Windows 弹窗 + 提示音,并(可选)转发到飞书 / 企业微信 / 钉钉 / Bark(iPhone)/ Server酱。
原理
launch-edge.bat 用独立 profile 启动 Edge 并打开调试端口(9333)。watch.js 通过 CDP 每 5 秒读一次页面 DOM 里的未读徽标,数值变大就通知。
独立 profile 是必需的:Edge 136+ 在默认 profile 上会忽略调试端口。
三步上手
- 双击
launch-edge.bat→ 在弹出的 Edge 窗口里扫码登录闲鱼,进入消息页,保持标签页开着。 (窗口顶部会有一条"正在受自动化软件控制"的提示,正常。) - 双击
probe.bat→ 生成probe-result.json,把结果发给助手校准未读元素的选择器。 - 双击
start-watch.bat测试;确认能弹窗后,改用start-watch-hidden.vbs后台常驻。
防刷屏 / 防乱发
config.json 里的 rateLimit 是 webhook 的闸门:
"rateLimit": { "minIntervalSeconds": 60, "maxPerHour": 30 }
- 合并而非丢弃:60 秒内的多次新消息不会发多条,而是攒起来,到点合成一条"合并 N 条提醒"发出去。信息不丢,群里不刷屏。
- 小时上限:企业微信群机器人官方限制 20 条/分钟(超了返回
45009),这里默认 30 条/小时,远低于阈值,不会触发封禁。 - 本地弹窗不走节流,因为那是给你自己看的;只有转发到群的受限制。
- 只在未读数变大时触发,已读、刷新页面、重复渲染都不会误报。
密钥安全(重要)
webhook 的 URL 本身就是密码:拿到 URL 的任何人都能往你群里发任意消息。
这个文件夹在 Obsidian 库里,如果你的库有同步/进 Git,密钥会跟着上云。所以配置文件支持不写明文:
"webhooks": [
{ "type": "wecom", "url": "env:WECOM_HOOK" }
]
然后在系统环境变量里设 WECOM_HOOK=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx。
(注意:环境变量对当前用户所有程序可见,安全性高于明文但不等于保险箱。)
通知配置
- 只想要本地弹窗/声音:默认即可。
- 想推到手机/群里:编辑
config.json的webhooks数组,加一条即可,支持:
| type | 说明 |
|---|---|
feishu |
飞书群 → 添加自定义机器人,复制 webhook 地址 |
wecom |
企业微信群机器人地址(群内至少要有两人,或管理员建应用) |
wecomapp |
企业微信自建应用:推给自己单聊,最干净。需管理员后台建应用,填 corpid/corpsecret/agentid,touser 填你的企微 UserID |
dingtalk |
钉钉自定义机器人地址 |
bark |
https://api.day.app/你的KEY(iPhone 锁屏推送,推荐) |
ntfy |
ntfy 主题地址,如 https://ntfy.sh/你的主题 |
email |
邮件(QQ/163 SMTP),微信有邮件提醒,等于推到手机 |
serverchan |
https://sctapi.ftqq.com/你的KEY.send |
custom |
任意 URL,可选 method/headers/body,body 里可用 {{title}} {{text}} |
邮件示例(QQ 邮箱要先去设置里开 SMTP 并拿授权码,不是登录密码):
"webhooks": [
{ "type": "email", "smtp": "smtp.qq.com", "port": 465,
"from": "你的QQ号@qq.com", "to": "你的QQ号@qq.com", "passEnv": "MAIL_PASS" }
]
企微自建应用示例:
"webhooks": [
{ "type": "wecomapp", "corpid": "ww1234abcd", "corpsecret": "env:WECOM_APP_SECRET",
"agentid": 1000002, "touser": "你的UserID" }
]
示例:
"webhooks": [
{ "type": "feishu", "url": "https://open.feishu.cn/open-apis/bot/v2/hook/xxxx" },
{ "type": "bark", "url": "https://api.day.app/你的KEY" }
]
配好后先跑一次测试:node watch.js --test
其他配置项
| 键 | 说明 |
|---|---|
pollSeconds |
轮询间隔,默认 5 秒 |
badgeFilter.requireRed |
只认红色徽标,减少误报 |
badgeFilter.includePathRegex |
只监视路径匹配的元素,例如 `"im-nav |
notifyOnDecrease |
已读后消息数变少时也提醒(默认关) |
quietHours |
{"from":"23:00","to":"08:00"},静默时段不打扰 |
heartbeatMinutes |
每隔 N 分钟写一条心跳日志,确认还活着 |
注意事项
- 这个 Edge 窗口的登录态独立,和你日常用的 Edge 互不影响;闲鱼的登录过期后需要重新扫码。
- 别把
edge-profile目录删了,删了就得重新登录。 - 页面大改版时红点结构会变,届时重跑
probe.bat重新校准。 - 关机自启:把
start-watch-hidden.vbs的快捷方式丢进shell:startup。 - 日志:
watch.log,超过 2MB 自动转成watch.log.old。
文件
launch-edge.ps1/launch-edge.bat:启动带调试端口的 Edgeprobe.js/probe.bat:摸清页面未读元素结构watch.js:监听主程序cdp.js:极简 CDP 客户端(零依赖,用 Node 22 内置 WebSocket)notify.js+toast.ps1:Toast 弹窗、提示音、webhook 转发config.json:配置