简析Fiddler抓包工具

Fiddler介绍

  Fiddler是一款比较强大的web页面调试工具,用来记录客户端到服务器之间的请求,包括http请求,跟https请求,会把请求整个过程全部记录下来,而且允许你监视、设置断点、甚至修改输入输出数据,比如修改某个请求返回,使其返回你给定的结果。当我们进行一些接口测试缺不知道接口的一些信息,像接口request header,url,请求方式等,我们都可以通过Fiddler工具获取到。

Fiddler工作原理

  Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888

  代理服务器定义: Web 代理(Proxy Server)服务器是网络的中间实体。
              代理位于 Web  客户端和 Web 服 务器之间,扮演“中间人”的角色。
              HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。

  注意事项:Fiddler 在启动的时候,会偷偷把Internet 选项中代理服务器改成127.0.0.1,端口8888,Fiddler正常退出时会自动取消代理,如果Fiddler非正常退出时,代理没有取消就会影响其他程序的访问,所以在使用完Fiddler一定要正常将其退出。如下图,点击File-Exit正常退出。

 

 关于Fiddler抓包

  首先我们要了解Fiddler界面上都包含哪些内容,如下图,主要分为四个区域,分别是会话列表,命令行,http请求信息,http返回信息

 

1.使用Fiddler抓包后,会话列表面板如下图所示:

 

抓包工具面板功能

# :HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。

Result : HTTP响应的状态 Protocol:请求使用的协议(如HTTP/HTTPS)

HOST:请求地址的域名 URL:请求的服务器路径和文件名,也包含GET参数

BODY:请求的大小,以byte为单位

Content-Type:请求响应的类型

Caching:请求的缓存过期时间或缓存控制header的值

Process:发出此请求的Windows进程及进程ID

Comments :用户通过脚本或者菜单给此session增加的备注

custom:用户可以通过脚本设置的自定义值 

2.Fiddler右边面板介绍

Statistics页签

通过该页签, 用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。选择第一个请求和最后一个请求, 可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多, 从而对页面的访问进行访问速度优化

inspectors页签

它提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息,它分为上下两部分:上部分为HTTP Request(请求)展示,下部分为HTTPResponse(响应)展示

AutoResponse页签

Fiddler最实用的功能, 它可以抓取在线页面保存到本地进行调试, 大大减少了在线调试的困难, 可以让我们修改服务器端返回的数据, 例如让返回都是HTTP404或者读取本地文件作为返回内容。

可设置打开某网页显示自己想要的内容,比如抓取百度链接,点击add rule,设置如下所示:

到百度页面刷新即可显示该图片

composer页签

支持手动构建和发送HTTP, HTTPS和FTP请求, 我们还可以从web session列表中拖曳session, 把它放到composer选项卡中, 当我们点击Execute按钮, 把请求发送到服务器端。操作如下图所示:

这样设置发送的请求,就不是浏览器发出的了,而是fiddler发出的,查看inspectors里面的信息便可看出

log页签: 打印日志

Filters页签

过滤器可以对左侧的数据流列表进行过滤, 我们可以标记、 修改或隐藏某些特征的数据流。

Timeline页签

时间轴,也称为Fiddler的瀑布图,展示网络请求时间的功能。 每个网络请求都会经历域名解析、建立连接、发送请求、接受数据等阶段。把多个请求以时间作为 X 轴, 用图表的形式展现出来, 就形成了瀑布图。 在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间

五、Fiddler命令行工具

Fiddler的左下角有一个命令行工具叫做QuickExec,允许你直接输入命令。

常见得命令有:

help : 打开官方的使用页面介绍, 所有的命令都会列出来

cls : 清屏 (Ctrl+x 也可以清屏)

select : 选择会话的命令, 选择所有相应类型select image、select css、select html

?sometext : 查找字符串并高亮显示查找到的会话列表的条目,?qq.com

>size : 选择请求响应大小小于size字节的会话

=status/=method/@host:查找状态、方法、主机相对应的session会话,=504,=get,@www.qq.com

quit:退出fiddler

 

Bpafter,Bps, bpv, bpm, bpu这几个命令主要用于批量设置断点

Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应

Bps xxx:中断 HTTP 响应状态为指定字符的全部 session 响应。

Bpv xxx:中断指定请求方式的全部 session 响应

Bpm xxx:中断指定请求方式的全部 session 响应,等同于bpv xxx

Bpu xxx:与bpafter类似。

六、Fiddler应用

1.手机抓包

①启动Fiddler, 打开菜单栏中的 Tools > Fiddler Options, 打开“FiddlerOptions” 对话框

②在“Fiddler Options”对话框切换到“Connections” 选项卡, 然后勾选“Allowromote computers to connect” 后面的复选框, 然后点击“OK” 按钮

③在本机命令行输入: ipconfig, 找到本机的ip地址。

④打开android设备的“设置” ->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”(不同的手机,设置方法有所不同)

⑤在“代理” 后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888, 然后点击“保存” 按钮

⑥然后启动android设备中的浏览器,访问百度的首页,在fiddler中可以看到完成的请求和响应数据

 

备注: 如果是Android模拟器中ip要填写10.0.2.2,genymotion模拟器中ip要填写:10.0.3.2,手机实机中ip填电脑的ip,端口就是burp或者fiddler监听的端口 ,要处于同一网络下

2.过滤功能

①选择Filters页签,勾选use Filters勾选 Request Headers 中的 Hide if url contains 过滤项

②在里面输入:REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$

REGEX: 表示启用正则表达式(?insx) 设置正则解释的规则,忽略大小写等。

此表达式表示过滤掉 url 中包括 css、ico、jpg 等后缀的请求

③勾选 Request Headers中的show only if URL contains,在里面输入

REGEX:(?insx).*\.?baidu.com/home.* 只显示: baidu.com/Home

 

Fiddler过滤指定域名

第二个选项是只监控以下网址,如只监控百度,在下面的输入框里填上www.baidu.com

“No Host Filter”不设置hosts过滤

“Hide The Following Hosts”隐藏过滤到的域名

“Show Only The Following Hosts”只显示过滤到的域名

“Flag The Following Hosts”标记过滤到的域名

 

 转载:

http://www.cnblogs.com/hong-fithing/

 

 

 

 

 

原文地址:https://www.cnblogs.com/taider/p/13640403.html