抓包⼯具-Fiddler详细介绍
Fiddler的详细介绍
⼀、Fiddler与其他抓包⼯具的区别
 1、Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强⼤。模拟http请求的功能也不够,且firebug常常是需要“⽆刷新修改”,如果刷新了页⾯,所有的修改都不会保存;
 2、Wireshark是通⽤的抓包⼯具,能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,但如果是TCP、UDP协议可以⽤wireshark;
 3、Httpwatch也是⽐较常⽤的http抓包⼯具,但是只⽀持IE和firefox浏览器(其他浏览器可能会有相应的插件);
⽽Fiddler 是⼀个使⽤本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应⽤程序都可以使⽤Fiddler。
⼆、Fiddler的⼯作原理
 Fiddler是位于客户端和服务器端的HTTP代理,也是⽬前最常⽤的http抓包⼯具之⼀。它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应⽤、修改请求的数据,甚⾄可以修改服务器返回的数据。
 既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,所以web客户端和服务器的请求如图1所⽰:
图1(web客户端和服务器的请求过程)
 注:使⽤Fiddler的话,需要先设置浏览器的代理地址,才可以抓取到浏览器的数据包。⽽很⽅便的是在你启动该⼯具后,它就已经⾃动帮你设置好了浏览器的代理了,当关闭后,它⼜将浏览器代理还原了。当然如果发现没有⾃动设置浏览器代理的话,那就得⾃⼰动⼿去浏览器进⾏设置代理操作了。(可⾃⾏百度每个浏览器是如何设置代理的),反正⼀定要设置相应的代理,否则fiddler是⽆法捕获到HTTP请求的。
梦见别人被杀三、Fiddler的使⽤界⾯介绍
1、主界⾯如图2所⽰:
图2(fiddler主界⾯)
2、左边web session⾯板的字段及图标含义如下:
名称含义
#抓取HTTP Request的顺序,从1开始,以此递增
Result HTTP状态码
Protocol请求使⽤的协议,如HTTP/HTTPS/FTP等
Host请求地址的主机名
URL请求资源的位置
Body该请求的⼤⼩
Caching请求的缓存过期时间或者缓存控制值
Content-Type请求响应的类型
Process发送此请求的进程:进程ID
Comments允许⽤户为此回话添加备注
Custom允许⽤户设置⾃定义值
图标含义
请求已经发往服务器
强效催眠曲一听入睡
已从服务器下载响应结果
请求从断点处暂停
响应从断点处暂停
请求使⽤ HTTP 的 HEAD ⽅法,即响应没有内容(Body)
请求使⽤ HTTP 的 POST ⽅法
请求使⽤ HTTP 的 CONNECT ⽅法,使⽤ HTTPS 协议建⽴连接隧道我国的四大盆地
响应是 HTML 格式
响应是⼀张图⽚
响应是脚本格式
响应是 CSS 格式
响应是 XML 格式
响应是 JSON 格式
响应是 JSON 格式
响应是⼀个⾳频⽂件
响应是⼀个视频⽂件
响应是⼀个 SilverLight
响应是⼀个 FLASH
响应是⼀个字体
普通响应成功
响应是 HTTP/300、301、302、303 或 307 重定向
响应是 HTTP/304(⽆变更):使⽤缓存⽂件
响应需要客户端证书验证
服务端错误
会话被客户端、Fiddler 或者服务端终⽌
3、右边是详情和数据统计⾯板
1)Statistics关于HTTP请求的性能(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)以及数据分析。如图3所⽰:
图3(Statistics选项卡)
2)Inspectors是⽤于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容,提供headers、textview、hexview,Raw等多种⽅式查看单条http请求的请求报⽂的信息,如图4所⽰:
图4(Inspectors选项卡)
3)AutoResponder 可⽤于拦截某⼀请求,即按⾃⼰添加的指定规则重定向到本地的资源或Fiddler资源,从⽽代替服务器响应。
举例:将“baidu”这个关键字跟本地电脑的⼀张图⽚绑定了,再访问带有“baidu”关键字的地址,就会被劫持,具体步骤如图5所⽰:
图5(AutoResponder 选项卡)
启⽤规则后(勾选enable rules),在浏览器输⼊pan.baidu,会发现被劫持了,显⽰的是绑定的本地图⽚,⽽不是pan.baidu的页⾯
图6(被劫持)
4)Composer ⾃定义请求发送服务器,Parsed模式下你只需要提供简单的URLS地址即可,如图7所⽰
图7(Composer选项卡)
5)Filters 即过滤规则,通过设置过滤规则来过滤所需的http请求,如图8所⽰,勾选左上⾓的Use Filters开启过滤器:
图8(Filters选项卡)支付宝健康码在哪里
  ⽽这⾥有两个最常⽤的过滤条件:Zone和Host
a.Zone 指定只显⽰内⽹(Intranet)或互联⽹(Internet)的内容,如图9所⽰:
图9
b.Host 指定显⽰某个域名下的会话,如图10所⽰,如果框框为黄⾊,表⽰修改未⽣效,点击红圈⾥的⽂字即可:
图10
6)timeline 请求响应时间,在左侧会话窗⼝点击⼀个或多个请求,Timeline 便会显⽰指定内容从服务端传输到客户端的时间,如图11所⽰:
图11(timeline选项卡)
四、Fiddler的其他功能介绍
1、Fiddler 设置解密HTTPS的⽹络数据
 Fiddler可以通过伪造CA证书来欺骗浏览器和服务器。⼤概原理就是在浏览器⾯前Fiddler伪装成⼀个HTTPS服务器,⽽在真正的HTTPS 服务器⾯前Fiddler⼜装成浏览器,从⽽实现解密HTTPS数据包的⽬的。
