Fiddler学习_模拟网络限速+设置接口404+地址替换+修改返回数据

本文详细介绍了Fiddler的高级功能,包括如何模拟网络限速,使用AutoResponder进行地址替换、设置请求返回404状态,以及修改接口返回数据。通过快捷键操作和CustomRules.js的编辑,可以实现对HTTP请求的精准控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Fiddler是个好东西!
    Fiddler是个好东西!
    Fiddler是个好东西!

一、Fiddler模拟网络限限速

  1. 直接simulate modem speeds,使用默认值限速
    • 工具栏Rules->Performances->Simulate Modem Speeds,将该项勾选(默认根据CustomRules.js中m_SimulateModem内容限制上传和下载速度)
  2. 修改CustomRules.js中m_SimulateModem内容,设定指定上传/下载速度

    • 工具栏Rules->CustomRules,点击打开CustomRules.js文件(快捷键ctrl+R)
    • 修改OnBeforeReques方法中tm_SimulateModem中上传和下载速度

      static function OnBeforeRequest(oSession: Session) {  
          ...   
          //模拟显示上传下载速度,保存后勾选rules->Performances->simulate modem speeds  
          if (m_SimulateModem) {  
              // Delay sends by 300ms per KB uploaded.默认上传时每kb延时300ms  
           
<think>嗯,用户想在Fiddler里处理接口返回数据,然后用本地的Python脚本来解密部分加密的数据。首先,我需要回忆一下Fiddler的脚本功能和相关配置。记得Fiddler支持自定义脚本,可以通过修改CustomRules.js来实现对请求和响应的处理。另外,用户提到要调用Python脚本,可能需要用到Fiddler的脚本触发外部程序执行。 接下来,我应该分步骤来解答。首先,配置Fiddler的响应处理部分。在CustomRules.js中,找到OnBeforeResponse函数,这里可以访问响应数据。然后,检查响应是否符合需要处理的条件,比如特定的URL或内容类型。接着,获取响应的Body内容,可能需要将其传递给Python脚本进行处理。 然后,如何调用Python脚本呢?可能需要使用System.Diagnostics.Process类来启动Python进程,并传递参数。例如,将响应数据作为参数传给脚本,或者写入临时文件再让Python读取。另外,处理后的数据需要返回Fiddler替换原来的响应。这里要注意编码问题,比如Base64编码,避免数据传输中的问题。 用户提到的引用[4]提到Proxyman使用脚本更快,Fiddler的CustomRules.js也是类似思路。引用[2]提到响应数据通常是JSON,处理时转成Python的字典或列表,所以在Python脚本里可能需要解析JSON,解密后再返回结果。 另外,引用[3]讲到了加密可能涉及时间戳、随机数等,但用户这里只需要解密,可能解密逻辑已经在Python脚本里实现,只需要正确传递数据即可。需要考虑如何处理二进制数据,比如图片或其他格式,可能需要用Base64编码传输。 还要注意Fiddler脚本的调试,比如用Fiddler的日志输出查看是否有错误,Python脚本的路径是否正确,环境变量是否包含Python解释器。最后,测试整个流程是否顺畅,解密后的数据是否正确替换回响应中。 总结下来,步骤应该是:修改CustomRules.js,在OnBeforeResponse中捕获响应,提取数据,调用Python脚本处理,替换响应体。同时注意数据编码和进程调用的方法,确保能够正确传递和处理数据。</think>### 分步解决方案 1. **配置Fiddler响应处理规则** 在Fiddler中通过`CustomRules.js`脚本实现对接口返回数据的拦截和处理。需在`OnBeforeResponse`事件中触发Python脚本调用。具体步骤如下: - 打开Fiddler → 菜单栏选择 **Rules → Customize Rules**(或按`Ctrl+R`),进入脚本编辑界面。 - 在`OnBeforeResponse`函数内添加以下代码片段: ```javascript if (oSession.HostnameIs("目标域名") && oSession.oResponse.headers.Exists("Content-Type", "application/json")) { var responseBody = oSession.GetResponseBodyAsString(); // 调用Python脚本处理加密数据 var pythonProcess = System.Diagnostics.Process.Start("python", "C:\\path\\to\\decrypt_script.py \"" + responseBody + "\""); pythonProcess.WaitForExit(); var decryptedData = pythonProcess.StandardOutput.ReadToEnd(); oSession.utilSetResponseBody(decryptedData); } ``` 此逻辑会拦截目标域名的JSON响应,将加密数据传递给Python脚本,并将解密后的结果替换原响应体[^4]。 2. **Python脚本实现解密逻辑** 在本地编写Python脚本(如`decrypt_script.py`),需包含以下核心功能: - 接收Fiddler传入的加密数据(通过命令行参数或标准输入) - 解析JSON响应并定位加密字段(如`encrypted_data`) - 应用解密算法(例如AES、RSA或自定义算法) - 输出解密后的JSON数据Fiddler捕获 **示例代码:** ```python import sys import json from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes def decrypt_data(encrypted_text, key): cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) decryptor = cipher.decryptor() return decryptor.update(encrypted_text) + decryptor.finalize() if __name__ == "__main__": encrypted_response = sys.argv[1] # 从Fiddler获取参数 response_dict = json.loads(encrypted_response) decrypted_content = decrypt_data(response_dict["encrypted_data"], b'your-secret-key') print(json.dumps({"data": decrypted_content.decode()})) ``` 3. **处理二进制数据(如加密的图片/文件)** 若加密数据为二进制格式(如Protobuf、图片文件),需通过Base64编码传输: - Fiddler脚本中将响应体转换为Base64字符串: ```javascript var base64Body = oSession.GetResponseBodyAsBase64(); ``` - Python脚本中解码并处理: ```python import base64 binary_data = base64.b64decode(sys.argv[1]) ``` 4. **调试与验证** - 在Fiddler中启用 **Log** 功能(菜单栏:**View → Tabs → Log**)查看脚本执行日志 - 在Python脚本中添加日志输出(如`print("Debug:", variable)`)以确认解密逻辑正确性 - 通过Fiddler的 **Inspectors** 选项卡对比原始响应和解密后响应 --- ### 技术要点说明 1. **动态数据传递**:若解密依赖动态环境变量(如Token),需在Python脚本中读取Fiddler存储的上下文信息(如通过`os.environ`获取环境变量)[^1] 2. **性能优化**:频繁调用外部进程可能影响性能,建议对耗时操作(如密钥初始化)做缓存处理 3. **安全风险**:密钥应通过环境变量或加密配置文件传递,避免硬编码在脚本中[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值