app爬虫环境搭建 fiddler+mitmproxy+uiautomatorviewer+weditor+uiautomator2 亲测有效!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43256057/article/details/99128990

fiddler和mitmproxy抓包工具的应用场景:fiddler可以在linux和windows都能使用,只是我的windows版本更丰富好用。
mitmproxy在linux可使用全部:mitmdump和mitmweb以及mitmproxy,在windows只能使用其中的mitmdump和mitmweb。都要安装python3.6及以上的解释器,可参考 https://mp.csdn.net/mdeditor/94055022#

连接真手机/手机模拟器成功的操作:
下载并安装夜神模拟器以及fiddler。
夜神模拟器设置:
1、先安装最新版本的夜神模拟器(我的是6.3.0.6),否则版本稍微低都不能安装证书,血的教训(说不定有些人低版本的也可以)。
2、进入夜神模拟器系统设置——属性设置–勾选网络桥接模式(它默认是DHCP)–点击旁边的驱动安装字眼,安装桥接驱动(有的话)(我忽略了这步导致抓不到https)——在弹出的提示框点击重启。真手机不需要做这第2步就能自动桥接。
3、重启后点击安卓里面的系统设置——WLAN——连上和电脑相同的WiFi——快速点1次或多次wifi栏后在弹出框中选择修改网络——勾选高级——选项:手动——代理服务器主机名填写抓包工具所在系统的IP地址(fiddler在windows/linux中就填windows/linux的IP),代理服务器端口填和fiddler/mitmproxy一致的端口号。
4、在浏览器搜索框输入fiddler所在系统的IP:fiddler的端口号 。冒号是英文的!在弹出的页面中点击download fiddler certificate 的字样下载fiddler证书并为此自定义名字,有了该证书后访问网页就不会再弹出警告信息了。
此时把fiddler也设置后已经可以抓取网页和APP的http包。但要抓HTTPS还需执行第5、6步。真手机(不知为何360手机没xposed+justTrustMe也能抓https)不需要。

5、 到网上下载de.robv.android.xposed.installer_v33_36570c.apk 并拖入夜神模拟器安装,点进去选中框架,点击安装更新,需要权限什么的一律点是。
6、下载attachment; filename=JustTrustMe.apk 也安装进模拟器,后点击xposed,选中模块,勾选JustTrustMe,重启夜神模拟器。

fiddler抓app设置:
1、设置fiddler的app抓包:
Tools——Options——HTTPS——勾选 decrypt HTTPS traffic——下来框选 from remote client only(这是抓app数据的选择,如果是抓网页的就选from browsers only)

2、Tools——Options——connections——Fiddler listens on port 框里填写你想要的端口号,我填的是8889. 勾选 Allow remote computers to connect。
点击保存就设置完毕了。

tips:通常fiddler设置改变后要重启fiddler才能让夜神模拟器的浏览器访问网页。

3、linux 的mitmproxy设置:只要安装好mitmproxy(查看是否安装成功可在终端输入:mitmproxy --version),终端输入命令 mitmproxy (默认端口号8080)或者 mitmproxy -p 自定义端口号 即可。

在夜神模拟器里访问网页,如果mitmproxy出数据包就代表成功了,但是为防止每次抓包都弹框,所以在夜神浏览器里输入:http://mitm.it/ 在弹出的页面中点击Android图标下载mitmproxy证书,点击系统左上角的下载,找到该证书并为此自定义名字。随后可轻松访问网页并抓包。

查看证书途径:安卓的系统设置——安全——信任凭据——用户

如果全部步骤都走完还不能抓取数据可以考虑电脑关机重启或者夜神模拟器——系统设置——常用设置——恢复默认设置,随后就能用mitmproxy抓取数据了(有可能是因为端口号被占用了,所以无法抓取数据),我就是这样,要逐个尝试,亲测有效!

tips:每次关电脑前先关掉你打开的所有应用,这样能确保不容易丢数据和减少系统垃圾。

扫描二维码关注公众号,回复: 7659933 查看本文章

