使用Fiddler进行http抓包和调试

简介:

俗话说:工欲善其事,必先利其器。
Fiddler是windows下前后端开发的一大调试利器。

Fiddler工作于 ISO 七层中的应用层,对 http(s) 的报文抓取分析和调试非常给力,但是似乎不直接支持 tcp/udp 等其他协议报文的抓取。
windows上可以使用wireshare进行所有报文的抓取,但是它大而不专了,对 http(s) 这协议没有过多的可操作性。
linux上可以用tcpdump等命令工具。

本文主要写一下这个利器的主要使用方法。



1、 Fiddler的工作原理

其原理图如下:

1153957-20170520225843463-1816505643.jpg

上图中间的东西就是Fiddler软件,它作为计算机上的网络代理,所有的http(s)请求和响应都要通过它来传输,竟然它扼住网络的喉咙,有些事情就比较好办了。发挥你的想象力,它就可以截住请求、截住响应、修改请求内容、修改响应内容、报文内容截取分析、https证书替换和SSL加密解密。是的,这正是下面所有要讲的内容,都是依据这个原理展开的。

它是如何进行网络代理的呢?
在安装了Fiddler的系统中,启动Fiddler之后它会监听8888端口(默认8888,可以修改)。监听里边的数据流加以解析和修改。

在实践中,我尝试用它来抓取QQ客户端的报文,发现没法抓到,其实设置一下QQ的网络代理为浏览器代理即可。浏览器默认是启动监听了。

因为Fiddler的这些特性,所以用它来调试 ajax 、分析错误报文很是方便。



2、 Fiddler的常用操作

如何安装本文就不多说,windows的安装型软件无非就一直 Next 。
我这里使用 Fiddler4 版本,写博时官方的最新版本。
如果要从官网下载的话,应该要先注册才开放下载。
安装成功后按下图访问有:

1153957-20170520225859010-774014799.jpg

表明你已安装成功啦。

下面打开 百度 搜索引擎首页,可以抓到几条请求,第一个就是html的内容请求,第二个是百度logo的请求......

1153957-20170520225909510-1276257056.jpg

Fiddler的常用分析操作集中在上图中,每一次的 http(s) 的请求和响应,都清晰的记录在列表中,双击可以查看报文内容,提供十多项解析功能对报文进行各种解析,非常直观方便。



3、 支持https解密分析

默认Fiddler是不支持解密 https 的报文内容的,能捕获到报文,但是报文加密了,打开就是一串乱码。如果你是本机测试的话,不妨用Fiddler的证书替换原有的SSL所需的证书。既然使用Fiddler自己的证书,那相当于它自己也那里一把钥匙,随时可以解密报文,看到报文内容。这对于调试来说特别方便。

按如下配置使能https的解析,
选择 Tools -> Telerik Fiddler Options ,设置如下:

1153957-20170520225918041-198510619.jpg

再刷新网页可以看到解析出 form 表单的内容了:

1153957-20170520225925900-340489461.jpg

最新版的firefox浏览器对证书验证比较严格(360,谷歌,IE 没出现),前面我替换了证书,估计导致了一些问题,发出如下的警告:

1153957-20170520225934978-573780731.jpg

如果你只是测试的话,就点击网页中的 添加例外 按钮,信任一下这个证书,又可以快乐的访问和测试了。



4、 Fiddler的断点调试

Fiddler的断点有两种:请求前断点(Before Request) 和 响应后断点(After Response)。

顾名思义,Fiddler截获到请求暂停、截获到响应暂停。
为什么要暂停呢?就是为了修改请求或响应的报文呀。

开启两种断点的方式如下:

1153957-20170520225942135-1202165745.jpg

下面演示一下开启请求前断点的例子:

开启断点后,刷新一下百度首页(因为百度网页协议 https 的,若要修改内容的话,就要开启https解密功能),有:

1153957-20170520225950494-1270387352.jpg

注意到会话的图标是红色的(左上角),因为会话被请求前断点给暂停了,所以出现了类似于程序的断点标识。

切换到 RAW 的tab查看原始数据(如上),把里边的 User-Agent 的值修改为 iPhone 的web标识,如:

Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4

再点击(选中)刚才暂停的会话,接着按住 Shift 键(或者干脆把断点给关了,不然后面还要点击若干次 GO),点击工具栏的 GO ,Fiddler就会把修改后的请求发给百度的服务器,所以你可以看到下面的响应结果:

1153957-20170520230010478-1671835542.jpg

这是一个手机端的web页面,是的,我们成功篡改了报文内容并达到目的。







      本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1932764,如需转载请自行联系原作者








相关文章
|
3月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
47 0
|
2月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【2月更文挑战第3天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
69 0
|
5月前
|
安全 Android开发
夜神模拟器 安卓7.0 burp抓包 https流量
夜神模拟器 安卓7.0 burp抓包 https流量
172 0
|
2月前
|
Web App开发 XML 缓存
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
【2月更文挑战第6天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的会话面板了。Fiddler抓取到的每条http请求(每一条称为一个session),会话列表 主要是Fiddler所抓取到的每一条http请求都会显示到这里。主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息。
52 0
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
|
2月前
|
Web App开发 网络协议 前端开发
【JavaEE初阶】 HTTP协议和使用Fiddler抓包
【JavaEE初阶】 HTTP协议和使用Fiddler抓包
|
3月前
|
前端开发 安全 JavaScript
Fiddler实现 HTTP 网络抓包
Fiddler实现 HTTP 网络抓包
|
4月前
|
Web App开发 小程序 网络安全
Mac Charles 抓包 iPhone Https(详细流程)
Mac Charles 抓包 iPhone Https(详细流程)
101 2
|
4月前
|
存储 安全 算法
https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?
https 是否真的安全,https攻击该如何防护,https可以被抓包吗?如何防止呢?
|
6月前
|
前端开发 JavaScript 网络协议
HTTP初识,fiddler的使用,URL各部分介绍,QueryString
HTTP初识,fiddler的使用,URL各部分介绍,QueryString
|
Web App开发 测试技术 网络安全
全面解析HTTP/2:历史、特性、调试、性能
相比之前的传输协议,HTTP/2在底层方面做了很多优化。有安全、省时、简化开发、更好的适应复杂页面、提供缓存利用率等优势,阿里云早在去年发布的CDN6.0服务就已正式支持HTTP/2,访问速度最高可提升68%。今天我们从历史、特性、调试、性能四个层面来全面解析HTTP/2
10445 0
全面解析HTTP/2:历史、特性、调试、性能