Fiddler抓包使用简介

news2024/7/6 18:05:40

目录

Fiddler简介

请求抓包

抓取PC端HTTPS请求

抓取移动端请求

请求查看

发送请求

Mock接口

断点调试

弱网模拟

请求重放

修改HOSTS

总结:


Fiddler简介

Fiddler是一款免费的Windows平台的抓包工具,功能强大,使用简单。Fiddler抓包基于中间人代理模式,工作原理如图2.1所示,Fiddler在启动时会自动设置系统代理,Chrome浏览器等程序访问网页或发送HTTP请求时,便会自动经过Fiddler发送给服务端,因此Fiddler中便能查看到所有当前PC发送的所有HTTP请求。

Fiddler主要特点如下:

  • 可以抓到请求数据,查看Raw格式/表单格式/JSON/XML格式.
  • 可以拦截和修改请求.
  • 更强大的过滤器。
  • 可以抓取Postman/接口脚本发送的请求,方便调试。
  • 可以抓包手机请求。

Fiddler主界面
Fiddler的主界面分为菜单栏、工具栏、请求列表、快速命令栏、监控面板及状态栏等,如图2.2所示。

  

Fiddler菜单栏包括File(文件)、Edit(编辑)、Rules(规则)、Tools(工具)、View(显示)及Help(帮助)。
Fiddler工具栏包括WinConfig(Windows配置)、、Replay(重放)、清理、Go(拦截放行)、Stream(流)、Decode(解码)、Keep: All sessions(请求会话保持)、Any Process(抓取进程)、Find(查找)、Save(保存)、、Browse(浏览器选择)及Clear Cache(清除缓存)。
主体区左侧为请求列表,又称会话列表(客户端与服务端的一次交互被称为一次会话过程)。请求列表中使用不同的图标区分不同类型的会话类型,常见的会话类型如表2.1所示。

注:以上表格使用新版Fiddler的会话图标,HTML格式、XML格式、CSS、脚本、图片等图标与老版本略有不同。

请求图标可以帮助我们快速识别各种类型的请求或相应,GET方法的请求根据不同的响应数据类型显示不同的图标,POST等方法按请求方法类型显示对应的图标。对于数据量比较大的请求,会在请求和响应的过程中或显示为上传和下载的图标,当使用断点拦截请求或响应时,上传、下载图标显示为暂停的样式。

请求抓包

抓取请求是Fiddler的主要功能之一,Fiddler在启动时会自动设置系统代理,因此只要打开Fiddler就可以正常抓取当前PC端的HTTP请求。要抓取HTTPS请求或移动端请求则要进行相应的配置。

抓取PC端HTTPS请求

打开浏览器访问https://www.baidu.com/查看Fiddler中抓取的请求,如图2.3所示。

未设置和安装证书时抓取到的HTTPS请求显示为锁型图标的HTTP CONNECT请求,转发到对应网站的443端口。
抓取HTTPS请求需要现在设置中勾选捕获HTTPS连接及解密HTTPS数据。操作方法是,点击菜单栏Tools(工具),选择Options(选项),切换到HTTPS面板,如图2.3所示。

 

如上图,勾选Capture HTTPS CONNECTs(捕获HTTPS连接)、Decrypt HTTPS traffic(解密HTTPS数据)和Ignore server certificate errors(unsafe)(忽略服务端证书错误)。由于我们需要使用Fiddler提供的免费证书,有可能服务端或报证书错误,忽略即可。
安装Fiddler提供的HTTPS证书。安装方法非常简单,启动Fiddler后,打开浏览器,访问http://localhost:8888/,如图2.5所示。

点击页面下方的链接FiddlerRoot certificate,下载完成后双击打开,点击安装证书,一路下一步使用默认选项安装即可,安装结束后会弹出提示导入成功。
重启Fiddler,重新访问https://www.baidu.com/,如图2.6所示。