uiautomatorviewer.bat的应用场景:可做app方面的UI(功能)测试:把app界面截图下来,点击各个应用从而可像网页检查那样查看元素内容,但在这里要做一个升级,才能有xpath等高级功能,从而提供做爬虫用。
uiautomatorviewer升级步骤(是在https://blog.csdn.net/dandan_yang/article/details/80485551基础上做详细解析。uiautomatorviewer不稳定,想要稳定的看更下面安装uiautomator2 ):
1、下载github上开源jar包 :https://github.com/lazytestteam/lazyuiautomatorviewer
(下载的包通常要改名字后缀为zip才能解压,解压后的包我称它为master,AndroidSdk是我给之前安装的SDK包起的名字)
2、把master的lazyuiautomatorviewer-master下的uiautomatorviewer.jar复制替换AndroidSdk\tools\lib下的同名包。
3、把master\lazyuiautomatorviewer-master\lib下的所有.jar包复制替换到AndroidSdk\tools\lib下。
4、把master\lazyuiautomatorviewer-master的com和images文件夹复制到AndroidSdk\tools下。(最后这一步,尤其是复制images的必要性我是存疑的,你们可尝试一下,留言给我哈。)

重新打开uiautomatorviewer.bat即可看到变化。
可看到右下角该框多了xpath等工具栏
可看到右下角该框多了xpath等工具栏

uiautomator 定位元素失败原因及解决办法: 原因1:端口占用。通常是因为和appium冲突了,把appium关闭并打开UI automator 即可使用。 原因2:不是端口占用而是纯粹抓不了某些APP的元素。(即使关闭占用端口62001的进程(adb以及夜神模拟器)也没用)
uiautomator 老是报错、很难搞怎么办?其实这个工具本来就不稳定。很容易和其他工具发生冲突,从而用不了。建议使用weditor,只需要解释器在Python3.5以上就可以 在终端输入:pip install webditor 来安装。
python升级问题:https://mp.csdn.net/mdeditor/100176077

APP定位元素的工具及环境搭建问题及解决办法:

网上很多文章很垃圾,我从中选了2篇比较靠谱的参考文章如下:
https://blog.csdn.net/qq_41664526/article/details/81102832
https://www.cnblogs.com/fnng/p/8486863.html

不看也没事,跟着我简单操作即可。
要定位元素就要安装weditor以及uiautomator2(uiautomator2和SDK的uiautomatorviewer是2回事啊)
终端输入 pip install webditor
安装完后再 1,输入 python -m weditor 即可打开

但是这时还未必能连上,需要安装uiautomator2

终端输入:pip3 install -U uiautomator2
(可能需要打开一个夜神模拟器,用adb连接到模拟器:2,终端输入adb connect 127.0.0.1:62001 我的是夜神模拟器才输入127.0.0.1:62001,随后输入adb devices 检查是否连上)

安装完后输入 python3 -m uiautomator2 init
就可在安卓模拟器/手机上看到 ATX的app,若报错:‘python3’ 不是内部或外部命令,也不是可运行的程序(我环境变量里没设置python3来指定python3.5解释器,所以输入python即可)。就输入 python -m uiautomator2 init 注意:若打开多台模拟器可能要在python -m uiautomator2 init 后加上该模拟器的ip,往里面安装ATX app。

模仿下面的操作,如果出现最后面的字典类型就说明成功安装uiautomator2了。
3,

C:\Users\hp>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import uiautomator2 as u2
>>> d = u2.connect()
>>> print(d.info)
{'currentPackageName': 'com.vphone.launcher', 'displayHeight': 1600, 'displayRotation': 0, 'displaySizeDpX': 450, 'displaySizeDpY': 800, 'displayWidth': 900, 'productName': 'R11', 'screenOn': True, 'sdkInt': 22, 'naturalOrientation': True}

在输入 python -m weditor 打开的weditor网页里下拉框选择Android,旁边的可以空着,因为有adb连接着,它就知道要连接哪个设备。直接点击connect按钮,过一会就可看见安卓模拟器里的界面,停住播放的页面,点击Dump Hierarchy就可获取APP新的界面。相信对iOS设备操作也类似吧。其余的操作和uiautomatorviewer类似。觉得管用就点赞哈,有问题可提。

注意:以后使用都需要执行上面标记的1-3步,然后在weditor点Connect,第三步是为了以 d = u2.connect()启动uiautomator2 ,可能APP上也能点启动选项来启动。点击这里的截图页面是可以控制安卓APP的,多点几次能刷新页面,需要半-1分钟等待时间。

在这里插入图片描述

做脚本驱动appium检查: 1、check for adb devices?2、open appnium-desktop? 3、webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  IP:prot right?
截图APP检查:1、开启了uiautomator2?2、关闭了appnium-desktop?

猜你喜欢

转载自blog.csdn.net/weixin_43256057/article/details/99128990