1.为什么是Fiddler?
抓包工具有很多,小到最常用的web
调试工具firebug
,大到通用的强大的抓包工具wireshark
.为什么使用fiddler
?原因如下:
a. Firebug
虽然可以抓包,但是对于分析http
请求的详细信息,不够强大。模拟http
请求的功能也不够,且firebug
常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。
b. Wireshark
是通用的抓包工具,但是比较庞大,对于只需要抓取http
请求的应用来说,似乎有些大材小用。
c. Httpwatch
也是比较常用的http
抓包工具,但是只支持IE
和firefox
浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome
浏览器的http
请求,似乎稍显无力。
而Fiddler2
是一个使用本地 127.0.0.1:8888
的 HTTP
代理,任何能够设置 HTTP
代理为 127.0.0.1:8888
的浏览器和应用程序都可以使用 Fiddler
。
2.什么是Fiddler?
Fiddler
是位于客户端和服务器端的HTTP
代理,也是目前最常用的http
抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP
请求,可以针对特定的HTTP
请求,分析请求数据、设置断点、调试web
应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web
调试的利器。
既然是代理
,也就是说:客户端的所有请求都要先经过Fiddler
,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler
然后发送到客户端,基于这个原因,Fiddler
支持所有可以设置http
代理为127.0.0.1:8888
的浏览器和应用程序。使用了Fiddler
之后,web
客户端和服务器的请求如下所示:
3.Fiddler使用界面简介
Fiddler主界面的布局如下:
主界面中主要包括四个常用的块:
Fiddler的
菜单栏
,上图红色
部分。包括捕获http
请求,停止捕获请求,保存http
请求,载入本地session、设置捕获规则等功能。Fiddler的
工具栏
,上图黄色
部分。包括Fiddler
针对当前view
的操作(暂停
,清除session
,decode模式
、清除缓存
等)。web Session
面板,上图蓝色区域,主要是Fiddler
抓取到的每条http
请求(每一条称为一个session
),主要包含了请求的url,协议,状态码,body等信息,详细的字段含义如下所示:
标签 | 作用 |
---|---|
# | HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。 |
Result | HTTP响应的状态,可以参考这里 |
Protocol | 请求使用的协议(如HTTP/HTPPS/FTP) |
Host | 请求地址的域名 |
URL | 请求的服务器路径和文件名,也包括GET参数 |
BODY | 请求的大小,以byte为单位 |
Caching | 请求的缓存过期时间或缓存控制 header等值 |
Content-Type | 请求响应的类型(Content-Type) |
Process | 发出此请求的Windows进程及进程ID |
Comments | 用户通过脚本或者右键菜单给此session增加的备注 |
Custom | 用户可以通过脚本设置的自定义值 |
- 详情和数据统计面板。针对每条http请求的具体统计(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)和数据包分析。如
inspector
面板下,提供headers
、textview
、hexview
,Raw
等多种方式查看单条http
请求的请求报文的信息。
4.利用fiddler获取app访问信息
步骤详情
4.1 配置Fiddler环境
启动Fiddler
,开始设置。
点击“Tools-->Options
”
设置HTTPS选项。在设置过程中会有弹框,请允许。
设置connect选项,记住代理端口号,后面会使用。在设置过程中会有弹框,请允许。设置完之后记得一定要重启Fiddler软件,不然不能使用。
通过ipconfig查看PC的IP地址。(快捷键“win+r”,输入cmd,弹出黑框,然后输入ipconfig)。我的IP地址为192.168.1.9,需要记下
设置手机端。所有的Android机应该都可以长按wlan图标,然后进入网络连接,在连接详情里面设置代理。代理的主机名为上面查到的ip地址,比如我的为192.168.1.9,端口为connect是设置的,默认为8888。图片是华为p20截图。
然后手机端访问"192.168.1.9:8888"(你自己的ip地址和端口号),如果出现响应页面说明成功。
4.2 过滤url
fiddler
抓手机app
的请求,现在已经可以愉快的玩耍了,但是如何只抓来自app
的请求呢?
把来自pc
的请求过滤掉,因为请求太多,这样会找不到重要的信息了。
抓APP上的HTTPS
请求
如果
app
都是http
请求,是不需要安装证书,能直接抓到的,如果是https
请求,这时候手机就需要下载证书了。打开手机浏览器输入:
http://192.168.1.9:8888
,这个中间的host地址就是前面查到的本机地址。出现如上画面,点箭头所指的位置,点击安装就可以了。
- 查看HTTPS
打开fiddler,Tools——>Fiddler Options…
,切换到HTTPS
选项卡,把选项都勾选上,点击保存,就可以查看HTTPS接口了。
设置过滤
- 手机上设置代理后,这时候
fiddler
上抓到的是pc
和app
所有的请求,如果pc
上打开网址,会很多,这时候就需要开启过滤功能了。
2.打开fiddler>Tools>Fiddler Options>HTTPS>...from remote clients only
,勾选这个选项就可以了
...from all processes
:抓所有的请求
...from browsers only
:只抓浏览器的请求
...from non-browsers only
:只抓非浏览器的请求
...from remote clients only
:只抓远程客户端请求
注意:如果手机设置代理后,测试完之后记得恢复原样,要不然手机无法正常上网。