之前一直是解析自己的包,并且是基于java 和 kotlin开发,RN之类的跨端技术虽有涉猎,但是不够深入,这次正好要爬取一个APP的部分数据,出现了诸多之前没遇到的问题,这里进行记录。
坑,最开始使用Genymotion获取,发现APP包无法启动,后续通过logcat发现是flutter so库问题,然后就通过雷电模拟器进行解密
DAY 1
Fiddler + Android 网络手动设置代理。
安装证书以后,能够获取到http和https数据,但是没有发现我想要得到的数据,清空请求列表同时APP请求数据,发现能够正常获取数据,但是fiddler没有获取到数据。
查询APP包内容,发现是flutter技术架构,因为flutter默认不会使用系统代理,所以即使在系统层做了代理,但是APP本身的网络请求是不会使用系统代理配置。
随意百度个参考
DAY 2
- drony 转发
- wireshark 拦截网卡,获取数据
drony
drony 是 APP网络转发工具,支持 http https socket等转发,网上配置教程太多,随便找一个
配置以后发现能够拦截到数据包,但是全部失败(当时还不知道可以查看fiddler的log日志),并且APP上提示应用请求失败,估计是验证不通过。
wireshark 拦截数据包
我承认这里我2了,https数据解析成本有点高
通过看fiddler拦截的数据,只能够知道域名,但是不知道具体请求的数据,获取ip以后,在网卡筛选出增加 ip.dst=搜索到的ip
, 可以看到拦截数据和应用数据,但是加密过,解析成本过高(没解析过)
DAY 3
一直在折腾Drony是不是配置问题,浪费了很多时间,尝试了实体机 和 虚拟机都一个结果,最后猜测应该就是证书问题。百度之后,Android 7.1 以后部分 APP 不信任
用户级别证书
,需要升级到系统级别凭证才行。
so,fiddler 证书 升级为系统证书,随意搜教程地址
可能会出现:-(
- openssl 没安装问题
自行安装
- 提取hash 报错问题
删除head -1
把自己生成的证书文件 和 系统证书目录里面的证书文件内容格式比较一下,是否一致。
DAY4
安装证书以后发现数据请求还是错误,查看自己的证书文件格式和 系统证书目录下的文件的整数格式不对,自己重新生成一遍
安装以后,请求数据,发现依然失败,卡壳了,然后发现fiddler 可以查询log日志,发现提示身份验证失败
猜测应该是证书没生效,重启虚拟机以后,发现https可以请求成功并且解密,但是有部分依然失败,百度以后猜测是 协议的问题,默认fiddler 协议只有 tls1.0,在 工具-> 选项 -> https -> 协议
增加tls1.1 tls1.2 以后,重启fiddler,发现全部无法解析,提示身份验证失败。
重启APP以后访问发现全部正常而且可以全部解析,但是过一段时间以后,不重启APP的情况下请求发现全部会验证失败,这里的疑问暂时保留,后续有精力研究研究