抓包工具有很多,小到最常用的 web 调试工具 firebug ,大到通用的强大的抓包工具 wireshark .为什么使用 fiddler ?原因如下:
a. Firebug 虽然可以抓包,但是对于分析 http 请求的详细信息,不够强大。模拟 http 请求的功能也不够,且 firebug 常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。
b. Wireshark 是通用的抓包工具,但是比较庞大,对于只需要抓取 http 请求的应用来说,似乎有些大材小用。
c. Httpwatch 也是比较常用的 http 抓包工具,但是只支持 IE 和 firefox 浏览器(其他浏览器可能会有相应的插件),对于想要调试 chrome 浏览器的 http 请求,似乎稍显无力。
而 Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler 。
Fiddler 是位于客户端和服务器端的 HTTP 代理,也是目前最常用的 http 抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP 请求,可以针对特定的 HTTP 请求,分析请求数据、设置断点、调试 web 应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web 调试的利器。
既然是 代理 ,也就是说:客户端的所有请求都要先经过 Fiddler ,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过 Fiddler 然后发送到客户端,基于这个原因, Fiddler 支持所有可以设置 http 代理为 127.0.0.1:8888 的浏览器和应用程序。使用了 Fiddler 之后, web 客户端和服务器的请求如下所示:
Fiddler主界面的布局如下:
主界面中主要包括四个常用的块:
启动 Fiddler ,开始设置。
点击“ Tools-->Options ”
设置HTTPS选项。在设置过程中会有弹框,请允许。
设置connect选项,记住代理端口号,后面会使用。在设置过程中会有弹框,请允许。设置完之后记得一定要重启Fiddler软件,不然不能使用。
通过ipconfig查看PC的IP地址。(快捷键“win+r”,输入cmd,弹出黑框,然后输入ipconfig)。我的IP地址为192.168.1.9,需要记下
设置手机端。所有的Android机应该都可以长按wlan图标,然后进入网络连接,在连接详情里面设置代理。代理的主机名为上面查到的ip地址,比如我的为192.168.1.9,端口为connect是设置的,默认为8888。图片是华为p20截图。
然后手机端访问"192.168.1.9:8888"(你自己的ip地址和端口号),如果出现响应页面说明成功。
fiddler 抓手机 app 的请求,现在已经可以愉快的玩耍了,但是如何只抓来自 app 的请求呢?
把来自 pc 的请求过滤掉,因为请求太多,这样会找不到重要的信息了。
抓APP上的 HTTPS 请求
设置过滤
2.打开 fiddler>Tools>Fiddler Options>HTTPS>...from remote clients only ,勾选这个选项就可以了
...from all processes :抓所有的请求
...from browsers only :只抓浏览器的请求
...from non-browsers only :只抓非浏览器的请求
...from remote clients only :只抓远程客户端请求
Fiddler 是目前windows系统上最流行的抓包工具之一,fiddler的安装依赖于.net环境,因此在安装fiddler之前,需要先进行安装.net。而在MacOs上通常会使用 charles 来进行抓包。
1.Result:显示http状态码
2.protocol:显示请求的协议
3.Host:请求的主机地址/服务器地址
4.URL:请求的路径
statistics :可以查看到请求的时间,大小
inspectors
accept:encoding:gzip 告诉服务器客户端接收的是压缩后的内容
user-agent:xxxx 用户代理,标识用户身份
拦截数据 拦截数据又称“ 打断点 ”
拦截请求:
1、F11先开始拦截,然后在发送请求
2、修改拦截下来的请求,修改数据
3、shift+F11关闭拦截
4、run to complete,把所有拦截下来的请求发送过去
拦截响应:
1、alt+F11开始拦截
2、修改数据
3、shift+F11关闭拦截
4、run to complete,把修改的请求发送过去
fiddler 抓取手机的包
模拟弱网环境
进入到编辑fiddler脚本中,修改具体限速设置:
ctrl+f搜索 m_SimulateModem
修改完成后,注意保存
fiddler抓取https的包
Fiddler证书安装:
1、电脑上直接访问localhost:8888
2、手机访问电脑所在wifi的ip:8888
Fiddler证书如若安装失败,请反复安装几次或:
在command中
在命令行中
cd 进入fiddler安装目录
输入如下命令
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST,OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012
可以的Fiddler抓取HTTPS流量的原理
TLS是一种端到端的传输层加密协议,是HTTPS协议的一个组成部分。访问HTTPS站点时,HTTP请求、响应都通过TLS协议在浏览器和服务
器之间加密传输,并且通过数字证书技术保证数据的保密性和完整性;任何“中间人”、包括代理服务器都只能转发数据,而无法窃听或者篡改数据。
要抓取HTTPS流量的明文内容,Fiddler必须解密HTTPS流量。但是,浏览器将会检查数字证书,并发现会话遭到窃听。为了骗过浏览
器,Fiddler通过使用另一个数字证书重新加密HTTPS流量。Fiddler被配置为解密HTTPS流量后,会自动生成一个名为
DO_NOT_TRUST_FiddlerRoot的CA证书,并使用该CA颁发每个域名的TLS证书。若
DO_NOT_TRUST_FiddlerRoot证书被列入浏览器或其他软件的信任CA名单内,则浏览器或其他软件就会认为HTTPS会话是可信任的、
而不会再弹出“证书错误”警告。
开启HTTPS流量解密功能后,Fiddler将会提示用户将DO_NOT_TRUST_FiddlerRoot证书列入IE浏览器的信任CA名
单。用于调试客户端时,这已经足够了;Firefox用户也可以很方便的手动导入DO_NOT_TRUST_FiddlerRoot证书。但是,若要在服
务器上抓取ASP.Net发出的HTTPS请求,这是不够的——你必须将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任
CA名单。
操作录像
该录像演示了下列操作:
开启Fiddler的HTTPS流量解密功能
将DO_NOT_TRUST_FiddlerRoot证书导入“机器帐号”的信任CA名单
将PHP脚本的代理服务器设置为127.0.0.1:8888,并抓取HTTPS请求
主要网络开发框架的抓包配置
Fiddler的工作方式是代理服务器(端口号8888)。只要开发框架支持设置HTTP代理服务器,都可以使用Fiddler。
#PHP curl
$ch=curl_init('https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js')
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1)
curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888')//设置代理服务器
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0)//若PHP编译时不带openssl则需要此行
$resp=curl_exec($ch)
curl_close($ch)
<!-- ASP.Net web.config -->
<configuration>
<system.net>
<defaultProxy enabled="false">
<proxy proxyaddress="http://127.0.0.1:8888/"/>
</defaultProxy>
</system.net>
</configuration>
如果你使用linux服务器,请将Fiddler安装在一台Windows计算机上并在Tools - Fiddler Options -
Connections勾选Allow remote computers to
connect,并手动将FiddlerRoot.cer导入linux服务器的信任CA名单,最后将代理服务器设置成Fiddler所在IP的8888
端口。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)