Fiddler的简介与原理
Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。
先来看看fiddler未参与时,一个普通的客户端与服务端的请求流程图,浏览器给webserver发送一个Request,webserver接收到Request后进行处理,返回给浏览器Response,然后浏览器解析Response中的html,展现网页给用户。如图:

Fiddler工作于七层中的应用层,在client与webserver之间以代理服务器的形式存在,启动fiddler后会监听本地127.0.0.1的8888端口(默认端口),IE/Chrome浏览器会自动设置局域网代理(Firefox代理是独立的,需要单独设置)。
此时,fiddler就作为代理服务器,浏览器访问服务器的流程:浏览器给webserver发送一个Request,代理服务器fiddler接收到Request,fiddler将Request发送到webserver,webserver接收到Request后进行处理,Response到代理服务器fiddler,Fiddler将Response返回到浏览器,如图:

以上这些原理,都只适合Http的报文,对于Https的报文,则更复杂一点,这里介绍的比较清楚。
https://zhuanlan.zhihu.com/p/73155270
https://zhuanlan.zhihu.com/p/27040041
Fiddler安装与使用
安装
到官网下载安装包,直接默认安装就行。https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe
如果是win8及以后的版本,打开后会看到下面的提示。
在win8及以后版本中,Windows禁止一些应用使用本地的代理,可以在Tools->Win8 Loopback Exemptions里设置为允许。
这些应用一般都是Windows自己的应用,我们可以看到Fiddler上有不少Http包。
为浏览器配置Fiddler
以Chrome为例说明如何用Fiddler抓包,在Win10中,在“网络和Internet”->”代理”中手动设置代理。
设置代理地址如下:
http=127.0.0.1:8888;https=127.0.0.1:8888
这时候我们在chrome中打开baidu,虽然能看到流量,但是都是https的,没法解开内容。
在Tools->Options->Https中设置Decrypt HTTPS traffic。这时候会提示要安装一个Fiddler的证书到Windows信任证书列表,这样的话应用就不会提示”不受信任的证书“了。
确定后,再次访问百度,就能解析https的流量了。
为Android配置Fiddler
Android配置Fiddler所在的服务器为代理就可以实现Android抓包。
此处以MuMu模拟器为例,正常的Android也是这种操作方法,只要能访问Fiddler的地址就行。
在 Tools > Fiddler Options > Connections里,勾选 Allow remote computers to connect,然后重启。
在Android的WIFI配置中,设置代理为Fiddler的地址和端口。

添加Fiddler的证书为信任证书。
在手机浏览器输入:http://ip:8888,到了一个Fiddler Echo Service。

点击下载根证书,直接点击就能安装。

以北邮人论坛为例,它用的Https协议,我们在模拟器里启动,发现能抓到包。