赞
踩
一、Fiddler
最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、甚至修改输入输出数据。
1-fiddler是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求,会先经过fiddler,然后在到服务器;
2-当服务器有返回数据给浏览器显示时,也会先经过fiddler,然后数据才到浏览器中显示,这样一个过程,fiddler就抓取到了请求和响应的整个过程。
二、Fiddler界面
三、Fiddler抓包解析
1.使用Fiddler抓包后,会话列表面板
Result : HTTP响应的状态
Protocol:请求使用的协议
HOST:请求地址的域名 URL
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按钮, 把请求发送到服务器端。操作如下图所示
log: 打印日志
Filters
过滤器可以对左侧的数据流列表进行过滤, 我们可以标记、 修改或隐藏某些特征的数据流。
四、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
五、Fiddler应用
1.手机抓包
①启动Fiddler, 打开菜单栏中的 Tools > Fiddler Options, 打开“FiddlerOptions” 对话框
②在“Fiddler Options”对话框切换到“Connections” 选项卡, 然后勾选“Allowromote computers to connect” 后面的复选框, 然后点击“OK” 按钮
③在本机命令行输入: ipconfig, 找到本机的ip地址。
④打开android设备的“设置” ->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”(不同的手机,设置方法有所不同)
⑤在“代理” 后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888, 然后点击“保存” 按钮
⑥然后启动android设备中的浏览器,访问百度的首页,在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”标记过滤到的域名
3.拦截HTTP请求
使用Fiddler进行HTTP断点调试是fiddler一强大和实用的工具之一。通过设置断点,Fiddler可以做到:
①修改HTTP请求头信息。例如修改请求头的UA,Cookie,Referer信息,通过“伪造”相应信息达到相应的目的(调试,模拟用户真实请求等)。
②构造请求数据,突破表单的限制,随意提交数据。避免页面js和表单限制影响相关调试。
③拦截响应数据,修改响应实体。
设置断点共有两种方式:
①fiddler菜单栏->rules->automatic Breakpoints->选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效。有两个断点位置:
1)before response。也就是发送请求之后,但是Fiddler代理中转之前,这时可以修改请求的数据。
2)after response。也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。
3)如何消除命令呢?点击Rules->Automatic Breakpoint->Disabled
如下图所示:
②命令行设置断点
1)bpu在请求开始时中断
2)bpafter在响应到达时中断
3)bps中断HTTP响应状态为指定字符的全部session响应
4)bpv/bpm中断指定请求方式的全部session响应
示例一:
命令行输入:bpm www.baidu.cm(拦截www.baidu.com请求)
解除拦截:输入命令:bpu
示意图如下所示:
示例二:
命令行输入:bpuafter www.baidu.cm(拦截www.baidu.cm返回值)
解除拦截:输入命令:bpuafter
示意图如下所示:
结合实际操作,打开fiddler,去拦截提那个接口,设置成:rules->automatic Breakpoints->before response,在页面上提交订单,拦截效果如下所示,页面中一直在加载,点击run to comletion放行拦截
4.修改数据
拦截HTTP请求后修改方式有两种,一种是临时修改,即结果只对当次请求有效,另一种是永久修改,可以通过urlreplace命令实现。
①临时修改请求
即在fiddler中执行Inspectors->WebForms,修改请求变量参数后执行Run to Completion,服务器返回新的请求结果
②永久性修改请求
1)命令行设置修改规则,修改请求:urlreplace 旧请求值 新请求值
fiddler命令行输入:urlreplace uuid=103 uuid=105
其中uuid是请求参数,输入命令后回车即可,新的请求设置成功,除非释放请求,否则请求值不变,释放请求命令urlreplace
2)脚本中修改规则,打开脚本方式:fiddler执行Rules->Customize Rules
备注:本文转载温一壶清酒
https://www.cnblogs.com/hong-fithing/p/7582947.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。