微信机器人技术总结

本文简单从原因,技术原理,稳定性三个角度总结一下微信机器人技术。如有遗漏,欢迎补充。

定义

本文的微信机器人是指:用程序手段驱动个人微信号实现自动发送微信消息,邀请好友,发朋友圈等功能。

原因

使用微信机器人的原因:

  1. 微信开放接口限制多,功能少。
  2. 省钱(微信开发者要缴年费)
  3. 要做一些腾讯协议不允许的事(黑产)

技术原理

微信机器人技术大概有这几类:

  1. 用Selenium等技术驱动浏览器登录Web微信,并执行自动操作。
  2. 用各种编程语言实现Web微信协议
  3. 逆向微信客户端代码增加功能重新打包。
  4. 使用Xposed等框架在手机系统层面修改微信客户端行为,实现特定功能。
  5. 分析微信通讯协议并重新实现一个第三方客户端。
1. Selenium驱动浏览器登录Web微信

Selenium驱动浏览器的原理,使这种方式相当于微信官方实现的机器人。

特点:

  1. 需要手机扫码协助登录
  2. 实现简单,无技术门槛。
  3. 只能回复消息,拉群,爬公众号,不能发朋友圈。
  4. 不稳定,个人测试最长一个月会掉线一次。
2. 编程语言实现Web微信协议

特点:

  1. 需要手机扫码协助登录。
  2. 实现简单,Web微信为明文协议,分析比较容易,而且网上有开源实现。
  3. 只能回复微信消息,拉群,爬公众号,不能发朋友圈。
  4. 比Selenium方式更不稳定。
    测试了JAVA版本,登录几个小时后就掉线了。当然测试时间比较久了,可能软件有更新,也不能代表其他语言版本的稳定性。
3. 逆向微信客户端代码增加功能重新打包

特点:

  1. 无需手机扫码登录。
  2. 实现难度相对较高,需要逆向知识。
  3. 属于恶意使用,有被腾讯封号的风险。
  4. 能实现回复微信消息,发朋友圈等各种功能。
4. Xposed

Xposed的原理是在不修改App代码的情况下,Hook各种系统函数或内部函数调用实现修改App功能。
因此这种方式除了是否属于腾讯定义的恶意使用,其他和逆向重新打包方式类似。

特点:

  1. 无需手机扫码登录。
  2. 实现难度相对较高,需要逆向知识。
  3. 可能会被腾讯认为恶意使用,有被封号的危险。
  4. 能实现回复微信消息,发朋友圈等各种功能。
5. 分析微信通讯协议并重新实现一个第三方客户端

微信通讯有长连接短连接两种形式,分别用于消息收发和一些控制消息。

其中长连接协议是一个TLS1.3变种。

这种方式难度最大,用于实现微信机器人这样的功能太浪费。

欢迎关注知乎专栏一个人的云计算