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

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

  1. 拦截HTTP请求和响应:打开Fiddler,在“File”菜单中选择“Capture Traffic”,开始捕获HTTP请求和响应。在浏览器中访问测试网站时,Fiddler会自动拦截并显示请求和响应。

  2. 分析HTTP数据包:通过查看请求和响应的详细信息,找出可能存在的问题。例如,响应状态码、头部信息、返回数据等都可以提供有用的线索。

  3. 重放请求:在Fiddler中可以轻松地复制和重放请求,以便进一步调试和分析。在请求列表中选择需要重放的请求,右键选择“Replay”,即可重新发送该请求。

  4. 使用Breakpoints:如果想要暂停请求或响应,以便进一步分析和调试,可以使用Fiddler的Breakpoints功能。选择需要设置断点的请求,右键选择“Breakpoints”->“Before Requests/After Responses”,即可在相应位置处暂停请求或响应。

  5. 使用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等编程语言进行自动化处理,以提高测试效率和质量。

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

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

    pip install fiddlercore
    

  9. 启动代理服务器
  10. 在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,并实现自动化测试和请求修改等功能,以提高测试效率和质量。

 如果对你有帮助的话,点个赞收个藏,给作者一个鼓励,也方便你下次能够快速查找,感谢。

如果你想获取该文章配套的视频视频教程以及练手的接口。请狠狠点击下方链接,

并把所需的资料的文章链接发给我即可领取

如果你想获取简历模板+面试技术宝典+求职视频+上千份测试真题,也请狠狠点击下方链接,

并把所需的资料的文章链接发给我即可领取

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值