通过Fiddler(windows)抓http请求(android、浏览器)

一、通过Fiddler(windows)抓的http请求配置

1. 什么是Fidder

Fiddler(fiddler中文版)是一个http协议调试代理工具。fiddler能够记录并检查所有你的电脑和互联网之间的http通讯。

Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,使用Fiddler无论对开发还是测试来说,都有很大的帮助。Fiddler4基于4.0的.NET。

可以通过Fiddler对特定的请求,做分析数据、设置断点、调试web应用、修改请求数据等操作,来达到调试web的作用。

Fiddler的运行机制其实就是本机上监听 8888 端口的 HTTP 代理。 Fiddler 启动的时候默认 IE 的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以将 Chrome 浏览器的代理改为127.0.0.1:8888 就可以监听数据了。

因为fiddler抓包的原理就是通过代理,所以被测终端需要和安装fiddler的电脑在同一个局域网中。

2. Fidder使用场景

1)辅助定位bug;
2)构建模拟测试场景;
3)APP弱网模拟测试;
4)前端性能分析及优化;

3. Fidder下载安装

https://www.telerik.com/download/fiddler
腾讯软件中心下载: https://pc.qq.com/detail/10/detail_3330.html

在这里插入图片描述双击下载的FiddlerSetup.exe进行安装。
在这里插入图片描述弹出一个窗口:

Windows uses an isolation technology called ‘AppContainer’ that may interfere with traffic capture from Immersive Applications and the Edge browser. Use the WinConfig button in Progress Telerik Fiddler’s toolbar to enable teaffic capture.
Would you like to learn more?
To disable this warning. click ‘Cancel’.

大概意思是这样的:

Windows使用称为“AppContainer”的隔离技术,可能会干扰Immersive Applications和Edge浏览器的流量捕获。 使用Progress Telerik Fiddler工具栏中的WinConfig按钮启用茶叶捕获功能。
你想了解更多吗?
要禁用此警告。 点击“取消”。

最后到安装目录下找到fiddler.exe,双击即可使用fiddler了。

4. Fidder配置

【fiddler】fiddler 配置:HTTPS 或手机 APP 接口数据的抓包配置步骤
参考URL: https://blog.csdn.net/qq_39720249/article/details/81069929
抓包工具fiddler下载配置(一):下载/安装&信任证书
参考URL: https://www.cnblogs.com/mini-monkey/p/11286264.html

Fiddler监听PC端 配置

  1. 开启Fiddler的远程连接:
    开启Fiddler的远程连接,Fiddler 主菜单 Tools -> Fiddler Options…-> Connections页签,选中Allowremote computers to connect,并记住端口号为8888,等会设置手机代理时需要。

    fiddler>Tools>Fiddler Options>Connections 勾选Allow remote computers to connect。

  2. HTTPS配置设置
    手机上的应用很多涉及到个人信息,采用比较安全的HTTPS加密过,而fiddler默认只捕获http会话而不抓取HTTPS报文,导致打开fiddler后就打不开https网页(比如百度)。
    打开Fiddler->Tool->Fiddler Options->HTTPS tab,勾选上并Capture HTTPS CONNECTs(捕获 HTTPS 连接)和 Decrypt HTTPS traffic (HTTPS 请求解密),并安装证书(首次使用无证书,会弹出是否信任fiddler证书和安全提示,直接点击yes就行),重启Fiddler生效。
    在这里插入图片描述
    HTTPS下拉列表的一些选项说明:
    1.from all processes : 抓取所有的 https 程序, 包括 PC本机 和 手机。
    2.from browsers only : 只抓取浏览器中的 https 请求。
    3.from non-browsers only : 只抓取除了浏览器之外的所有 https 请求。
    4.from remote clients only : 抓取远程的客户端的 https ,可以代表手机,开启手机 Https 抓包,
    如果只想抓取手机上的所有 https 请求,就应该选中此选项。

