ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Fiddler 学习

2022-03-09 07:32:32  阅读:186  来源: 互联网

标签:Fiddler HTTP 请求 会话 学习 响应 回话


一、Fiddler简介

Fiddler是最强大最好用的Web调试工具之一, 它能记录所有客户端和服务器的http和https请求。允许你监视、设置断点、甚至修改输入输出数据。Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展。换言之,你对HTTP 协议越了解,你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。

二、Fiddler的工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。 当Fiddler退出的时候它会自动注销, 这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。 解决的办法是重新启动下Fiddler。

个人理解:fiddler是一个抓包工具,当浏览器访问服务器会形成一个请求,此时,fiddler就处于请求之间,当浏览器发送请求,会先经过fiddler,然后在到服务器;当服务器有返回数据给浏览器显示时,也会先经过fiddler,然后数据才到浏览器中显示,这样一个过程,fiddler就抓取到了请求和响应的整个过程。

正常退出方式:

界面:

三、Fiddler六大块详解

1. 菜单栏

File菜单

  1. Capture Traffic:可以控制是否把Fiddler注册为系统代理。
  2. New Viewer:打开一个新的fiddler窗口
  3. Load Archive:用于重新加载之前捕获的以SAZ文件格式保存的数据包。
  4. Save:支持以多种方式把数据包保存到文件中。
  5. Import Sessions...:支持导入从其他工具捕获的数据包,也支持导入以其他格式存储的数据包。
  6. Export Sessions...:把Fiddler捕捉到的回话以多种文件格式保存。
  7. Exit:取消把Fiddler注册为系统代理,并关闭Fiddler。

Edit菜单

  1. Copy:复制会话。
  2. Remove:删除会话。
  3. Select All:选择所有会话。
  4. Undelete:撤销删除会话。
  5. Paste as Session把剪贴板上的内容粘贴成一个或多个模拟的会话。
  6. Mark:选择一种颜色标记选中会话。
  7. Unlock for Editing 解锁会话。
  8. Find Session...打开Find Session窗口,搜索捕获到的数据包。

Rules菜单

  1. Hide Image Request:隐藏图片回话。
  2. Hide CONNECTS:隐藏连接通道回话。
  3. Automatic Breakpoints:自动在[请求前]或[响应后]设置断点。Ignore Image触发器控制这些断点是否作用于图片请求。
  4. Customize Rules...:打开Fiddler脚本编辑窗口。
  5. Require Proxy Authentication:,要求客户端安装证书。该规则可以用于测试HTTP客户端,确保所有未提交Proxy-Authorization请求头的请求会返回HTTP/407响应码。
  6. Apply GZIP Encoding:只要请求包含具有gzip标识的Accept-Encoding请求头,就会对所有响应使用GZIP HTTP进行压缩(图片请求除外)。
  7. Remove All Encoding:删除所有请求和响应的HTTP内容编码和传输编码
  8. Hide 304s:隐藏响应为HTTP/304 Not Modified状态的所有回话。
  9. Request Japanese Content:选项会把所有请求的Accept-Encoding请求头设置或替换为ja标识,表示客户端希望响应以日语形式发送。
  10. User-Agents:把所有请求的User-Agent请求头设置或替换成指定值。
  11. performance:模拟弱网测试速度。

Tools菜单

  1. Options...:打开Fiddler选项窗口。
  2. WinINET Options...打开IE的Internet属性窗口
  3. Clear WinINET Cache:清空IE和其他应用中所使用的WinINET缓存中的所有文件。4、Clear WinINET Cookies:清空IE和其他应用中所发送的WinINET Cookie
  4. TextWizard...:选项会启动TextWizard窗口,对文本进行编码和解码。
  5. Compare Session:比较回话。
  6. Reset Script:重置Fiddler脚本。
  7. Sandbox:打开http://webdbg.com/sandbox/
  8. View IE Cache:打开IE缓存窗口。

View菜单

  1. Show Toolbar:控制Fiddler工具栏是否可见
  2. Default Layout、Stacked Layout、Wide Layout三种界面布局
  3. Minimize to Tray:最小化Fiddler到系统托盘(快捷键:CTRL+M )
  4. Squish Session List:控制回话列表是否水平收缩。
  5. AutoScroll Session list:添加新的回话时,自动滚动到回话列表底部

Help菜单

2. 工具栏详解

  1. 备注功能
  2. 重新发送请求,快捷键:R键。
  3. 删除请求
  4. 当有请求前断点时,点击去发送请求。
  5. 流模式。(默认是缓冲模式)
  6. 解码
  7. 保持回话的数量。
  8. 选择你想要抓包或者监听的程序
  9. 查找
  10. 保存所有会话,文件名以.saz为扩展名
  11. 截图
  12. 计时器
  13. 快捷的打开IE浏览器
  14. 清除IE缓存
  15. 文本的编码解码工具
  16. 分离面板
  17. MSDN查询
  18. 本机的信息

3. Fiddler左侧面板(会话列表)

