爬取安卓 APP 的内容第一步总离不开抓包.
1. 抓包软件的准备
这里我用的是 fiddler 软件进行抓包,这个软件的配置我以前也说过了,如果还没有看过的,可以来看看抓包软件 Fiddler 了解一下?这里我需要抓的是手机 APP 的包,就只需要把这两个勾选即可。
这里在勾选的过程中还需要安装个证书,选择安装即可,如果没有安装也可以点击第一张图的右上角的 actions 进行安装
现在电脑端的准备好了。
手机端的我们还需要连接电脑上的 wifi,或者与电脑连接同一个 wifi 即可,点击 wifi 的高级设置,设置代理,代理服务器为电脑端的 ip 地址,端口就是 fiddler 上面设置的端口,我这里使用的是默认端口 8888。
接下来就是开始抓包了。
2. 进行抓取以及解决
我这里测试抓包的是使用小红书软件进行抓取。
这里看到只能抓取 http的,对于 https 的都抓取不了,都是 Tunnel to。对于这个我们首先怀疑手机是不是没有安装好 fiddler 证书,可以先去浏览器看看,能不能抓到百度的请求。
所以在手机浏览器打开百度的首页,抓到的包如下。
看到果然是 https 的包都抓不了,应该是证书没安装好,手机安装证书之只需要在浏览器上输入地址:ip:端口,ip就是你的电脑的 ip,端口就是 fiddler 设置的端口,我这里的就是 10.xxxx.xx.xx:8888。
这里点击箭头处下载证书进行安装即可,如果你的手机是 miui 系统的,需要到 wifi 设置 -> 高级设置 -> 安装证书 -> 选择刚才下载的证书安装即可。这里不建议使用 miui 系统的手机进行抓包,坑太多,安卓版本过高的话即使安装了证书也没用。
安装好证书之后就可以正常抓取 百度首页的包了。
注意:如果你是在校的学生,需要使用一些软件,比如猎豹 wifi 或者 wifi 共享大师 来开启电脑 wifi 以供手机连接的话,抓不到 https 的包也和这个有关系,我这里的校园网就有这个问题,为了抓个包我下载了三个软件来开 wifi,最后能正常抓取的只有 360免费wifi 开启的 wifi 才能正常抓取。我只想说抓个包容易吗?还有不同的校园网可能检测 wifi 软件的机制不一样,所以当你什么都准备好了,还是抓不了包的话,可以更换下 wifi 软件,说不定有惊喜。
证书安装好了,继续打开小红书看看能不能抓包。结果还是不行
这个因为我的手机是安卓系统 7.0 以上的,里面有个 ssl pinning,这个东西是对客户端的证书进行验证,如果遇到不信任的证书,就会断开连接,不继续请求。如果还是不懂的话可以看看这两个链接:https://zhuanlan.zhihu.com/p/56397466
https://github.com/WooyunDota/DroidDrops/blob/6b3008bd409d539775b627ab49580035d8524eb0/2018/SSL.Pinning.Practice.md
这里我也是参考上面第一个连接的做法,就是安装 xposed + justtrustme,当然安装这个的前提需要你的手机有 root 才行,如果没有话,推荐你使用 virtualXposed + justtrustme,这两个也行。
我的手机是有 root 的,但是用了第一个的方案之后还是抓不了包,情况还是和前面一样,所以我改用了第二种方案,这里见到那说下 virtualXposed 的用法。
下载地址:https://github.com/android-hacker/VirtualXposed
插件下载:https://github.com/Fuzion24/JustTrustMe
两个软件都进行安装之后,打开 virtualXposed ,我们就需要在这个软件添加我们安装的 justtrustme 模块和小红书软件。
这样我们就添加我们需要的应用了,我们还需要开启这个应用。
这个打上钩,再重启下软件,点这里重启即可
再在 virtualXposed 上面打开小红书软件,再看 fiddler,包都有了。
看着这里好像挺容易的,其实我之前怎么抓都抓不到,上面的方法都试过了还是不行,不知道为啥今天复原就可以了,真的很奇怪,这是不是当时的很心态问题?不懂不懂。
如果使用上面的 justtrustme 模块还是抓不到的话,我们还可以使用 sslpinning 这个模块,下载地址:https://github.com/ac-pm/SSLUnpinning_Xposed
这个也是需要先添加模块到 virtualxposed 上,再在模块管理上面打个钩,然后重启下软件即可,不过还需要打个 unpinning
这里直接在所需要抓包的软件上点一下就会出现这个,就可以跳过 sslpinning 的检测了,这软件是 辰溪大佬推荐的,也挺不错的,在这里再次感谢他指导我,要不我都放弃了。
相关的效果就不多说了,还是一样能抓到包。
我想了想下之前折腾了这么久都抓不到包,我是卡在了 xposed 这个软件上,死都要使用这个框架,导致我 root 了什么都做了,还是抓不了,估计是这个框架的问题或者是我的手机有问题,我换了个不需要 root 的virtualxposed 就可以抓到包,有时候嘛,还是不要钻牛角尖,换个东西马上就能好的东西,干嘛还要死活往一个地方钻,当时能想到换一个框架该多好。
3. 手机抓包的总结
抓不了手机上的 https 的包,可以在下面三个地方入手:
手机或者电脑的证书没安装好,去安装即可
软件加入了 sslpinning 检测,需要绕过,使用 JustTrustMe 或 sslUnPinning 即可
校园网开 wifi 的问题,一般只有学生党有这种问题,换个软件试试即可
以上都解决不了的,可以看看这个大佬写的,https://zhuanlan.zhihu.com/p/63028507,同时也推荐关注下这个专栏,专栏挺不错的,还有人也不错。