fiddler js
Fiddler是一款功能强大的网络调试工具,可以用于HTTP/HTTPS流量捕获、分析和修改。它提供了多种功能,其中包括自定义脚本,即Fiddler Script。通过Fiddler Script,你可以使用JavaScript编写自己的脚本来执行各种任务,比如自动化测试、修改请求或响应、加密解密数据等。
在Fiddler中,你可以使用JavaScript编写的脚本被称为Fiddler Script,它可以针对HTTP/HTTPS请求和响应进行处理和修改。通过使用Fiddler Script,你可以访问请求和响应的各种属性,并进行适当的修改,如更改请求头、请求正文、响应头和响应正文等。
Fiddler Script还可以与外部JavaScript库进行交互,如.NET框架、jQuery等,从而扩展其功能。它可以处理请求和响应的各个阶段,包括发送请求前、接收响应后等。
fiddler 替换js 正则
Fiddler 中通过正则表达式修改或替换 JS 文件内容
在 Fiddler 中实现基于正则表达式的 JavaScript 文件内容替换功能,主要依赖于自定义脚本和 AutoResponder 模块。具体方法如下:
使用 AutoResponder 进行静态文件替换
如果目标是在请求特定 URL 或符合某些条件的情况下返回预设好的本地文件,则可以通过设置 AutoResponder 来完成这一操作。
- 打开 AutoResponder 选项卡;
- 启用 Unmatched requests passthrough 和 Enable rules;
- 添加新规则并输入相应的正则模式来匹配要拦截的资源路径[^1];例如
regex:.+\.test.js$
可用于匹配所有以.test.js
结尾的文件; - 设置响应动作为 Find a file..., 并指定本地替代文件的位置,比如
E:\code\blog\test.js
.
这种方法适用于不需要动态改变实际加载的内容场景下使用固定版本代替远程服务器上的原始文件。
利用 OnBeforeResponse 动态处理响应体
对于更复杂的场景——即希望依据一定逻辑实时调整传回客户端的数据而非简单替换成另一份完整的文档副本时,则需借助 FiddlerScript 实现更为精细的操作:
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].
js代码 fiddler代理
要在 JavaScript 代码中使用 Fiddler 代理,你需要先配置 Fiddler 代理,并确保它正在运行。然后,你可以使用以下代码将代理设置为 Fiddler:
const proxyUrl = "http://localhost:8888"; // Fiddler 代理默认端口是 8888
// 将所有的网络请求通过 Fiddler 代理发送
const xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com", true);
xhr.proxy = proxyUrl;
xhr.send();
// 或者使用 fetch 方法发送网络请求
fetch("http://example.com", { agent: new ProxyAgent(proxyUrl) })
.then(response => {
// 处理响应
})
.catch(error => {
// 处理错误
});
这样,你的 JavaScript 代码就会使用 Fiddler 作为代理发送网络请求。请注意,这仅适用于在浏览器中运行的 JavaScript 代码,而不是在 Node.js 环境中运行的代码。
相关推荐














