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);
}
}
实操步骤
- 打开 Fiddler → 点击右侧「Script」标签(或按
Ctrl+R); - 找到
OnBeforeResponse函数,将上述脚本粘贴到函数内; - 保存脚本(
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(); // 解码响应,避免图片损坏
}
}
实操步骤
- 准备替换用的本地图片(如
custom-icon.png),记录绝对路径; - 在 Fiddler Script 的
OnBeforeRequest函数中粘贴上述脚本,修改图片路径; - 保存脚本后,访问包含目标图片的页面,即可看到图片被替换。
关键说明
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";
}
}
实操步骤
- 在 Fiddler Script 的
OnBeforeRequest(或OnBeforeResponse)函数中粘贴脚本; - 自定义颜色规则(如修改关键词、颜色值),保存脚本;
- 发起网络请求,Fiddler 会话列表中符合规则的请求会自动标色。
常用颜色值
| 颜色 | 英文值 | 十六进制值 |
|---|---|---|
| 红色 | red | #FF0000 |
| 绿色 | green | #00FF00 |
| 黄色 | yellow | #FFFF00 |
| 蓝色 | blue | #0000FF |
| 灰色 | gray | #808080 |
四、脚本使用注意事项
- 脚本生效:修改脚本后需保存(
Ctrl+S),新发起的请求才会生效; - 恢复默认:删除自定义脚本,保存后即可恢复 Fiddler 原始行为;
- 性能影响:复杂脚本(如大量正则替换)可能降低 Fiddler 效率,建议仅针对目标域名生效;
- 乱码问题:处理文本/图片前,先调用
oSession.utilDecodeResponse()解码响应。
总结
- 文本替换:在
OnBeforeResponse中读取响应文本,用replace替换后写回; - 图片替换:在
OnBeforeRequest中用x-replywithfile指令替换为本地图片; - 会话标色:通过设置
oSession["ui-color"],按域名/状态码等规则给会话标色,提升筛选效率。
浙公网安备 33010602011771号