fiddler抓包工具入门到入职之如何精准的定位前后端的bug

2023-11-10

Fiddler是一款强大的网络调试工具,可以拦截和分析HTTP请求和响应,帮助开发者定位前后端的问题。下面介绍如何使用Fiddler精准定位前后端的Bug,并使用Python代码进行操作。

  • 拦截HTTP请求和响应:打开Fiddler,在“File”菜单中选择“Capture Traffic”,开始捕获HTTP请求和响应。在浏览器中访问测试网站时,Fiddler会自动拦截并显示请求和响应。
  • 分析HTTP数据包:通过查看请求和响应的详细信息,找出可能存在的问题。例如,响应状态码、头部信息、返回数据等都可以提供有用的线索。
  • 重放请求:在Fiddler中可以轻松地复制和重放请求,以便进一步调试和分析。在请求列表中选择需要重放的请求,右键选择“Replay”,即可重新发送该请求。
  • 使用Breakpoints:如果想要暂停请求或响应,以便进一步分析和调试,可以使用Fiddler的Breakpoints功能。选择需要设置断点的请求,右键选择“Breakpoints”->“Before Requests/After Responses”,即可在相应位置处暂停请求或响应。
  • 使用FiddlerScript:Fiddler还提供了FiddlerScript,它是一种基于JavaScript的脚本语言,可以在Fiddler中自定义请求和响应的处理逻辑。通过编写FiddlerScript脚本,可以实现自动化测试、请求修改等功能。
import sys
import clr
 
# 加载FiddlerCore.dll
clr.AddReference("FiddlerCore")
from Fiddler import *
 
# 创建代理服务器
proxy = Proxy()
proxy.Startup(8888, True, True)
 
# 定义事件处理器
class MyEventHandler:
    def OnBeforeRequest(self, oSession: Session):
        # 处理请求
        pass
 
    def OnBeforeResponse(self, oSession: Session):
        # 处理响应
        pass
 
    def OnShutdown(self):
        # 关闭代理服务器
        proxy.Shutdown()
 
# 注册事件处理器
handler = MyEventHandler()
FiddlerApplication.BeforeRequest += handler.OnBeforeRequest
FiddlerApplication.BeforeResponse += handler.OnBeforeResponse
FiddlerApplication.Shutdown += handler.OnShutdown
 
# 运行Fiddler
FiddlerApplication.Run()

 

上述代码创建了一个代理服务器,并注册了事件处理器,用于处理请求和响应。在MyEventHandler类中可以编写具体的处理逻辑,例如修改请求参数、记录日志等。最后调用FiddlerApplication.Run()启动Fiddler。

总的来说,使用Fiddler可以快速定位前后端的问题,并通过Python等编程语言进行自动化处理,以提高测试效率和质量。

在前面的回答中,我们介绍了如何使用Fiddler工具进行前后端Bug的定位,并且提到了可以使用Python代码来实现自动化测试和请求修改等功能。下面将进一步介绍如何使用Python代码操作Fiddler来定位前后端的Bug。

安装FiddlerCore库
在Python代码中使用Fiddler需要安装FiddlerCore库,可以通过pip命令进行安装:

pip install fiddlercore

启动代理服务器

在Python代码中启动Fiddler代理服务器,可以监听指定的本地端口号。以下是启动代理服务器的示例代码:

import FiddlerCore
 
proxy_port = 8888
FiddlerCore.FiddlerApplication.Startup(proxy_port, True, True)
print(f"Fiddler started, listening on port {proxy_port}")

 

  1. 注册事件处理器

在Fiddler代理服务器中,需要注册事件处理器来处理HTTP请求和响应。可以继承自FiddlerCore.IAutoTamper接口,并实现其中的方法。以下是事件处理器的示例代码:

