环境配置:
windows上安装Android sdk(为了使用adb命令调试,使用uiautomatorviewer进行自动化元素位置获取),
安装Python3环境,安装mitmproxy:pip install mitmproxy
windows上安装夜神模拟器(使用Android 7的,Android 4 和Android 5的有些app不支持,有必要的时候还需要安装xposed框架解决sslpining的问题),配置开启root,开启网络桥接模式,开启开发模式,开启usb调试
然后模拟器安装证书,参考:https://www.cnblogs.com/sheajin/p/11075713.html
安装好后模拟器设置代理,windows命令行下输入:mitmweb -p 8889,如果8889没有被占用却出现了如下问题:
Traceback (most recent call last): File "d:\dev\anaconda3\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "d:\dev\anaconda3\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "d:\dev\Anaconda3\Scripts\mitmweb.exe\__main__.py", line 9, in <module> File "d:\dev\anaconda3\lib\site-packages\mitmproxy\tools\_main.py", line 174, in mitmweb run(web.master.WebMaster, cmdline.mitmweb, args) File "d:\dev\anaconda3\lib\site-packages\mitmproxy\tools\_main.py", line 133, in run master.run() File "d:\dev\anaconda3\lib\site-packages\mitmproxy\tools\web\master.py", line 110, in run http_server.listen(self.options.web_port, self.options.web_iface) File "d:\dev\anaconda3\lib\site-packages\tornado\tcpserver.py", line 143, in listen sockets = bind_sockets(port, address=address) File "d:\dev\anaconda3\lib\site-packages\tornado\netutil.py", line 168, in bind_sockets sock.bind(sockaddr) OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
说明mitmproxy 默认的webui的端口(8081)被占用,用命令改下webui端口 mitmweb --web-port 8888 -p 8889,这样就可以启动成功了
然后启动app,这样就可以抓到https的包了
通过mitmweb可以进行辅助分析包,也可以安装charles证书(安装过程同mitmproxy安装过程),使用charles这个抓包工具来辅助分析包
分析包后,然后指定Python脚本,mitmdump -s target.py -p 8889,就可以抓到包入库了
appium自动化注意点:
1.在文章列表爬取的时候,注意使用递归,因为每次点击(click)进入一个文章后,再次back回来的时候,元素会可能有些偏差
2.每次获取元素标签的时候,都要设置wait.until
3.最好获取文章标题元素节点,这样点击不会有误差,不会有纰漏