avatar🌌
seewhyseewhy的小木屋

宠辱不惊,看庭前花开花落。 去留无意,望天空云卷云舒。

we-mp-rss 的自动化扫码登录方案

背景

之前在家里部署了 we-mp-rss,用来订阅公众号文章。它有个比较麻烦的问题:每隔 80 小时左右需要重新授权一次,也就是重新打开二维码,用微信扫码登录。

我经常因为懒得扫码导致订阅不可用,所以想把这件事自动化掉。刚好家里有几台不用的旧手机,mac mini 也一直开着,就可以让电脑定时控制两台手机完成扫码。

这里没有用微信辅助服务,主要是担心触发微信风控。最后选择直接用 adb tap 模拟点击,流程更笨一点,但不需要在微信里开额外权限。

于是提需求给 Codex 搭了个项目,一次就出了基本能跑的版本。后面又对话调整了两三次,主要是补稳定性和文档。整个过程差不多两个多小时,用 AI 做这种小自动化确实很快。

项目地址:https://github.com/seewhyme/we-mp-auto-scan

整体方案

整个流程需要两台安卓设备:

  • 展示设备:打开 we-mp-rss 生成的登录二维码。
  • 扫码设备:打开微信扫一扫,对准展示设备上的二维码并确认登录。

电脑负责调度这两台设备。脚本先调用 WERSS API 获取登录二维码,再用 ADB 唤醒展示设备并打开二维码链接。二维码准备好之后,再唤醒扫码设备,打开微信扫一扫,点击确认。

这套方案不追求优雅,主要目标是稳定。两台手机的位置固定好之后,每次只要按同样的坐标点击就行。

踩到的坑

最开始有个问题比较迷惑:二维码链接一直返回 404。我一开始以为是 we-mp-rss 生成二维码慢,后来排查 header 才发现是 Cloudflare cache 的问题。

我用 Cloudflare Tunnel 做代理,二维码图片的响应被缓存了,导致脚本一直读到旧的 404。最后在 Cloudflare 里加规则,禁用二维码图片路径的缓存,问题就解决了。

另一个坑是手机位置。扫码设备和展示设备只要角度偏一点,就可能扫不到码。所以最后我把两台手机固定在支架上,脚本里也给关键步骤留了更长的等待时间。

运行情况

这套方案已经跑了 4 个多月,整体还算稳定。中间失败过三四次,主要原因都是不小心移动了手机位置,导致扫码设备对不准二维码。

只要设备位置固定,微信保持登录,mac mini 和两台手机都在线,基本不用管。失败时看 pm2 logs 也比较容易判断卡在哪一步。

硬件与环境准备

  • 一台常开的电脑或服务器,我这里用的是 mac mini。
  • Android SDK Platform Tools,保证 adb 能直接执行。
  • 两台安卓设备,一台展示二维码,一台登录微信负责扫码。
  • 一个能固定两台设备角度的支架。
  • 稳定的局域网连接。

落地步骤

  1. 克隆项目并安装依赖:npm install
  2. 复制 .env.example.env,填入 API 地址、账号密码、设备序列号及按钮坐标。
  3. npm run build 编译 TypeScript,生成 dist/index.js
  4. 手动运行 npm start 验证流程是否通畅,必要时调整坐标或解锁手势。
  5. 部署 PM2 计划任务:
    bash
    npm run build
    pm2 start ecosystem.config.js
  6. 通过 pm2 logs we-mp-auto-scan 观察第一次执行是否按预期完成。
用 Debian 搭建家庭服务器:透明代理、去广告和自建服务
Valaxy v0.28.10 驱动|主题-Yunv0.28.10