Fiddler Script能够实现以下功能(文本替换、图片替换、会话列表颜色筛选)

Fiddler Script 基于 JScript.NET 编写,核心是通过修改 OnBeforeResponse(响应前)/OnBeforeRequest(请求前)事件来拦截并修改网络请求/响应,以下是分功能实现方案:


一、文本替换(拦截响应并替换指定文本)

功能说明

拦截指定域名/接口的响应内容,将其中的目标文本替换为自定义内容(比如把页面中的“天气”替换为“气象”,或把接口返回的“success”替换为“fail”)。

完整脚本

// 文本替换核心脚本
// 1. 先判断响应是否为文本类型(HTML/JSON/JS等),避免二进制文件乱码
if (oSession.responseCode == 200 && 
    oSession.oResponse.MIMEType.Contains("text") || 
    oSession.oResponse.MIMEType.Contains("json")) {
    
    // 2. 指定需要替换的域名(可根据需求修改,*为通配符)
    if (oSession.HostnameIs("www.weather.com") || oSession.uriContains("weather")) {
        
        // 3. 读取响应内容
        var responseBody = oSession.GetResponseBodyAsString();
        
        // 4. 文本替换:把“晴”替换为“晴天”,可自定义替换规则
        var newBody = responseBody.replace(/晴/g, "晴天");
        // 示例2:替换JSON中的文本,如把"message":"success"替换为"message":"error"
        // newBody = responseBody.replace(/"message":"success"/g, "\"message\":\"error\"");
        
        // 5. 将替换后的内容写回响应
        oSession.utilSetResponseBody(newBody);
    }
}

实操步骤

  1. 打开 Fiddler → 点击右侧「Script」标签(或按 Ctrl+R);
  2. 找到 OnBeforeResponse 函数,将上述脚本粘贴到函数内;
  3. 保存脚本(Ctrl+S),访问目标网站/接口,即可看到文本被替换。

关键说明

  • replace(/晴/g, "晴天")/g 表示全局替换,不加则只替换第一个匹配项;
  • 若替换中文乱码:在脚本开头添加 oSession.utilDecodeResponse();(解码响应后再替换)。

二、图片替换(拦截图片请求并替换为本地/网络图片)

功能说明

拦截指定图片的请求(如网站logo、天气图标),将响应替换为本地图片或其他网络图片,常用于测试图片加载异常、自定义图片展示等场景。

完整脚本

// 图片替换核心脚本
function OnBeforeRequest(oSession) {
    // 1. 拦截指定图片请求(匹配图片URL关键词,如weather-icon.png)
    if (oSession.uriContains("weather-icon.png")) {
        // 方式1:替换为本地图片(推荐,需填写本地图片绝对路径)
        var localImagePath = "C:\\test\\custom-icon.png"; // 注意路径用双反斜杠
        oSession["x-replywithfile"] = localImagePath; // 用本地文件替换响应
        
        // 方式2:替换为网络图片(需先下载图片到本地,或转发请求)
        // oSession.url = "https://example.com/custom-icon.png"; // 重定向到新图片URL
    }
}

// 补充:若替换后图片显示异常,在OnBeforeResponse中添加解码
function OnBeforeResponse(oSession) {
    if (oSession.uriContains("weather-icon.png")) {
        oSession.utilDecodeResponse(); // 解码响应,避免图片损坏
    }
}

实操步骤

  1. 准备替换用的本地图片(如 custom-icon.png),记录绝对路径;
  2. 在 Fiddler Script 的 OnBeforeRequest 函数中粘贴上述脚本,修改图片路径;
  3. 保存脚本后,访问包含目标图片的页面,即可看到图片被替换。

关键说明

  • x-replywithfile:Fiddler 内置指令,直接用本地文件替换响应,支持PNG/JPG/GIF等格式;
  • 若替换网络图片:需确保目标图片可访问,且格式与原图片一致(如原图片是PNG,替换的也需是PNG)。

三、会话列表颜色筛选(按规则给会话标色,快速筛选)

功能说明

根据会话的域名、状态码、请求类型等规则,给 Fiddler 会话列表中的请求标上不同颜色(如天气接口标绿色、404请求标红色),方便快速识别目标请求。

完整脚本

// 会话列表颜色筛选核心脚本
function OnBeforeRequest(oSession) {
    // 重置默认颜色
    oSession["ui-color"] = "";
    
    // 规则1:天气相关接口标绿色(#00FF00)
    if (oSession.uriContains("weather") && oSession.HostnameIs("devapi.qweather.com")) {
        oSession["ui-color"] = "green"; // 支持英文颜色/十六进制颜色值
    }
    
    // 规则2:404响应标红色(需在OnBeforeResponse中判断)
    if (oSession.responseCode == 404) {
        oSession["ui-color"] = "#FF0000";
    }
    
    // 规则3:图片请求标黄色
    if (oSession.oRequest.headers.Exists("Accept") && 
        oSession.oRequest["Accept"].Contains("image")) {
        oSession["ui-color"] = "yellow";
    }
}

实操步骤

  1. 在 Fiddler Script 的 OnBeforeRequest(或 OnBeforeResponse)函数中粘贴脚本;
  2. 自定义颜色规则(如修改关键词、颜色值),保存脚本;
  3. 发起网络请求,Fiddler 会话列表中符合规则的请求会自动标色。

常用颜色值

颜色 英文值 十六进制值
红色 red #FF0000
绿色 green #00FF00
黄色 yellow #FFFF00
蓝色 blue #0000FF
灰色 gray #808080

四、脚本使用注意事项

  1. 脚本生效:修改脚本后需保存(Ctrl+S),新发起的请求才会生效;
  2. 恢复默认:删除自定义脚本,保存后即可恢复 Fiddler 原始行为;
  3. 性能影响:复杂脚本(如大量正则替换)可能降低 Fiddler 效率,建议仅针对目标域名生效;
  4. 乱码问题:处理文本/图片前,先调用 oSession.utilDecodeResponse() 解码响应。

总结

  1. 文本替换:在 OnBeforeResponse 中读取响应文本,用 replace 替换后写回;
  2. 图片替换:在 OnBeforeRequest 中用 x-replywithfile 指令替换为本地图片;
  3. 会话标色:通过设置 oSession["ui-color"],按域名/状态码等规则给会话标色,提升筛选效率。
posted @ 2025-12-30 09:20  I'm云云  阅读(0)  评论(0)    收藏  举报