class MyAutoTamper(FiddlerCore.IAutoTamper):
    def OnBeforeRequest(self, session: FiddlerCore.Session):
        # 处理请求
        print(f"Request URL: {session.fullUrl}")
 
    def OnBeforeResponse(self, session: FiddlerCore.Session):
        # 处理响应
        print(f"Response Status Code: {session.responseStatusCode}")
 
    def OnLoad(self):
        pass
 
    def OnUnload(self):
        pass

上述代码中的OnBeforeRequest和OnBeforeResponse方法分别处理HTTP请求和响应,并输出一些简单的信息,可以根据具体的需求进行修改。

  1. 运行Fiddler

在Python代码中运行Fiddler代理服务器,可以使用以下代码:

auto_tamper = MyAutoTamper()
FiddlerCore.FiddlerApplication.AfterSessionComplete += auto_tamper.OnBeforeRequest
FiddlerCore.FiddlerApplication.BeforeResponse += auto_tamper.OnBeforeResponse
FiddlerCore.FiddlerApplication.Run(True)

上述代码中注册了事件处理器,并启动了Fiddler代理服务器。通过该代码可以监听请求和响应,并对其进行处理,以便进行前后端Bug的定位。

  1. 修改请求和响应

在Python代码中可以修改HTTP请求和响应,实现自动化测试和调试的功能。以下是修改请求参数的示例代码:

def OnBeforeRequest(self, session: FiddlerCore.Session):
    if "POST" in session.RequestMethod:
        # 修改请求参数
        body = session.GetRequestBodyAsString()
        new_body = self.modify_request(body)
        session.utilSetRequestBody(new_body)
 
def modify_request(self, body: str) -> str:
    # 对请求参数进行修改
    pass

上述代码中,我们从请求体中获取请求参数,并调用modify_request方法进行修改。可以根据具体的情况设计修改逻辑,例如添加、删除或修改某些参数值。

综上所述,通过Fiddler和Python的结合,可以快速定位前后端的Bug,并实现自动化测试和请求修改等功能,以提高测试效率和质量。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fiddler抓包工具入门到入职之如何精准的定位前后端的bug 的相关文章