解密HTTPS需要⼿动开启,依次点击:Tools –> Fiddler Options –>  HTTPS ->勾选Decrypt HTTPS traffic -> 点击Yes,在弹出的对话框中选择是即可,如图12所⽰
图12
2、Fiddler 内置命令与断点
 FIddler断点功能就是将请求截获下来,直接点击Fiddler下图的图标位置,就可以设置全部请求的断点,也可以在命令栏输⼊断点命令进⾏截获,如图13所⽰
图13(断点)
  ⽽断点的命令则可以精确设置需要截获那些请求,如下表所⽰:
命令对应请求项介绍⽰例All问号后边跟⼀个字符串,可以匹配出包含这个字符串的请求?google >Body⼤于号后⾯跟⼀个数字,可以匹配出请求⼤⼩,⼤于这个数字请求>1000
<Body⼩于号跟⼤于号相反,匹配出请求⼤⼩,⼩于这个数字的请求<100
=Result等于号后⾯跟数字,可以匹配HTTP返回码=200
@Host@后⾯跟Host,可以匹配域名@www.baidu
select Content-
Type
select后⾯跟响应类型,可以匹配到相关的类型select image
cls All清空当前所有请求cls dump All将所有请求打包成saz压缩包,保存到“我的⽂档\Fiddler2\Captures”⽬录下dump start All开始监听请求start stop All停⽌监听请求stop
断点命令
bpafter All bpafter后边跟⼀个字符串,表⽰中断所有包含该字符串的请求bpafter baidu(输⼊bpafter解除断
点)
bpu All跟bpafter差不多,只不过这个是收到请求了,中断响应bpu baidu(输⼊bpu解除断点)bps Result后⾯跟状态吗,表⽰中断所有是这个状态码的请求bps 200(输⼊bps解除断点)bpv / bpm HTTP⽅法只中断HTTP⽅法的命令,HTTP⽅法如POST、GET bpv get(输⼊bpv解除断点)
g  / GO All放⾏所有中断下来的请求g
注:1、如bpafter断点命令使⽤⽅法为:bpafter 后边跟字符串->表⽰中断所有包含该字符串的请求;  bpafter ->表⽰解除刚刚的中断断点;池贤宇整容
3、中断会话后修改表单内容
  不知道什么原因捕获不了登录界⾯的会话(除了博客园⽹站外,其他很多⽹站的会话都捕获不到->解决⽅法:按上⾯‘Fiddler 设置解密HTTPS的⽹络数据’所写的步骤设置⼀下),所以下⾯的实例是来⾃⼩坦克的,详细博客地址在图⽚正⽂贴着。
  看个实例,模拟博客园的登录,在IE中打开博客园的登录页⾯,输⼊错误的⽤户名和密码,⽤Fiddler中断会话,修改成正确的⽤户名密码。这样就能成功登录:
  3. 输⼊错误的⽤户名和密码,点击登录
  4. Fiddler 能中断这次会话,选择被中断的会话,点击Inspectors tab下的WebForms tab 修改⽤户名密码,然后点击Run to Completion 如图14所⽰。
  5. 结果是正确地登录了博客园(当然Fiddler中也能修改Response)
4、Fiddler中会话⽐较功能
端午节问候 选中2个会话,右键然后点击Compare,就可以⽤WinDiff来⽐较两个会话的不同了(注:需要安装WinDiff,⾃⾏百度安装就可以了,这⾥就不细说安装步骤),如图15所⽰
图15(compare功能)
5、Fiddler中提供的编码⼯具
  点击Fiddler ⼯具栏上的TextWizard,  这个⼯具可以Encode和Decode string,如图16所⽰
图16(TextWizard界⾯)
6、Fiddler中的查询会话
  Edit->Find Sessions(或Ctrl+F)打开Find Sessions的对话框,输⼊关键字查询你要的会话。查询到的会话会⽤黄⾊显⽰,如图17所⽰
图17(find session界⾯)
7、Fiddler中的保存会话
  有些时候我们需要把会话保存下来,以便发给别⼈或者以后去分析。保存会话的步骤如下:File->Save->Selected Sessions
8、Fiddler中的script系统
  ⾸先先安装SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and Install 如图18所⽰
图18(安装SyntaxView插件)
  安装成功后Fiddler 就会多了⼀个Fiddler Script tab,如图19所⽰:
图19
  在⾥⾯我们就可以编写脚本了,看个实例让所有cnblogs的会话都显⽰红⾊。
  把这段脚本放在OnBeforeRequest(oSession: Session) ⽅法下,并且点击"Save script"
if (oSession.HostnameIs("wwwblogs")) {
  oSession["ui-color"] = "red";
}
  这样所有的cnblogs的会话都会显⽰红⾊。
9、如何在VS调试⽹站的时候使⽤Fiddler
  我们在⽤visual stuido 开发ASP.NET⽹站的时候也需要⽤Fiddler来分析HTTP,默认的时候Fiddler是不能嗅探到localhost的⽹站。不过只要在localhost后⾯加个点号,Fiddler就能嗅探到。