抓包工具Fiddler

一、抓包工具对比

1、Firebug
    虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。

2、Wireshark
    通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。

3、Httpwatch
    比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。

二、Fiddler介绍

Fiddler是位于客户端服务器端HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求(http、https请求),可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

三、Fiddler工作原理

1、Fiddler以web代理服务器的形式工作,代理地址默认为127.0.0.1,默认端口为8888。它会自动设置代理,退出Fiddler时会自动注销代理,对别的程序不会产生影响。

2、能支持HTTP代理的任意程序的数据包都能被Fiddler捕获到,Fiddler的运行机制其实就是本机上监听8888端口的HTTP代理。

3、如果浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到HTTP请求的

使用FIddler以后,请求响应如下图所示:

四、Fiddler配置

1、打开Fiddler Tool->Fiddler Options->HTTPS 。 (配置完后记得要重启Fiddler).

情况一:选中Decrpt HTTPS traffic, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示,若没有弹出提示,勾选Actions-> Trust Root Certificate

另外,如果你要监听的程序访问的 HTTPS 站点使用的是不可信的证书,则请接着把下面的 Ignore servercertificate errors 勾选上

情况二:选中Decrpt HTTPS traffic, Fiddler就可以截获HTTPS请求,第一次会弹出证书安装提示

点击Yes,留意一下红框里面的内容,DO_NOT_TRUST_FiddlerRoot ,这个就是证书的名称

点击“是”

再点击确定,这样Fiddler证书就已经添加成功了。

查看证书Actions—>open windows certificate Manager

证书已经添加进去了,证书名称就是之前留意的,DO_NOT_TRUST_FiddlerRoot

五、手机端设置

1、设置允许远程连接

2、查询IP

首先查看电脑的 IP 地址,确保手机和电脑在同一个局域网内

cmd ---> ipconfig

3、Android手机配置

(1)手机安装证书

将 Fiddler 代理服务器的证书导到手机上才能抓这些 APP 的包。

导入的过程:打开浏览器,在地址栏中输入代理服务器的 IP 和端口(即电脑的IP加fiddler的端口),会看到一个Fiddler 提供的页面,然后确定安装就好了

下载成功后在设置里面安装,安装步骤:

在手机-->设置-->WLAN-->WLAN 设置-->高级设置-->安装证书-->选中下载的证书文件“FiddlerRoot.cer”,输入手机锁屏密码,进入到证书安装页面,输入证书名称(我输入的是:FiddlerRoot.cer),凭证用途选择:VPN和应用,点击“确定”按钮,系统提示安装成功。

(2)设置手机网络代理

打开手机--设置--Wlan,长按WiFi名称-->选择“修改网络”-->“显示高级选项”-->在接下来显示的页面中,点击“代理”,选择“手动”--填写:代理服务器主机名、代理服务器端口(“代理服务器主机名”是第一步获取的ip,“代理服务器端口”默认的是:8888),并保存

六、Fiddler界面介绍

1、会话列表内容

# --  http request的顺序,从1开始加载
Result -- HTTP响应的状态码
Protocol -- 请求协议
Host -- 请求地址的域名
URL -- 请求数据在服务器中的路径和文件名,包含GET的参数
Body -- 请求的大小,以Byte为单温
Caching -- 请求的缓存的过期时间和header等值
Content-Type -- 请求响应的类型
Process -- 发出请求的进程及ID
Comments -- 用户添加的备注信息
Custom -- 用户设置的自定义值

2、#栏 图标说明

3、右侧栏目说明

(1)statistics

关于HTTP请求的性能和其他数据分析。例如可以看到建立TCP/IP的时间消耗等

(2)Inspectors

提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。

ImageView:JPG 格式使用 ImageView 就可以看到图片。Content-Type是image/jpeg
TextView:HTML/JS/CSS 使用 TextView 可以看到响应的内容。Content-Type是text/html
Raw标签:可以查看响应报文和响应正文,但是不包含请求报文
Auth:可以查看授权Proxy-Authorization 和 Authorization的相关信息
Cookies:可以看到请求的cookie和响应的set-cookie头信息。

