微信是世界上体量最大的超级 APP 之一,拥有数以十亿计的用户,每天都有许许多多的人在微信上进行聊天、沟通、推广、卖货……覆盖了社交辐射的方方面面。
自动化这事呢,也从来都不稀奇,从 PC 端、浏览器到手机端,从按键精灵到 xposed,自动化技术经过一次又一次的变革。
为什么我们需要微信自动化呢?试想一下,如果你是一位专职运营人员,每天面对数百上千个微信群、好友、订阅号和朋友圈进行操作、拉人、推广,是不是要疯?而拥有了自动化技术这一切就不一样了,自动收发消息、自动将群成员添加为好友、自动发朋友圈、自动采集公众号文章...
解放人力、提高效率,这就是自动化要做的事。
那下面我们就总结一下微信(理论上不止微信适用哦)的一些自动化方案:
原理是实现网页版微信的请求,模拟网页微信的请求。也就是说只要网页版微信有的功能,你都可以有。
为什么不是模拟桌面或移动端微信呢?因为正常实现下,桌面客户端应该是跟微信加密通信的。
比如 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 上多搜一搜。
可惜的是,现在好多账号不能使用网页版了,据说是微信在慢慢的关闭网页版的接口……还是要寻求其他方案。
原理通过 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 等。
和上面方案有同样的缺点,受限于账号是否能登录网页版微信。
类似 web 自动化工具,app 自动化工具也有很多,名气最大的当属 Appium 了吧。它继承了 webdriver(也就是 selenium 2)。
这里有一段介绍:
Appium 是开源的移动端自动化测试框架:
除了 appium 还有很多,比如 Airtest,网易还是有不少良心软件的,放个图感受一下:
其余还有 uiautomator2、Calabash、Robotium、UIAutomator、XCTest、Frank 等等,我们选择的时候挑选符合自己需求的就好。
比如 pywinauto,已经封装了 python 包就问爽不爽。windows的自动化方案也有很多,这里就不展开了,因为用的比较少,也就做自动化交易的时候用过pywinauto,其他方案大家可自行去了解。
PC 端大部分常见的还是 hook 的形式,hook 下面说。
辅助服务(AccessibilityService)本来是为了帮助残障人使用安卓设备,熟悉 Android 开发同学应该知道。
它以服务的形式在后台运行,当页面切换、焦点改变、收到通知、弹出 Toast 等,系统会回调 onAccessibilityEvent 方法,还可以模拟输入、点击等,这样你就可以干自己想干的事情了。
无需 Root,但不支持 WebView加载的页面,且每次运行你的 apk 都需要手动打开辅助功能。
代码很简单,可以参考 Google 或官方文档。
Hook 又叫“钩子”,它可以在事件传送的过程中截获并监控事件的传输,将自己的代码与系统方法进行融合。这样当这些方法被调用时,也就可以执行我们自己的代码,这也是面向切面编程的思想(AOP)。
各操作系统各平台有不同的实现,移动端名气最大的当属 Xposed 了,另外还有 Legend、VirtualXposed 等一些免 Root Hook 框架。
Xposed 框架(Xposed Framework)是一套开源的、在 Android 高权限模式下运行的框架服务,可以在不修改 APK 文件的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。Xposed 并不支持 Android 9 以上版本,但可经由 EdXposed 代替。
PC 端貌似更难一些,需要深厚的逆向功底,熟练使用 CE、OD 等工具。
通过 Hook,我们真的可以为所欲为:)
总结
如上面微信自动化方案所说,任何一个 app 要实现外挂方式的自动化操作,都要基于三点下手:
如果需求比较简单,Android 的辅助服务(AccessibilityService)能满足的,就选择此方案。原因无他,最稳定。
本文转载自:「优雅的程序员呀」,原文:https://url.cn/5AWHoO7,版权归原作者所有。