这时可以抓取到HTTPS类型的请求。点击该请求,右侧点击Inspectors面板,上半部分为请求信息,下半部分为响应信息。木偶人响应信息已编码过,点击Responsebody is encoded.Click to decode.解码查看,选择Raw格式,可以查看到返回的百度网页的源码。

注:如果抓不到包可以检测一下是否勾选了Filter过滤器。

强制关闭Fiddler会导致代理不能正常取消,Fiddler却已关闭,而无法上网的情况。此时重新打开Fiddler,然后正常关闭一次即可自动取消代理。

抓取移动端请求

抓取手机端App发送的HTTP或HTTPS请求,需要手动在手机端设置网络代理为Fiddler代理服务地址,即使手机通过Fiddler代理上网,才能抓取到。
首先手机要与电脑在同一局域网内,比如同一Wi-Fi网络上网。电脑端启动Fiddler(自动启动代理服务,默认端口号为8888),使用ipconfig或ifconfig查看电脑的IP地址,如192.168.1.3,那么Fiddler代理服务的地址即192.168.1.3:8888。
Fiddler中点击菜单栏Tools(工具),选择Options选项,切换到Connections选项卡,勾线Allow remote computers to connect,已允许远程设备连接Fiddler代理服务,如图2.7所示。

 

打开手机设置,找到所连接的Wi-Fi网络,选高级(iPhone手机点击Wi-Fi网络后面的圈i图标),配置代理,选择手动,IP地址和端口号分别配置为电脑IP地址和8888,点击保存(存储),如图2.8所示。

 

使用手机浏览器访问http://电脑IP地址:8888(建议使用手机原生浏览器),会显示Fiddler Echo Service页面,同样点击FiddlerRoot certificate,下载并安装证书。安装完证书后,iPhone手机还需要对证书进行信任,手机设置中点击通用,点击关于本机,点击证书信任设置,设置信任DO_NOT_TRUST_FiddlerRoot证书,返回即可。
此时保持Fiddler打开,使用手机浏览器浏览网站或使用App请求即可,如弹出HTTPS证书不被信任警告,忽略即可。
注:设置完代理有,由于手机需要通过Fiddler代理上网,如果Fiddler关闭手机会连不上网。不抓包时可以在手机设置中把配置代理取消掉。

请求查看

Inspector(检查员)

在Fiddler请求列表中点击相应请求,右侧选择Inspector选项卡,可以查看请求及响应的详细内容,上半部分为请求,下半部分为响应。请求和响应可以使用子选项卡查看不同的内容及格式,对应说明如表格2.2及2.3所示。

一般可以使用Raw查看原始的请求数据,如果是表单类型的请求,可以使用WebForms查看表单类型的数据,如果是JSON或XML格式可以使用对应的子选项卡查看。

HTTP数据一般是经过压缩传输的,Transformer一般使用默认的即可。可以通过Raw来查看原始响应数据或按照相应的数据类型选择对应的格式查看。
2.2.3 过滤请求
Filters(过滤器)

当请求较多时,使用Filters组件可以帮我们快速过滤出指定的请求。要启用过滤器,首先要右侧Filters选项卡中勾选Use Filters,如图2.9所示。

 

Fiddler支持的过滤方式如下:

  • Hosts:按服务器过滤。
  • Clients Process:按客户端程序过滤。
  • Request Headers:按请求头过滤。
  • Breakpoints:设置断点。
  • Response Status Code:按状态码过滤。
  • Response Type and Size:按响应类型及大学过滤。
  • Response Headers:按响应头过滤。

例如,可以在Hosts段第二个下拉框选择Show only the following Hosts,在下面的文本框中设置要显示域名,以分号分开,如www.baidu.com;www.163.com,就可以只显示发往这两个域名的请求。

注:启用关闭过滤器有时需要重启后方能生效。

发送请求

Composer(调试器)

Fiddler的Composer选项卡可以用来发送和调试请求,如图2.10所示。

 
Composer可以用于发送HTTP请求,功能比较简单,表单格式数据需要自己进行URL编码,填写完成后点击Execute发送即可。请求会以会话的形式显示在请求列表中,同事History历史记录中会有响应的记录。

