我终于通过Charles 成功抓取到想要的数据包啦!
前言:
前后差不多花费了我1周多的时间,以为很简单,然而却浪费了这么多时间在无用功上,下面就分享我在抓包过程中碰到的问题与最终的解决方案.
选用的工具库:
用过fiddler,说实话,用不习惯,也能正常抓到包,但是用的很难受,放弃了,当然用flddler也是能够抓取到数据的.
还用过谷歌的插件抓包,具体叫啥名忘记了,也能正常抓到网页的数据源,但是网页的我为什么不用f12呢,这不是更直接吗?
后面又换成了charles,毕竟的商业的,果然还是有点档次的,界面很清晰,果断放弃了其它抓包工具,全删了!
成功抓包的流程,基本上是按照这篇文章进行的:
zhuanlan.zhihu.com/p/473750804
我这次要抓包的app就不公开了,毕竟可能会涉及到版权啥的,就说过程中碰到的问题:
问题1: 用真机还是模拟器
开始用的真机,但是到后面发现要给真机root,不得已换成了模拟器.
问题2:ssl pinning
后面又看到了TLS 双向认证,以为是这个问题,于是又照着网上的教程走了一遍,然而并没什么卵用,应该是我要爬取的app根本没用到这个双向认证吧. 当然如果以后碰到需要用到自己证书的app也算是有经验了吧.
问题3: 抓包过程中虽然配置了证书,但是使用手机自带的浏览器访问页面时,还是会弹出安全警告! 在app中,依然无法抓包,我目标的app更奇怪,只有第一屏页面可以正常展示,但是到内页就不行了,无法抓包,在charles上显示的是unknown.
为什么会出现这个安全警告,其实就是因为证书没有配置对,但是我明明在手机上下载了charles上的证书,并成功安装了.. 后面经过排查是因为在android7之后便升级了安全保障,很多app上是不信任用户自己安装的证书的,导致一直弹出安全警告
问题4: 浏览器无法下载charles上的证书
我用的是小米手机,在使用charles过来中,要想抓取https的数据包的时候,必须得安装charles上的证书,首页是在电脑上安装,电脑上安装简单,我用的mac,只需要信任就可以了.. 手机上也差不多,到设置里找到CA证书安装,直接安装上便可以,但是我用的小米浏览器去访问charles/ssl网址的时候,却打不开....后面下载了UC浏览器才成功下载..
问题5: 安装adb
因为涉及到把文件复制到手机中,但是又不想安装android studio这个大工具,所以就想着只安装adb,这里也花费了我较多的时间,安装adb用的brew,这里又花费了一些时间..
另附charles注册码:
Registered Name: zhile.io License
Key: 48891cf209c6d32bf4