当前位置: 首页 > news >正文

怎么通过Fiddler对APP进行抓包?以及高级应用场景分析

前言

我们经常需要用到Fiddler做代理服务器对Web、APP应用进行抓包,以便我们对接口功能进行测试调试,定位问题等。这篇将讲述怎么通过Fiddler对APP进行抓包,以及简单介绍一些高级应用场景。

首先,附上Fiddler使用的环境配置清单:

  • windows 7
  • Fiddler v5.0.20194.41348 

简单说下Fiddler的抓包原理:

由Fiddler作为代理服务器,手机发起的请求通过该代理器进行中转,从而fiddler记录下请求的通信数据信息。来一个形象的比喻:原来直连两端(服务器和APP端)的一根水管,现在中间多加了一个水箱(fiddler),水流通过水箱并记录下了水流的信息。(思考下:如果是直连两端的两根循环水管,我们中间都接上水箱可以做哪些操作?)

使用fiddler代理远程捕获APP请求

步骤一:在菜单栏(路径:Tools -> Fiddler Options)中找到代理设置,因为我的 8888 端口已经被其它服务占用,所以这里设置代理端口为 7788 。(注意:需要重启fiddler,代理设置才生效)

(注意:在windows下可以通过命令  netstat -ano|findstr 8888  查看 8888 端口是否被占用)

步骤二、查看自己本机的IP,这里有两种方式:

方式一:把鼠标移动到Fiddler右上角的 Online 图标上,即可获得本机IP信息。(推荐使用这种)

方式二:可以在cmd命令窗口中输入ipconfig获得(linux下输入ifconfig)。

步骤三、在手机中,找到与电脑所处同一局域网的WiFi并连接(可以不同网段,但需要在同一个局域网内),然后在手机中设置代理(通常路径: 手机 设置->WLAN-> 长按 当前连接的网络->修改网络-> 显示高级选项 中代理把 无 改为 手动)。输入代理服务的IP(即fiddler安装所在PC的IP),端口(即fiddler中设置的监听端口,如上面设置的7788)。这样以后,我们就可以监控到APP所有请求了。

步骤四、让我们随便在手机上打开一个应用(如日历),看看Fiddler的抓包结果

Fiddler高级应用场景介绍

1、url地址重写

URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。如通过URL地址重写,所有原先发到a.com的HTTP Request , Fiddler都帮你转发到b.com ,而在浏览器中毫无感觉。 测试debug过程中常有这种需求。(注意,这里的a.com和b.com是请求URL包含的域名,也可以是IP)

替换的方法有两种,一种是暂时的,一种是永久的。

方式一、暂时的方法是在Fiddler 左下角 QuickExec 命令行 (用户可以直接输入并快速执行脚本命令) 输入:

<span style="color:#333333"><span style="background-color:#f5f5f5">urlreplace a.com b.com</span></span>

如上图,输入后按下Enter ,所有原先发到a.com 的HTTP Request 就转发到b.com了。

要清除转发,请在同一位置输入:

<span style="color:#333333"><span style="background-color:#f5f5f5">urlreplace</span></span>

按下 Enter  键就可以了。

2)也可以到「FiddlerScript 」直接编辑CustomRules.js(永久性的)。

注:CustomRules.js可以在菜单栏(Rules-> Customize Rules)中打开;在Fiddler5.0以上版本,可以直接通过右侧 FiddlerScripts 进行编辑。

请先在CustomRules.js 找到:

<span style="color:#333333"><span style="background-color:#f5f5f5">  static function OnBeforeRequest ( oSession : Session ) {// ...}</span></span>

在函式OnBeforeRequest 中加入:

<span style="color:#333333"><span style="background-color:#f5f5f5">  if ( oSession . HostnameIs ( 'a.com' ) )oSession . hostname = 'b.com' ;</span></span>

将CustomRules.js 存档, Fiddler 会自动重新载入CustomRules.js ,原先发到a.com 的HTTP Request 就会自动转发到b.com 。

2、HTTP请求,响应断点调试

断点命令介绍:

  • bpu 在请求开始时中断
  • bpafter 在响应到达时中断
  • bps 在特定http状态码时中断
  • bpv/bpm 在特定请求method时中断

当这些命令没有加参数时,会清空所有设置了断点的HTTP请求。

提示:在命令行输入 help,回车执行会打开一页面详细介绍fiddler的所有命令。

也可以在菜单栏(Rules-> Automatic Breakpoint ->Before Requests)设置断点,是针对所有的会话请求,不大实用,建议用命令。

以 bpu 为例演示断点功能:

在Fiddler命令行输入区输入“bpu”回车执行清掉原有的断点,然后输入

​
<span style="color:#333333"><span style="background-color:#f5f5f5">bpu http://api.justbon.com/app/login.htm</span></span>​

回车执行,接下来就会中断该URL(http://api.justbon.com/app/login.htm)中包含此地址的请求。

点击会话列表中被中断的会话,依次进入Inspectors-->TextView。此时请求并未发出,p参数即为输入密码,我们发现输入错了,可以修改为正确的密码,然后点击“Run to Completion”按钮完成后续请求。(注:在这里实现修改了请求数据,其它的post数据,甚至是headers里的cookie、referer、user-agent等都可以修改)

如果点击“Break on Response”:即返回响应内容时,fiddler再次中断,响应内容已经回到本机,但是还在fiddler代理这里,还没有到浏览器(APP)。

同样,bpafter 某一url 后,可以在断点时,修改返回结果(在上图 Run to Completion 按钮下的TextView 或 Raw 等tab页中进行修改),然后然后点击“Run to Completion”按钮完成后续结果返回。

小贴士:instpectors 主要是对请求和响应进行查看和分享,监听请求的响应内容。他有多个分页标签。界面分上下两部分,上面部分显示请求的相关信息;下面部分显示响应相关信息。

3、右侧功能简介

Statistics 统计请求和响应的一些信息。可以使用statistics,完成简单的性能测试。查看其接口的响应时间。

AutoResponder,就是针对一些匹配的请求,让请求者得到的我们指定的数据,而不是服务端返回的真实数据。可以直接从左侧会话面板直接拖拉会话到这个面板。

Composer 用户可以手动设定需要执行的请求(可以通过左侧的拖拽一个先前捕获到的请求到Composer,然后根据需要进行修改后,再点击“Execute”按钮手动执行该请求);

filter 选项页中,用户可以根据自己的需求设定过滤器,这样左侧列表只显示满足用户设定条件的请求;

Timeline 中查看到对应url具体执行的响应时长。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

相关文章:

怎么通过Fiddler对APP进行抓包?以及高级应用场景分析

前言 我们经常需要用到Fiddler做代理服务器对Web、APP应用进行抓包&#xff0c;以便我们对接口功能进行测试调试&#xff0c;定位问题等。这篇将讲述怎么通过Fiddler对APP进行抓包&#xff0c;以及简单介绍一些高级应用场景。 首先&#xff0c;附上Fiddler使用的环境配置清单…...

centos下安装配置redis7

1、找个目录下载安装包 sudo wget https://download.redis.io/release/redis-7.0.0.tar.gz 2、将tar.gz包解压至指定目录下 sudo mkdir /home/redis sudo tar -zxvf redis-7.0.0.tar.gz -C /home/redis 3、安装gcc-c yum install gcc-c 4、切换到redis-7.0.0目录下 5、修改…...

【angular】TodoList小项目(已开源)

参考&#xff1a;https://segmentfault.com/a/1190000013519099 文章目录 准备工作headerTodo、Doing、Done样式&#xff08;HTMLCSS&#xff09;功能&#xff08;TS&#xff09;将输入框内容加入todoList&#xff08;addTodo&#xff09;将todo事件改到doing 服务 参考开源 效…...

【Java 进阶篇】HTML块级元素详解

HTML&#xff08;Hypertext Markup Language&#xff09;是用于创建网页的标记语言。在HTML中&#xff0c;元素被分为块级元素和内联元素两种主要类型。块级元素通常用于构建网页的结构&#xff0c;而内联元素则嵌套在块级元素内&#xff0c;用于添加文本和其他内容。本文将重点…...

CSS设置鼠标样式和添加视频样式

鼠标的样式 <div style"cursor: default">默认鼠标的样式</div><div style"cursor: pointer">小手样式</div><div style"cursor: move">移动样式</div><div style"cursor: text">文本样式&…...

项目文件上传到行云codeup teambition

接手公司好几年的老项目&#xff0c;在行云上已经有1.9G的大小所以被限制上传了 只有花钱扩容或者重新建库。 1.重新建库&#xff1a;登录你的行云账户在代码库中新建代码库&#xff08;网上有详细的&#xff09; 创建成功后的库中只有readme文件。 2.复制代码库的下载地址 …...

现货黄金和实物黄金有什么区别?

在黄金投资市场中&#xff0c;现货黄金和实物黄金都是两种比较受欢迎的黄金投资品种。想想越来越多人认识到黄金投资的重要性&#xff0c;那么要选择一个投资品种&#xff0c;应该选哪个黄金投资品种呢&#xff1f;下面我们就来讨论一下这两者有何区别&#xff0c;以及投资者应…...

/dev下没有video0这个文件(ubuntu无法打开摄像头)

文章目录 硬件问题一、查看虚拟机摄像头连接情况二、解决红色报错三、虚拟机硬件处理内容问题一、设备号二、视频格式问题硬件问题 一、查看虚拟机摄像头连接情况 报错详情 ERROR: cannot launch node of type [image_view/image_view]: image_view ROS path [0]=/opt/ros/m…...

mysql面试题32:MySQL数据库服务器性能分析的方法命令有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL数据库服务器性能分析的方法命令有哪些? MySQL数据库服务器性能分析的方法和命令有以下几种: EXPLAIN命令:用于分析查询语句的执行计划,…...

伦敦银最新价格能进吗?

不少新手的伦敦银投资者由于看不懂行情走势&#xff0c;在行情机会来临时总感觉患得患失&#xff0c;但由于又十分渴望在这个市场上实现收益&#xff0c;所以经常通过各种各样的方式方法和手段&#xff0c;希望行情走势什么时候会出现进场的机会。 可以肯定的是&#xff0c;伦敦…...

【计算机毕设案例推荐】洋州影院购票管理系统SpringBoot+Vue

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot的洋州影院购票管理系统 技术栈 SpringBootVueMySQLMaven 文章目录 一、洋州…...

Java设计模式之模板方法模式

模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一个算法骨架&#xff0c;将一些步骤的具体实现延迟到子类中。模板方法模式通过将共同的代码逻辑放在父类中&#xff0c;而将具体的实现细节留给子类来实现&#xff0c;从…...

MinIO的安装与使用

文章目录 1.MINIO是什么&#xff1f;2.MINIO安装3.启动脚本4.打开MINIO页面5.MC命令6.MINIO备份脚本 1.MINIO是什么&#xff1f; MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 MinIO与…...

“==”和equals的区别

总结几句话&#xff1a; 双等号始终是 1.基本数据类型&#xff1a;比较存储的值是否相等。 2.引用数据类型&#xff1a;比较所指对象的地址值是否相等。 equals 1.没有被重写过&#xff1a; 相当于&#xff1b;但是不能比较基本数据类型&#xff0c;比较的是引用对象的所指…...

QT - 对话框去掉标题栏问号

要去掉 Qt 对话框的标题栏上的问号图标&#xff0c;你可以使用 Qt::CustomizeWindowHint 标志来定制对话框的窗口样式。 以下是一个示例代码&#xff0c;演示如何去掉标题栏上的问号图标&#xff1a; #include <QDialog> #include <QDialogButtonBox> #include &…...

FPGA---UDP通信求助

项目场景&#xff1a; 使用UDP进行回环&#xff0c;网络调试助手&#xff0c;发送数据通过UDP接收模块接收&#xff0c;解析出数据&#xff0c;给到UDP发送模块&#xff0c;传回上位机。 问题描述 UDP接收模块中&#xff0c;接收到的CRC校验值与自己计算CRC校验值进行判断&am…...

RxJava介绍及基本原理

随着互联网的迅猛发展&#xff0c;Java已成为最广泛应用于后端开发的语言之一。而在处理异步操作和事件驱动编程方面&#xff0c;传统的Java多线程并不总是最佳选择。这时候&#xff0c;RxJava作为一个基于观察者模式、函数式编程和响应式编程理念的库&#xff0c;为我们提供了…...

nginx目录穿越

测试nginx版本为nginx/1.23.3 location /file {alias /home/;} 在/usr跟目录下新建a.txt测试文件 通过访问 http://{ip}:{端口}/file../test.txt 实现目录穿越 防护:location与alias的值都加上/或不加/...

stl String

构造函数 表达式 效果 string s 生成一个空的 string s string s(str) Copy 构造函数&#xff0c;创建一个 string str 的拷贝 string s(rvStr) Move 构造函数&#xff0c;创建一个 string 并将 rvStr 的内容搬移给 s string s(str,stridx) 将 string str 内“始于位置…...

java通过ffmpeg将wav音频文件转广播音频编码-G.711文件发送

1.直接将wav文件转g711 [ffmpeg.exe -i F:\\tt\\2.wav -f s16le -ar 8k -ac 1 -acodec pcm_s16le F:\\tt\\2pcm.g711] String cmdFfmpeg = "ffmpeg -i "+localUrl...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...