Mock接口

AutoResponder(自动响应)

Fiddler的Anto Reponder选项卡可以根据一定的规则对匹配到的请求进行自动响应或转向其他的接口或文件。如图2.11所示。

 

勾选Enable rules启用匹配规则,勾选Unmatched requests passthrough对未匹配到的请求正常放行。

断点调试

当我们需要详细抓取并调试某个接口的数据时,可以使用Fiddler的断点调试功能。Fiddler的断点调试设置方式有两处,一是Filter过滤器中对指定特征的请求自动进行断点拦截,另一种是对所有请求设置断点,设置方式为:菜单Rules -> Automatic Breakpoints -> Before Requests/After Responses。断点分为两种方式,一种是Before Requests请求前拦截,即请求未发送到服务器之前拦截。一种是After Responses,服务端响应未送达客户端时拦截,一般我们使用第一种,如图2.12,被断点拦截的请求会显示为暂停图标。此时可以在Inspector中修改其数据,然后点击Go按钮,使用修改后的数据完成请求。

注:如果线上环境中不希望请求数据(如提交订单或支付信息)真实发送到服务器,同时又需要对请求进行抓包,也可以使用断点功能。

弱网模拟

弱网模拟是App测试中一个常用测试项。Fiddler菜单中的弱网模拟功能,只有模拟非常慢的模拟Modem调制解调器上网速度一个选项,设置方式为Rules ->Performance->Simulate Modem Speeds。
更精确的网速控制需要通过Fiddler Script实现。

请求重放

Fiddler支持对抓取到的请求进行重放。操作方法为在请求列表区域,指定请求上,点击右键,选择Replay,选择Replay Sequencely,输入要重放的次数即可。

修改HOSTS

在Fiddler中还可以快速修改HOSTS配置,操作方法为点击惨淡Tools -> HOSTS,设置保存即可。

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

   Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SCI征稿】老牌期刊2023年上涨质量高!中科院2/1区(TOP),国人发文友好!

您有一个评职称弯道超车的机会? 因为本期小编要推荐一本中科院2/1区(TOP)期刊,期刊质量不论是评职晋升求职毕业都是首选的好刊!究竟怎么回事?且看下文: 期刊简介: 影响因子&#…

