Fiddler 是吉他的意思,不知道外国人为什么总是喜欢用动物和身边的东西作为名称。
1. 增加服务器 IP 显示
默认 Fiddler 只显示了 Host, 对于域名跨机房部署的服务来说,测试时非常不便。我们需要知道明确的 IP 地址,以确认这些服务是否正常被更新。而,经常切换 host 的测试或者开发场景,需求更加迫切。
找到 CustomRules.js 文件,
- 方法1:打开 C:\Users'YOURNAME'\Documents\Fiddler2\Scripts
- 方法2:Ctrl+R,或者, 菜单 -> Rules -> Customize Rules...
在 CustomRules.js 中 Ctrl+F 查找 static function Main,大约在文件的 300 行左右的位置,添加上以下代码
FiddlerObject.UI.lvSessions.AddBoundColumn("Server", 120, "X-HostIP");
操作很简单,被注释的代码中其实有,可直接复制,如下图:
2. 过滤
可以通过 host 过滤,进程过滤,请求头,响应状态值过滤等,这里的规则比较灵活,可自行组合,一般在右侧,找到 Filters,勾选,再 Actions -> Run Filterset now 即可,简单略过。
3. Firefox 不能抓包的问题
IE 和 Chrome 都有抓包,但是 Firefox 不行,可能安装了 AutoProxy 代理插件,可禁用。或者,增加一条代理规则,Fiddler 端口为 8888。
如仍然不能抓包,检查 工具 -> 选项 -> 高级 -> 网络 -> 链接 -> 设置,选择为使用系统代理设置。
4. 抓手机包
通常,我们利用此方法来抓取手机上的请求包,这里抓包,根据实际经验来讲,设置通常不会那么一帆风顺。必须得有一个前提条件:
手机和抓包的 PC 在同一个局域网的网段内
假如我们不满足上述条件,如某些办公环境下,PC 网线插口 和 wifi 用的不同的网段,可以通过搭建私网的方式解决(稍微耗费体力,首先保证运维不打你……)。简单点儿,使用 USB wifi 接收器,将手机链接上此网络。或者参照另外一种方法,通过 tcpdump 来完成抓包的工作。
假如我们满足以上条件,则可以开始进行下列操作:
菜单 -> Tools -> Fiddler Options... -> Connections
勾选 Allow remote computers to connect,如果需要抓取 https,建议将 HTTPS 这个 Tab 下的也都勾选上。
Fiddler 自动监听的端口是8888,设置完成后重启 Fiddler,查看是否真的有在监听
netstat -anop tcp
当接口监听处于 LISTENING 时表示准备就绪。
将手机网络的服务器 IP 地址设置为本机 IP 和 端口号设置为8888,则此时,再次使用上述命令查看,可以看到已经建立链接。配置正式完成,可以开始抓包了。
PS,
当显示 FIN_WAIT_2、CLOSE_WAIT 时,不能抓到包,重启 Fiddler 可解决
5. 证书设置
通常用于 https 的请求环境,需要模拟证书。PC-web 的抓包很简单,在 Fiddler Options -> HTTPS 中,将所有的都勾选上。抓包时,Protocol 会将 HTTP 和 HTTPS 区分开来。而返回结果,则不会显示出来,会提示 "Response is encoded and may require decoding before inspection. Click here to transform."
双击,就会 decode,显示正常的值。
但是,在移动端, HTTPS 的包没有抓到,方法还待更新...
6. 标识识别和处理
- logo 和 颜色 识别
客户端或者浏览器请求服务器,通过设置 Content-Type 得到返回类型
通常有如下 5 种返回类型:
- 文本
- html
- json 串或 xml
- 图片
- css
请求包的每一行的颜色与 请求类型 和 返回状态值 相关,以下是常见的类型和对应的颜色匹配,可以协助区分。
颜色 | Content-Type | Result |
---|---|---|
蓝色 | text/html; | 返回 200 |
黑色 | text/html 或 text/plain 或 application/json 等; | 返回 302, 返回 200 |
绿色 | application/x-javascript; | 返回 200 |
灰色 | image/jpeg,png等 | 返回 200。显示了 Tunnel to ,包大小为 84 或者 0,左侧图标为锁,表示 https 传输 |
紫色 | text/css; | 返回200,css 文件 |
红色 | 任何类型 | 服务不可达如 404、500、504 等错误码时 |
灰色、黑色、绿色、蓝色、紫色的请求,都有可能是 200 的返回值类型
7. AutoResponder & Mock
自动回复其实可以理解为一个 mock 服务,将请求服务器拦截到本地,采用本地的返回值进行返回。此方法主要用于本地接口调试。
8. 命令行
9. 断点调试
参考
http://blog.csdn.net/ohmygirl/article/details/17855031
to be continued...