在这里插入图片描述
由于此时抓取的数据包包含了电脑和手机的所有数据包,不便于查看和分析,所以需要对fiddler抓取的数据包进行过滤,进入到"Tools"—>Options——>https项,选择"…from remote clients only",这样就只显示抓到的手机上的数据包。

fidder APP抓包时的手机设置

第一步:手机设置代理
  1. 让手机和PC在同一个局域网下面:

    家用或办公环境把PC和手机WLAN连接上同一个路由器的无线SSID获取到同一网段内的IP地址即可。台式机要插入无线网卡才能连WiFi,最好用笔记本电脑和手机连同一WiFi很方便。

  2. 设置-WLAN,找到连接的wifi长按,选择修改网络:

  3. 然后勾选高级选项,选择代理为手动,填入代理服务器为自己电脑IP,端口填入刚刚记住的8888。

第二步:手机fiddler证书安装
  1. 手机浏览器,地址栏输入http://IPV4:8888
    注意: http://IPV4:8888 就是你fidder监听的ip和地址,即访问你本地fidder监听服务。
  2. 点击页面底部FiddlerRoot certificate 下载证书
  3. 打开设置>更多设置>系统安全>加密与凭据>从存储设备安装 选择下载好的FiddlerRoot.cer进行安装。
    ** 证书这里不要选择WLAN,不然在应用中打开会显示证书错误,应该选择VPN和应用。**,如下,安装证书界面
    在这里插入图片描述
  4. 浏览器打开https://www.baidu.com/,已经可以抓取HTTPS包了
Android7及以上HTTPS抓包(信任用户证书(CA)转成系统证书)

Android让系统信任用户证书的方法
参考URL: https://www.sabia.cc/android-10-zhengshu.html
Fiddler https最新抓包方法(Android 9.0)
参考URL: https://blog.csdn.net/liuluok123/article/details/95971731
Fiddler HTTPS Andrioid 9.0证书解决方案
参考URL: https://blog.csdn.net/qq_34731627/article/details/103266514

Android从7.0过后,默认不再信任用户导入的证书文件,以至于在数据抓包的时候,不能正确抓取HTTPS的数据包。

解决方案
一、官方解决方案(需修改代码)
官方文档:https://developer.android.google.cn/training/articles/security-config.html
详细演示:https://blog.csdn.net/mrxiagc/article/details/75329629

思路:
Android 7.0后更新安全策略,**软件可以自身选择是否相信用户导入的证书。**所以当我们在手机导入Fiddler的证书后,有些软件依旧抓不到Https的包。
解决方案有2个:

  1. APK里面加入相应的代码(需要修改应用,不够通用)
  2. 把Fiddler证书导入到手机系统里面而非个人里面。(只有root的手机才可以

这里讲一下第二种方案:

  1. 首先将Fiddler证书导出来,保存为 FiddlerRoot.cer
    在这里插入图片描述
  2. Linux安装Openssl
  3. Openssl安装完成后把证书导入到Linux系统下并进行转换(cer证书转pem证书)
    Fiddler默认是cer证书,需要将cer证书转pem证书。
[root@VM_0_14_centos fiddler]# openssl x509 -inform der -in FiddlerRoot.cer -out fiddler.pem
[root@VM_0_14_centos fiddler]# openssl x509 -inform PEM -subject_hash_old -in fiddler.pem | head -1
269953fb
//如上得到字符串如:269953fb,然后cat fiddler.pem 到这个字符串.0 文件
cat fiddler.pem > 269953fb.0

openssl x509 -inform PEM -text -in fiddler.pem -out /dev/null >>  269953fb.0
openssl x509 -inform PEM -subject_hash -in fiddler.pem | head -1

cat fiddler.pem > 035f9290.0

openssl x509 -inform PEM -text -in fiddler.pem -out /dev/null >> 035f9290.0

//把生成好的269953fb.0、035f9290.0这两个文件放入手
这两个文件放入手机/system/etc/security/cacerts 目录下,并修改这2个文件的读写权限: chmod 777

重启手机,如果生成的文件正确,可以在 信任的凭据 -> 系统中找到如下Fiddler的证书,就可以正常抓取HTTPS的包了
在这里插入图片描述

注意:该方法需要手机root。

注意:本节暂未测试验证。但是思路是没有问题的,就是把你的用户证书改成系统证书,从而让可以抓包分析!

Android10导入系统证书的方法

Android10导入系统证书的方法。
参考URL: https://blog.csdn.net/fjh1997/article/details/106756012

由于安卓10采用了某些安全策略,将系统分区/system挂载为只读,就算你root了也没用,无法写入系统分区也就无法导入系统证书,在使用http-canary这样的软件抓包分析的时候,很多app只认系统证书,不认用户证书。

注意:本节暂未测试验证。

二、Fidder常用使用技巧

1. 根据ip 过滤请求

开启fiddler后,会监听所有的请求,在大多数情况下,我们只需要监听部分请求,此时可以使用Filters功能去控制。

在这里插入图片描述  默认情况下过滤是未开启的,需要勾选“user filters”进行启动。如果有多套监听方式,也可以将其导出,在下次需要的时候进行导入。

Hosts
  域名过滤,通过配置,只监听/或不监听默写域名。
在这里插入图片描述在选中不同的过滤方式后,配合下面输入框中输入的地址信息,进行过滤。

(1、Hide the following Hosts:表示在输入框中,输入了哪些域名信息,就不过滤,不进行监听。

如:选中此项,在输入框中,输入www.baidu.com时,此时请求www.baidu.com的请求都不会进行监听,在左侧的session面板中,将不会有www.baidu.com相关的请求记录。

(2、Show only the following Hosts:标识在输入框中输入了哪些域信息,就只监听这些域名,其他的域名将不进行监听。

如:选中此项,在输入框中,输入www.baidu.com时,只有在访问www.baidu.com的请求才会进行监听,即左侧的sessson中只包含www.baidu.com的请求,其他的请求将不会监听显示。

(3、Flag the following Hosts:表示在输入框中输入了哪些域名信息,在左侧的session面板中,这些配置的域名在监听到时,会加标识(如:加粗)

如:选中此项,在输入框中输入www.baidu.com,在访问www.baidu.com时左侧的session面板中,会加标识(加粗)

总结: 点击右侧的Filters => 勾选use Filters => host 第一个选项不动 no zone filter ,第二个选项选择 show only following hosts ,然后填写你需要监控的hosts ,用英文分号隔开。

2. fidder请求导出

fiddler支持导出多种格式,其中saz、har、bat格式(windows系统)是最为常用的。

2.1 导出curl

右上角 File-> Export Sessions -> Selected Sessions
在这里插入图片描述

2.2 导出为其他格式

  • SAZ
    SAZ是Session Archive Zip的缩写。 SAZ文件用于保存HTTP请求的信息.

    SAZ文件是一种特殊格式的 .ZIP文件。可以将.SAZ后缀修改为.ZIP, 然后使用标准的ZIP压缩工具打开。

  • HAR
    HAR是HTTP Archive format的缩写,是一种json格式的存档文件格式,多用于记录网页请求记录 。很多软件都支持HAR格式,如:Fiddler,Firebug , Firefox, IE, chrom, Charles等

  • bat
    bat格式是windows批处理命令的一种格式,通过fiddler导出的bat文件里存放的是curl命令,可以在windows系统中直接执行,也可以导入到其它工具中直接生成请求(如:postman)

    以上两种格式导出都是在Export Sessions中操作,不同的是导出bat格式需要选择cURL Script ,导出har需要选择HTTPArchive .

    总结:导出为curl形式,可以导入到postman,因此建议导出为curl脚本格式。

3. fidder 调大字体

选择“工具”->“选项”。会弹出如下选项页面,点击“外观”选项卡后再点击“选择字体”即可调整Fiddler页面字体。

猜你喜欢

转载自blog.csdn.net/inthat/article/details/109188240