传感器信息系统中的节能收集(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

消息队列——spring和springboot整合rabbitmq

目录 spring整合rabbitmq——生产者 rabbitmq配置文件信息 倒入生产者工程的相关代码 简单工作模式 spring整合rabbitmq——消费者 spring整合rabbitmq——配置详解 SpringBoot整合RabbitMQ——生产者 SpringBoot整合RabbitMQ——消费者 spring整合rabbitmq——生产者 使…

分布式应用之存储(Ceph)

分布式应用之存储(Ceph) 一、数据存储类型 存储类型说明典型代表块存储一对一,只能被一个主机挂载使用数据以块为单位进行存储硬盘文件存储一对多,能同时被多个主机挂载/传输使用,数据以文件的形式存储(元数据和实际…

Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)

1、 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行。所以本章节的知识宏哥希望小伙伴们多动手去操作和实战,不要仅仅只是书本上的知识,毕竟这个我只能够举例…

AtcoderABC301场

A - Order Something Else A - Order Something Else 题目大意 计算 Takahashi 最少需要支付多少钱才能获得 AtCoder Drink。AtCoder Drink 可以按照原价 P 日元购买,也可以使用折扣券以 Q 日元的价格购买,但必须再额外购买 N 道菜品中的一道才能使用折…

Navicat代码片段存储位置

1、在Navicat的主界面中,选择“工具”——》“选项”——》文件位置,如下图 配置文件就是存放自动保存、代码片段等文件的位置,其中snippets(片段)就是自定义片段的存储位置了

【Android】在某个model中找不到自己的R资源的原因

背景 在某个新建的model为lib包的时候,我想在这个model内的activity引用R.string 等等资源,但是Android studio找不到。 解决 原来我之前误删了这个manifest中的 补齐包名即可。

Triton_server部署学习笔记

下载镜像 docker pill http://nvcr.io/nvidia/tritonserver:22.07-py3 docker run --gpus all -itd -p8000:8000 -p8001:8001 -p8002:8002 -v /home/ai-developer/server/docs/examples/model_repository/:/models nvcr.io/nvidia/tritonserver:22.07-py3 docker exec -it a5…

使用shell监控应用运行状态通过企业微信接收监控通知

目的:编写shell脚本来监控应用服务运行状态,若是应用异常则自动重启应用通过企业微信接收监控告警通知 知识要点: 使用shell脚本监控应用服务使用shell脚本自动恢复异常服务通过企业微信通知接收监控结果shell脚本使用数组知识,…

[黑苹果EFI]Lenovo ThinkPad T490电脑 Hackintosh 黑苹果引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板Lenovo ThinkPad T490 处理器Intel Intel Core i5 8265U (Quad Core)已驱动 内存16 GB:8 GB Samsung DDR 4 2666 Mhz *2已驱动 硬盘PC SN520 NVM…

maven项目使用java命令行运行类的main方式示例

因为需要测试一个东西,本地测试无问题,测试环境一直有问题,就想在测试环境测试下 直接写了个测试类,main方法直接运行测试逻辑 测试类写好,发现自己不会使用命令行运行 运行测试类一直报"错误: 找不到或无法加载主类" 折腾好久,终于找到两个帖子 记录下来,避免自己下…

Docker容器常用命令大全:熟练掌握使容器优化更加高效

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

mysql查询当天/昨天/近7天/近30天/本月/上个月/本季度/上季度/本年/上一年 数据

查询当天数据 select * from tab where FROM_UNIXTIME(fabutime, %Y%m%d) 20230717; mysql TO_DAYS(date) 函数 TO_DAYS(date) 给定一个日期date, 返回一个天数 (从年份0开始的天数 )。 mysql> SELECT TO_DAYS(950501); -> 728779 mysql查询今天、昨天、7天、近30天…

【Linux后端服务器开发】TCP协议

目录 一、TCP报头结构 二、确认应答机制 三、超时重传机制 四、连接管理机制 五、滑动窗口 六、拥塞控制 七、应答策略 一、TCP报头结构 TCP全称为传输控制协议(Transmission Control Protocol),数据在传输过程需要严格的控制 TCP协议…

CONNECT BY 介绍以及用法

CONNECT BY 介绍以及用法 CONNECT BY作用是,NNECT BY用来查询树形数据, CONNECT BY 语句的用法 语句格式: start with 条件A connect by prior orgid parentorgid 用法 情况1: start with 条件A connect by…

【树链】CF1702 G

Problem - G2 - Codeforces 题意: 思路: 首先,一条树链可以被分为两部分:左半部分和右半部分 我们可以把所有可能是链上的点排序,把深度最大的点默认成起点st,接下来去找终点ed ed在和st不同的链上 且 …

MSA【1】:Segment Anything Model for Medical Image Analysis: an Experimental Study

文章目录 前言1. Abstraction & Introduction1.1. Abstraction1.2. Introduction1.2.1. What is SAM?1.2.2. How to segment medical images with SAM? 2. Methodology2.1. SAM is used in the process of segmentation of medical images2.1.1. Semi-automated annotati…

【压力传感器】LPS22DFTR、LPS33KTR 绝对 压力,ADP5131 排气式压力计 50kPa 6-DIP

LPS22DFTR MEMS纳米压力传感器是一款超紧凑型压阻式绝对压力传感器,可用作数字输出气压计。LPS22DF的功耗更低,与上一代产品相比压力噪声更低。该器件包括一个传感元件和一个IC接口,通过I2C、MIPI I3CSM或SPI接口从传感元件向应用程序进行通信…

蒙德里安的梦想

题目 求把 NM 的棋盘分割成若干个 12 的长方形,有多少种方案。 例如当 N2,M4 时,共有 5 种方案。当 N2,M3 时,共有 3 种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行&…