(3)AutoResponder

AutoResponder tab允许你从本地返回文件,而不用将http request 发送到服务器上。

AutoResponder功能是Fiddler最实用的功能之一,Rule可以自由地设定,可以使用搜索(默认)、精确匹配(EXACT)、正则表达式匹配(REGEX)。处理方式可以选择使用文件,也可以选择合适的时间暂停数据流(*bpu、*bpafter),人工干预。通过以上几个步骤,我们演示了怎样将HTTP请求重定向到本地的文件,进行调试,这在我们诊断跟踪一些js文件但却不能修改js文件时非常有用。比 如:在用浏览器测试P页面时,P页面引入了一个js资源文件R.js,由于R.js文件在服务器S上,而我此时又不能登录S服务器(没有S服务器的帐 号),此时我们就可以通过浏览器将R.js文件下载到本地,然后对本地的R.js文件进行调整,最后通过设置Fiddler,将R.js文件的请求使用本 地的R.js文件。

(4)Composer

Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求

Parsed模式下你只需要提供简单的URLS地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)

(5)断点请求/响应

三种状态:

空白:不设置断点
箭头向上:断点请求,此时客户端的请求是无法直接到达目标服务器的,需要手动控制
箭头向下:断点响应,此时目标服务器的响应是无法直接到达客户端的,需要手动控制。

断点请求并修改

1. 设置断点请求,访问网页
2. 点击对应的会话
3. 查看请求报文信息
4. 修改请求内容
5. 完成断点,放行,把该请求发送给目标服务器。

Break On Response表示把请求发给服务器,但是服务器的响应被fiddler拦截,此时可以修改响应内容(和断点响应类似)

(6)Filters

我们需要排除其他无用的包,只关注我们指定的域名的请求包。

Fiddler默认是不使用过滤,不会过滤任何请求,要使用过滤,先勾上Use Filters

三种过滤条件

设置好了后一定要点击Actions生效

1. 域名过滤
2. 类型过滤
3. 状态码过滤

①域名过滤

*.baidu.com表示所有的百度二级域名会话
*baidu.com表示一级域名+二级域名的会话

②类型过滤

对于一些不用看的图片,css,js,可以直接过滤掉

 .*\.(bmp|css|js|gif|ico|jp?g|png|swf|woff)

③状态码过滤

只显示指定状态码的会话

七、Fiddler内置命令介绍

此处为Fiddler的命令行

?   后边跟一个字符串,Fiddler 将Protocol、Host 和 URL存在该字符串匹配的全部高亮显示,如?baidu.com
>、<、=   后边跟一个数值,表示高亮显示所有尺寸大于或小于或等于该数值的会话
@  后面跟Host,高亮显示所有改域名的会话
bpafter xxx: 中断 URL 包含指定字符的全部 session 响应
bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应
bpv xxx: 中断指定请求方式的全部 session 响应
bpm xxx: 中断指定请求方式的全部 session 响应。等同于bpv xxx
bpu xxx: 与bpafter类似
cls 或 clear:  清除当前的所有会话
g 或 go:  放行所有中断下来的会话
start: Fiddler 开始工作
stop: Fiddler 停止工作
quit: 关闭 Fiddler
select
select 后边跟响应的类型(Content-Type),表示选中所有匹配的会话
选中 Fiddler 所有的图片,可以使用 select image
select css 则选中所有的 css 文件
select htm 就是选中所有的 html 文件
allbut 或 keeponly
跟 select 类似,不过 allbut 和 keeponly 会将所有无关的会话删除。
!dns: 后边跟一个域名,执行 DNS 查找并在右边的 LOG 栏打印结果:
!listen: 设置其他监听的端口,默认是 8888
02-14 02:32