Fiddler(中文名称:小提琴)是一个 HTTP 的调试代理,以代理服务器的方式,监听系统的 Http 网络数据流动,Fiddler 可以也可以让你检查所有的 HTTP 通讯,设置断点,以及 Fiddle 所有的 “进出” 的数据(我一般用来抓包),Fiddler 还包含一个简单却功能强大的基于 JScript .NET 事件脚本子系统,它可以支持众多的 HTTP 调试任务。
Fiddler 官方网站提供了大量的帮助文档和视频教程, 这是学习 Fiddler 的最好资料
Fiddler 是以代理 WEB 服务器的形式工作的, 浏览器与服务器之间通过建立 TCP 连接以 HTTP 协议进行通信,浏览器默认通过自己发送 HTTP 请求到服务器,它使用代理地址: 127.0.0.1, 端口: 8888. 当 Fiddler 开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过如果 Fiddler 非正常退出,这时候因为 Fiddler 没有自动注销,会造成网页无法访问。解决的办法是重新启动下 Fiddler。
Fiddler 的主界面分为 工具面板、会话面板、监控面板、状态面板
说明注释、重新请求、删除会话、继续执行、流模式 / 缓冲模式、解码、保留会话、监控指定进程、寻找、保存会话、切图、计时、打开浏览器、清除 IE 缓存、编码 / 解码工具、弹出控制监控面板、MSDN、帮助
两种模式
每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴,用图表的形式展现出来,就形成了瀑布图。在 Fiddler 中,只要在左侧选中一些请求,右侧选择 Timeline 标签,就可以看到这些请求的瀑布图
控制台 Fiddler 的左下角有一个命令行工具叫做 QuickExec, 允许你直接输入命令。 常见得命令有:
命令 | 解释 |
---|---|
help | 打开官方的使用页面介绍,所有的命令都会列出来 |
cls | 清屏 (Ctrl+x 也可以清屏) |
select | 选择会话的命令 |
?.png | 用来选择 png 后缀的图片 |
bpu | 截获 request |
bpafter | 截获 response |
Fiddler 不仅能监听 HTTP 请求而且默认情况下也能捕获到 HTTPS 请求,Tool -> Fiddler Option -> HTTPS 下面进行设置,勾选上 “Decrypt HTTPS traffic”,如果不必监听服务器端得证书错误可以勾上 “Ignore server certification errors”,也可以跳过几个指定的 HOST 来缩小或者扩大监听范围。
请求构造顾名思义就是我们可以模拟请求,也就是说我们可以借助 Fiddler 的 Composer 在不改动开发环境实际代码的情况下修改请求中的参数值并且方便的重新调用一次该请求,然后相比较 2 次请求响应有何具体不同。任何一个请求参数只要是合法的取值再次调用后都会有相应的响应,那么你想要的任意一个合法请求组合自然也能够按照你的意愿构造出来,然后再次调用以及查看返回数据。
将该请求鼠标左键单击拖入 Fiddler 右侧 Request Builder 标签内并修改原请求参数 OutPutType=JSON 为 OutPu tType=XML,然后点击 Execute 按钮再次触发调用请求
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/947566-5aaac0b84a397c58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
双击这次请求包在 Inspectors 标签下查看返回数据为 XML 格式,而 JSON 格式一栏为空:
对一个重新载入的页面进行抓包,如果包的条目过多而你需要关注的就那么几项的话,可以使用 Fiddler 的过滤器 Filters 进行抓包,那么抓包时只会抓取你希望抓到的那些包。切换到 Filters 标签勾选 Use filter,以便激活过滤器,这样下面的各种过滤方式就可以进行选择了。
![Filter_2](http://upload-images.jianshu.io/upload_images/947566-b6ed61685e13315e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
所谓请求无非就是需要调用到的一些资源 (包括 JS、CSS 和图片等),所谓重定向就是将页面原本需要调用的资源指向其他资源 (你能够控制的资源或者可以引用到的资源)。
![重定向](http://upload-images.jianshu.io/upload_images/947566-18f9c105596ef543.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Fiddler 不但能截获各种浏览器发出的 HTTP 请求, 也可以截获各种智能手机发出的 HTTP/HTTPS 请求。 Fiddler 能捕获 IOS,Andriod,WinPhone, 设备发出的请求,同理,也可以截获 IPad, MacBook 的等设备发出的 HTTP/HTTPS。 前提条件是:安装 Fiddler 的机器,跟 Iphone 在同一个网络里, 否则 IPhone 不能把 HTTP 发送到 Fiddler 的机器上来。
具体操作步骤如下: