fiddler抓取手机https请求详解

前言:

Fiddler是在 windows下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析,fiddler默认只能抓取http请求,需要配置和安装fiddler证书才能抓取https请求。

fiddler抓取手机https请求详细步骤:

1,官网免费下载fiddler后,点击安装,安装成功后,打开fiddler后如下图:

 
fiddler抓取手机https请求详解

2,打开Tools–> Options–> Connections选项中勾选Allow remote computers to connect (允许远程计算机连接),选择监听端口8889(可自己配置,默认为8888),配置完如下图:

 
fiddler抓取手机https请求详解

3,打开Tools–> Options–>HTTPS,勾选Decrypt HTTPS traffic ,选择from remotes client only(从远程客户端),同时勾选Ignore server certificate errors(unsafe)配置完如下图:

 
fiddler抓取手机https请求详解

4, 打开Tools–> Options–>HTTPS,点击Actions中的Trust Root Certificate,添加fiddler证书到列表中:一直确定,就成功添加fiddler证书到本机列表了;

 
fiddler抓取手机https请求详解
 
fiddler抓取手机https请求详解
 
fiddler抓取手机https请求详解

5,打开Tools–> Options–>HTTPS,点击Actions中的Export Root CertificateTo Desktop,将fiddler证书导出到桌面:

 
fiddler抓取手机https请求详解

6,在 android的 “ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。

在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 android运行所在的电脑的 IP,以及前面设置的端口号 8889,如下图所示:(此处以oppo手机为例)

 
fiddler抓取手机https请求详解

7,将fiddler证书FiddlerRoot.cer从电脑传到手机端,点击设置–>其他设置–>安全与隐私–>从存储设备安装证书–>选择证书–>安装安装成功就可以抓https的包啦~

 
fiddler抓取手机https请求详解

*安装中出现的问题:

1,在步骤6后,手机安装fiddler证书的步骤网络上很多是通过访问电脑ip+代理端口,就能访问fiddler证书下载页,进行下载安装fiddler证书;

楼主用的win10的系统,再确认手机代理打开且设置正确后,访问电脑ip+端口后报错,不能访问下载页,如下图所示:

 
fiddler抓取手机https请求详解

不能访问电脑ip+端口,网上各种百度后,网友提供的解决方案如下:

1, 确认防火墙允许访问,并且确保电脑端未装杀毒软件和各种安全卫士;(win10系统默认装了联想杀毒等软件,不能卸载,导致此条不能排除)

2,   确认在防火墙的高级设置中80端口能访问:如果不能正确的导出证书请下载FiddlerCertMaker证书生成器

 
fiddler抓取手机https请求详解

总结:楼主最后无法排除问题一,故选择绕开IP访问,采用的导出证书然后传到手机端的方式,成功安装fiddler证书~


*不同机型安装fiddler证书:

1,oppo手机和vivo手机:

点击证书后,不能直接安装,要通过设置中的更多设置的安全与隐私去添加认证证书,详细步骤如下:

ANDROID:设置 —> 安全 —> 从手机存储安装(或者是:设置 —> 其他设置 —> 设备与隐私 —> 从存储设备安装证书),找到需要安装的证书,安装即可

*注意:android7.0以下版本以上设置后直接可以抓包了,但android7.0以后版本有一个名为“Network Security Configuration”的新安全功能。这个新功能的目标是允许开发人员在不修改应用程序代码的情况下自定义他们的网络安全设置。

如果应用程序的SDK高于或等于24,则只有系统证书才会被信任。不让信任外部(用户导入)证书;

手机的根证有两种,一种是系统预装的,一种是用户自己导入的:如下图所示:

 
fiddler抓取手机https请求详解

所以:Android的源代码需要让研发来改动,只改成测试和release的可以就行。

方法一:添加如下文件res/xml/network_security_config.xml到代码里面,请求域名;

方法二:或者在AndroidManifest.xml文件中加入以下配置:Android:networkSecurityConfig="@xml/network_security_config"大功告成,配置完即可抓包。

方法三:修改http请求框架的协议栈,让框架不验证证书

如果想抓取第三方应用包,解决方法如下:

方法一:通过重打包的方式强行修改配置,或者强行降低 targetSdkVersion,或者强行修改别人源码里面的信任证书的代码,然后再重打包就好了(分别针对上面1,2,3里面所说的方法,只不过通过逆向的方式添加);

方法二:通过使用Xposed的JustTrustMe模块来信任所有的证书,Xposed不会用的;

方法三:使用Android 7.0 以下的系统安装应用,并抓包;

2,huaiwei手机:

安装fiddler证书,点开证书后,可以直接安装;安装后直接可以抓取https的包;

3,苹果手机:

安装fiddler证书,安装步骤如下:

IOS:设置 —> 通用 —> 关于本机 —> 受信任证书存储区,找到需要安装的证书,安装即可。

*注意: iOS10系统以上需要进行设置:设置 -> 通用 -> 关于本机 -> 证书信任设置 -> 针对根证书启用完全信任 打开开关; 最后注意:不抓包请关闭手机HTTP代理,否则断开与电脑连接后会连不上网;

以上~对你有帮助的话,点个赞

上一篇:分布式爬虫:使用Scrapy抓取数据


下一篇:使用wireshark 抓取 http https tcp ip 协议进行学习