微信群拉人很累?学会这 6 种自动化方案后,轻松乐无忧!

  • 2020 年 3 月 18 日
  • 筆記

微信是世界上体量最大的超级 APP 之一,拥有数以十亿计的用户,每天都有许许多多的人在微信上进行聊天、沟通、推广、卖货……覆盖了社交辐射的方方面面。

自动化这事呢,也从来都不稀奇,从 PC 端、浏览器到手机端,从按键精灵到 xposed,自动化技术经过一次又一次的变革。

为什么我们需要微信自动化呢?试想一下,如果你是一位专职运营人员,每天面对数百上千个微信群、好友、订阅号和朋友圈进行操作、拉人、推广,是不是要疯?而拥有了自动化技术这一切就不一样了,自动收发消息、自动将群成员添加为好友、自动发朋友圈、自动采集公众号文章…

解放人力、提高效率,这就是自动化要做的事。

那下面我们就总结一下微信(理论上不止微信适用哦)的一些自动化方案:

1、通过模拟 http 请求

原理是实现网页版微信的请求,模拟网页微信的请求。也就是说只要网页版微信有的功能,你都可以有。

为什么不是模拟桌面或移动端微信呢?因为正常实现下,桌面客户端应该是跟微信加密通信的。

比如 gayhub 上我们可以找到很多基于此方案的开源项目:

https://github.com/littlecodersh/ItChat

https://github.com/youfou/wxpy

https://github.com/liuwons/wxBot

https://github.com/zixia/wechaty

https://github.com/sjdy521/Mojo-Weixin

https://github.com/hanson/vbot

https://github.com/yaphone/itchat4j

https://github.com/kanjielu/jeeves

https://github.com/Urinx/WeixinBot

有 python 的,也有 java、js 的,还有 php 的,大家需要的话可以去 Github 上多搜一搜。

可惜的是,现在好多账号不能使用网页版了,据说是微信在慢慢的关闭网页版的接口……还是要寻求其他方案。

2、通过网页自动化工具

原理通过 web 自动化工具去操作网页版微信实现。

一般可以通过 Chrome 或者 Webkit 周边的自动化技术实现,比如使用 PhantomJS、electron、Puppeteer 等基于 webkit 的无头(headless)浏览器的 JS 库,也可以直接用Selenium,还有基于 Mozilla 的 XPCOM 的。基于浏览器插件、油猴脚本应该也能实现一些简单操作。

简单介绍下名气最大的 Selenium:

Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera 等。

和上面方案有同样的缺点,受限于账号是否能登录网页版微信。

3、通过 App 自动化工具

类似 web 自动化工具,app 自动化工具也有很多,名气最大的当属 Appium 了吧。它继承了 webdriver(也就是 selenium 2)。

这里有一段介绍:

Appium 是开源的移动端自动化测试框架:

  • 支持 Native App、Hybird App、Web App;
  • 支持 Android、iOS、Firefox OS;
  • 跨平台,可以在 Mac,Windows 以及 Linux 系统上;
  • 用 Appium 自动化测试不需要重新编译 App;
  • 支持 Java、python、ruby、C#、Objective C、PHP 等主流语言;

除了 appium 还有很多,比如 Airtest,网易还是有不少良心软件的,放个图感受一下:

其余还有 uiautomator2、Calabash、Robotium、UIAutomator、XCTest、Frank 等等,我们选择的时候挑选符合自己需求的就好。

4、通过 Windows 自动化

比如 pywinauto,已经封装了 python 包就问爽不爽。windows的自动化方案也有很多,这里就不展开了,因为用的比较少,也就做自动化交易的时候用过pywinauto,其他方案大家可自行去了解。

PC 端大部分常见的还是 hook 的形式,hook 下面说。

5、通过 Android 的辅助服务

辅助服务(AccessibilityService)本来是为了帮助残障人使用安卓设备,熟悉 Android 开发同学应该知道。

它以服务的形式在后台运行,当页面切换、焦点改变、收到通知、弹出 Toast 等,系统会回调 onAccessibilityEvent 方法,还可以模拟输入、点击等,这样你就可以干自己想干的事情了。

无需 Root,但不支持 WebView加载的页面,且每次运行你的 apk 都需要手动打开辅助功能。

代码很简单,可以参考 Google 或官方文档。

6、通过 Hook

Hook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自己的代码与系统方法进行融合。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。

各操作系统各平台有不同的实现,移动端名气最大的当属 Xposed 了,另外还有 Legend、VirtualXposed 等一些免 Root Hook 框架。

Xposed 框架(Xposed Framework)是一套开源的、在 Android 高权限模式下运行的框架服务,可以在不修改 APK 文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。Xposed 并不支持 Android 9 以上版本,但可经由 EdXposed 代替。

PC 端貌似更难一些,需要深厚的逆向功底,熟练使用 CE、OD 等工具。

通过 Hook,我们真的可以为所欲为:)

总结

如上面微信自动化方案所说,任何一个 app 要实现外挂方式的自动化操作,都要基于三点下手:

  1. 通信协议 一般是 Http 或 Https,抓包实现,没有加密的更好
  2. 客户端 UI 自动化 根据不同平台、系统去选择。比如浏览器下的 Selenium,Andorid/iOS 下的 Appium……
  3. HOOK 也需要根据不同平台、系统去选择。

如果需求比较简单,Android 的辅助服务(AccessibilityService)能满足的,就选择此方案。原因无他,最稳定。

本文转载自:「优雅的程序员呀」,原文:https://url.cn/5AWHoO7,版权归原作者所有。