开发环境:ubuntu
相关工具:python、mitmproxy、appium、adb、安卓手机一台
项目逻辑:利用自动化测试工具appium控制手机刷抖音,同时开启mitmdump拦截手机端的所有请求信息,开启mitmproxy事件监听,当监听到需要的请求时,解析response。
下面就讲讲具体如何实现:
1、安装相关工具,网上很多教程,可以自行百度。
2、手机开启代理并安装ca证书
先确保手机跟pc在同一网络,然后打开手机wifi,修改网络
设置好代理之后安装ca证书,打开终端输入命令 cd ~/.mitmproxy
双击mitmproxy-ca-cert.pem 设为受信用证书,然后使用adb工具把证书发送到手机sd卡,adb push mitmproxy-ca-cert.pem ./sdcard (要在证书目录下执行此命令),手机端找到证书并安装。
3、开启appium服务,编写自动化控制脚本。
打开appium客户端,点start server
然后编写自动化控制脚本
STARTUP_CAPS 需要修改的地方appPackage、appActivity、platformVersion、deviceName,终端输入命令 adb shell dumpsys activity top 可查看appPackage、appActivity,手机>设置>关于本机可以查看platformVersion 系统版本,adb devices 查看deviceName。
4、mitmproxy脚本,开启事件监听
1、下载镜像 docker pull mitmproxy/mitmproxy 2、启动 a、mitmproxy启动b docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy b、mitmdump启动 docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmdump c、mitmweb启动 docker run --rm -it -p 8080:8080 -p 0.0.0.0:8081:8081 mitmproxy/mitmproxy mitmweb
新建search.py文件,
当手机端触发相应的事件,pc端就会调用对应的方法。
新建addons.py文件
执行命令 mitmdump -s addons.py 开启事件监听。
5、运行我们前面写好的自动化控制脚本,就可以爬取数据了。
可能会遇到的问题:
mitmdump运行时可能会报错
Error starting proxy server: OSError(48, ‘Address already in use’)
端口被占用,lsof -i:8080 查看占有端口的进程,杀死,然后重新运行脚本。
安卓6.0以上的手机设置代理后会出现无法上网的情况,这是证书问题,建议使用安卓4.4。