抓包工具面板功能

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

Result : HTTP响应的状态

Protocol:请求使用的协议(如HTTP/HTTPS)

HOST:请求地址的域名/ip

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

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

Content-Type:请求响应的类型

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

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

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

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

4. Fiddler右侧面板(功能页签)

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

inspectors页签:它提供headers、textview、hexview,Raw等多种方式查看一条http请求的请求和响应,它分为上下两部分:上部分为请求展示,下部分为响应展示。

AutoResponse页签:它可以抓取在线页面保存到本地进行调试,大大减少了在线调试的困难,可以让我们修改服务器端返回的数据,例如让返回都是404的数据包读取本地文件作为返回内容。

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

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

composer页签:支持手动构建和发送HTTP,HTTPS和FTP请求,我们还可以从回话列表中拖曳回话,把它放到composer选项卡中,当我们点击Execute按钮时则把请求发送到服务器端。

FiddlerScripts页签:打开Fiddler脚本编辑。

log页签:打印日志

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

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

5. Fiddler操作命令

Fiddler命令行可以输入命令操作回话列表

help 打开官方的使用页面介绍,所有的命令都会列出来。
cls 清屏 (Ctrl+x 也可以清屏)
select 选择所有相应类型的回话(如select image或select?css)。
?sometext 查找字符串并高亮显示查找到的会话。
>size 选择请求响应大小小于size字节的会话。
=status/=method/@host 查找状态、方法、主机相对应的会话
1uit 退出fiddler
bpafter?xxx 中断URL包含指定字符的全部回话响应
bps?xxx 中断HTTP响应状态为指定字符的全部回话响应。
bpv?xxx 中断指定请求方式的全部回话响应
bpm?xxx 中断指定请求方式的全部回话响应。等同于bpv?xxx
bpu?xxx: 与bpafter类似。

6. 状态栏详解

  1. 显示的Fiddler是否处于捕捉状态(开启/关闭状态),可以点击该区域切换。
  2. 显示当前捕捉哪些进程。
    All Processes 捕获所有进程的请求
    Web Browsers 捕获 Web 浏览器的请求,应该特指 IE
    Non-Browser 捕获非 Web 浏览器的请求
    Hide All 隐藏所有请求
  3. 显示当前断点设置状态,通过鼠标点击切换。有三种:
    不设置断点
    所有请求在断点处被暂停
    所有响应在断点处被暂停
  4. 显示当前共捕获了多少回话(如:300,表示共捕获了300个会话,如:10/300,表示当前选择10个会话,共捕获300个会话)。
  5. 第五区块,描述当前状态。
    如果是刚打开Fiddler,会显示什么时间加载了CustomRules.js;如果选择了一个会话,会显示该会话的URL;如果在命令行输入一个命令,就会显示命令相关信息。

四、Fiddler弱网测试

Fiddler应用-弱网测试

  1. Rules->Customize Rules打开Fiddle脚本编辑器(第二种也可以点击页签:FiddlerScript)。找到如下代码:
    if (m_SimulateModem) {
    // Delay sends by 300ms per KB uploaded. 上行每发送1KB延迟300ms
    oSession["request-trickle-delay"] = "300";
    // Delay receives by 150ms per KB downloaded. 下行每接收1KB延迟150ms
    oSession["response-trickle-delay"] = "150";
    }
    1kByte/s=8kbit/s(一般简写为1kB/s=8kb/s)。
      上传带宽=(1 * 8/1000) /0.300 ≈ 0.027Mbps
      下载带宽=(1 * 8/1000) /0.150 ≈ 0.053Mbps
    修改其中的300ms和150ms用于设置上行和下行的延迟速度。并重启Fiddler使设置生效。
    比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10。
    网络取值的算法就是 1000/速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据。

  2. Rules->Performance->勾上Simulate Modem Speeds开启模拟调制解调器速度。

  3. 通过http://www.speedtest.cn/在线测试网速,看是否生效。访问浏览器查看加载速度。

五、Fiddler抓取移动端抓包

  1. Fiddler设置:菜单栏中选择tools->option,做如下两个设置:

  • 确保防火墙允许Fiddler进程可以远程连接
  1. 重启Fiddler

  2. 保持android(安卓设备)手机和电脑在同一网段

  3. 查看电脑ip,使用"ipconfig"查看

  4. 打开android手机的“设置”->“WLAN”,找到你要连接的无线网络并点击,弹出网络设置对话框,在“代理”处选择“手动”,在“主机名”输入框后面输入查看的主机ip,在“端口”输入框后面输入8888,然后点击“保存”按钮

  5. 在浏览器输入:主机ip:8888,下载所需证书并安装

  6. 启动android设备中的浏览器访问百度首页或打开被测App,在fiddler中可以看到抓取到的数据报文了。

  • 测试完后需要把代理设置关闭,否则会影响上网功能

标签:Fiddler,HTTP,请求,会话,学习,响应,回话
来源: https://www.cnblogs.com/waitCode/p/15983390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有