如何解决Fiddler抓手机app数据包时候遇到的证书问题

使用Fiddler抓手机app数据包的时候遇到的了证书问题,导致使用Fiddler抓包的时候,手机app无法正常接受数据。

网上很多方法都无法解决。最终发现大神文章才解决了这个问题。

一.环境 

操作系统:win10 

抓包工具:Fiddler 4

移动端:某模拟器

二.错误过程

2.1配置Fiddler

fiddler-> tools-> Fiddler Options

点击Fiddler Options对话框的HTTPS,勾选j箭头标记的选项,进行设置允许别的机器把HTTP/HTTPS请求发送到Fiddler上来

如何解决Fiddler抓手机app数据包时候遇到的证书问题_第1张图片


点击Fiddler Options对话框的Connections选项,设置端口号以及箭头标记选项。


如何解决Fiddler抓手机app数据包时候遇到的证书问题_第2张图片

2.2配置手机

使用手机链接pc端热点。并将手机的代理设置成,ip:127.0.0.1,port:8080

2.3错误内容

这时候理论上就可以抓到手机app的数据包了,但是报了很多443,感觉应该是证书问题。

三.解决方法

3.1使用Xposed拦截系统的证书校验功能,这个网上有大神给出了hook模块代码,可以去github上搜JustTrustMe项目代码即可,就一个简单类,导入Xposed中自己编译即可:

    ①在移动端下载安装 JustTrustMe & xposedinstaller 之后重启移动端。。成功解决。。。。

    有兴趣的同学可以去git上查看项目:

    ②注意物理机上安装xposedinstaller 需要root,所以我直接使用的安卓模拟器,但是安卓模拟器可能因为版本问题不支持xposed

    我使用的安卓版本如下:

    如何解决Fiddler抓手机app数据包时候遇到的证书问题_第3张图片

    安装成功后效果如下:

    

如何解决Fiddler抓手机app数据包时候遇到的证书问题_第4张图片

如何解决Fiddler抓手机app数据包时候遇到的证书问题_第5张图片

    ③写爬虫代码的时候还发现一个问题,使用requests库组建请求的时候:

    requests.post(url,headers = heasers,data=data,virfy=False)

    requests传入报文的参数有两个,一个是data,一个是json,data对应的是python中的字典,但是这个报文格式是json格式,和一般的有些不同。

    所以抓包分析的时候一定要仔细看一下是否是json格式

    如何解决Fiddler抓手机app数据包时候遇到的证书问题_第6张图片

3.2反编译app,找到网络请求模块,因为系统默认是校验证书的,所以我们需要修改smali让其信任所有证书,一般通过连接或者全局搜HttpClient等类信息定位到地方,然后修改smali代码即可,信任所有证书的代码网上也有。(这个方法我也试了以下,但是不太懂java的代码,有移动端开发经验的可以尝试)





你可能感兴趣的:(爬虫)