随机推荐

  • 网络地址转换NAT原理及应用

    这是做路由器的时候 学习网络地址转换Network Address Translation后的一些理解整理 主要通过实例和图表的方式展示了NAT的工作原理和每个阶段的状态 本文的NAT是基本于Linux下的iptables命令实现 1 概述
  • 色字当头一把刀,看我如何用Python针对裸聊渗透测试

    本篇文章由知柯 信息安全 CSDN博主鸿渐之翼联合发布 转载请标明出处 深圳市狩猎者网络安全技术有限公司旗下安全团队 CSDN 知柯信息安全 知柯信息安全 用心呵护您的安全 Professional in Software Security
  • 前端vue显示柱状图_详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)_旧址_前端开发者...

    数据可视化 将数据通过图表的形式展现出来将大大的提升可读性和阅读效率 本例包含柱状图 折线图 散点图 热力图 复杂柱状图 预览面板等 技术栈 vue2 x vuex 存储公共变量 如色值等 element ui 饿了么基于vue2开发组件库
  • Manning in Action系列图书体例分析

    Manning in Action系列图书体例分析
  • java中常用的设计模式_Java设计模式中的几种常用设计模式总结

    一 设计模式概念 1 定义 Java包含23种设计模式 是一套对代码设计经验的总结 被人们反复利用 多人熟知的代码设计方式 2 目的 为了提高代码的可读性 可扩展性以及代码的复用性 为了解决在写代码过程中遇到的代码设计问题 3 设计模式的六
  • python处理excel格式变化,分类,归类,行变列

    上图转换成下图 格式转换 方法一 import pandas as pd data1 pd read csv r C path1 csv encoding gb18030 rows data1 shape 0 获取行数 shape 1 获取
  • 【转】matlab学习(5) 读取excel文件

    转自 https blog csdn net thy19988 article details 78489623 1 使用函数xlsread读取单个文件 1 num xlsread filename filename是单引号括起来的带路径的
  • RC电路(二):耦合

    一 微分变换电路及波形 A 简单微分电路中 数值与输入方波宽度 之间满足 时 将变成一个 耦合电路 输出波形可以跟随输入波形 电路如下图所示 上图红框部分放大后如下图所示 在 时 由 因电容电压不能突变 来不及充电 相当于短路 输入电压 全
  • Matlab中快速去除字符串中的元音字母

    其实字符串可以看作一个向量 每一个字符都有一个对应的ascii值 因此在处理字符串时也可以采用常用的数值数组函数 今天小编想要介绍的内容是如何快速地去除字符串中的元音字母 学会了本节内容 你就会快速地删除字符串中的任意字符了 想必大家处理字
  • 【QT学习】01:helloqt

    helloqt OVERVIEW helloqt 一 helloqt 1 使用向导创建 2 手动创建 3 pro文件 4 Qt应用程序框架 二 按钮创建 main cpp mywidget cpp 三 对象模型 1 对象树引入 2 存在的问
  • javascript问答(含答案)

    1 我们可以在下列哪个 HTML 元素中放置 Javascript 代码 您的回答
  • 经典算法问题——稳定匹配(Stable Matching)

    经典算法问题 稳定匹配 Stable Matching 问题起源 在1962年 经济学家 David Gale 和 Lloyd Shapley 提出 能否设计一个高校录取过程 能够自我执行 self enforcing 形成一个最佳的匹配效
  • < element-Ui表格组件:表格多选功能回显勾选时因分页问题,导致无法勾选回显的全部数据 >

    文章目录 前言 一 解决思路 二 实现代码 仅供参考 具体问题具体分析 gt HTML模板 gt Js模板 往期内容 前言 在 Vue elementUi 开发中 elementUI中表格在本身是自带多选功能的 但是在某些情况下 并不能完全
  • some() 方法

    该方法是是数组的Array prototype some array some element index arr 返回值 true 或者false true 至少有一个元素 满足 方法提供的函数判断 false 一个都满足 方法提供的函数
  • 存储器的概述——DRAM动态存储器

    DRAM存储器 1 DRAM存储元的工作原理 SRAM存储器的存储位元是一一个触发器 它具有两个稳定的状态 而DRAM存储器的存储位元是由一个MOS晶体管和电容器组成的记忆电路 如图所示 2 DRAM芯片的逻辑结构 下面我们通过一个例子来看
  • SQLServer 批量修改或插入

    场景 今天在工作中遇到这么一个场景 我需要根据条件对表A做批量更新或插入 因为条件比较复杂 所以我使用了临时表B 先把需要更新或插入的数据查询出来放入临时表 然后更新表A的某字段 更新条件是A id B id 更新效果是若记录存在表A中 则
  • 大规模 Vision-Language 模型预训练的数据增强:Supervision Exists Everywhere

    Supervision Exists Everywhere A Data Efficient Contrastive Language Image Pre training Paradigm 论文地址 代码地址 主要工作 核心思想 具体实现
  • 线程池的声明需要手动进行

    Java 中的 Executors 类定义了一些快捷的工具方法 来帮助我们快速创建线程池 阿里巴巴 Java 开发手册 中提到 禁止使用这些方法来创建线程池 而应该手动 new ThreadPoolExecutor 来创建线程池 这一条规则
  • 行链接和行迁移

    行链接 Row chaining 与行迁移 Row Migration 当一行的数据过长而不能插入一个单个数据块中时 可能发生两种事情 行链接 row chaining 或行迁移 row migration 行链接 当第一次插入行时 由于行
  • fiddler抓包工具入门到入职之如何精准的定位前后端的bug

    Fiddler是一款强大的网络调试工具 可以拦截和分析HTTP请求和响应 帮助开发者定位前后端的问题 下面介绍如何使用Fiddler精准定位前后端的Bug 并使用Python代码进行操作 拦截HTTP请求和响应 打开Fiddler 在 Fi