fiddler 替换js 正则
时间: 2025-02-21 19:16:43 浏览: 35
### Fiddler 中通过正则表达式修改或替换 JS 文件内容
在 Fiddler 中实现基于正则表达式的 JavaScript 文件内容替换功能,主要依赖于自定义脚本和 AutoResponder 模块。具体方法如下:
#### 使用 AutoResponder 进行静态文件替换
如果目标是在请求特定 URL 或符合某些条件的情况下返回预设好的本地文件,则可以通过设置 AutoResponder 来完成这一操作。
1. 打开 **AutoResponder** 选项卡;
2. 启用 **Unmatched requests passthrough** 和 **Enable rules**;
3. 添加新规则并输入相应的正则模式来匹配要拦截的资源路径[^1];例如 `regex:.+\.test.js$` 可用于匹配所有以 `.test.js` 结尾的文件;
4. 设置响应动作为 **Find a file...**, 并指定本地替代文件的位置,比如 `E:\code\blog\test.js`.
这种方法适用于不需要动态改变实际加载的内容场景下使用固定版本代替远程服务器上的原始文件。
#### 利用 OnBeforeResponse 动态处理响应体
对于更复杂的场景——即希望依据一定逻辑实时调整传回客户端的数据而非简单替换成另一份完整的文档副本时,则需借助 FiddlerScript 实现更为精细的操作:
```csharp
static function OnBeforeResponse(oSession: Session) {
// 定义正则表达式以及替换后的字符串
var regexPattern = @"<script>([\s\S]*?)<\/script>";
var replacementText = "<!-- Modified by Fiddler -->";
if (oSession.utilIsHTTPS && oSession.HostnameIs("example.com") &&
oSession.PathAndQuery.EndsWith("/path/to/file.js")) {
// 修改响应头表明编码方式以便正确解析body
oSession.oResponse["Content-Type"] = "application/javascript;charset=UTF-8";
// 获取解码后的响应主体作为可编辑对象
var responseString = System.Text.Encoding.UTF8.GetString(oSession.GetResponseBodyBytes());
// 应用正则替换
var result = Regex.Replace(responseString, regexPattern, replacementText);
// 将更改写入回去
oSession.utilSetResponseBody(result);
}
}
```
上述代码片段展示了如何利用 C# 编写的 Fiddler 脚本来监听符合条件的 HTTP 请求,在其即将发送给浏览器之前对其进行篡改。这里采用了 `<script>` 标签包裹任意字符序列(包括多行)的形式作为查找模板,并将其全部转换成注释形式表示已被修改过[^2].
阅读全文
相关推荐


















