You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fiddler中保存值并在后续重定向及请求中持久复用?

在Fiddler中实现变量持久化并用于后续请求及重定向

要在Fiddler里持久化保存值,同时让所有后续请求(包括重定向)都能调用这个值,核心是利用Fiddler的自定义脚本和内置持久化存储功能,具体步骤如下:

1. 打开Fiddler自定义脚本编辑器

点击Fiddler顶部菜单的 Rules > Customize Rules,打开CustomRules.js脚本文件(默认用FiddlerScriptEditor编辑)。

2. 提取目标值并持久化保存

在脚本的OnBeforeResponse函数中添加逻辑,从指定响应里提取你需要的值,然后保存到Fiddler的Preferences(这是Fiddler的持久化存储,重启后不会丢失)。

示例1:从响应头提取Bearer Token

static function OnBeforeResponse(oSession: Session) {
    // 匹配目标请求(这里以包含"login"的接口为例)
    if (oSession.uriContains("login") && oSession.responseCode == 200) {
        // 从响应头提取Token
        var authHeader = oSession.oResponse["Authorization"];
        if (authHeader && authHeader.StartsWith("Bearer ")) {
            var token = authHeader.Substring(7);
            // 保存到Preferences,自定义键名"MyApp.AuthToken"
            FiddlerObject.UI.SetPreference("MyApp.AuthToken", token);
        }
    }
}

示例2:从响应体JSON中提取值

如果响应体是{"token":"xxx"}这类JSON格式,可这样提取:

static function OnBeforeResponse(oSession: Session) {
    if (oSession.uriContains("login") && oSession.responseCode == 200) {
        var responseBody = oSession.GetResponseBodyAsString();
        // 简单匹配JSON中的token字段
        var tokenMatch = responseBody.match(/"token":"([^"]+)"/);
        if (tokenMatch && tokenMatch.length > 1) {
            var token = tokenMatch[1];
            FiddlerObject.UI.SetPreference("MyApp.AuthToken", token);
        }
    }
}

3. 在后续请求(含重定向)中调用保存的值

在OnBeforeRequest函数中添加逻辑,读取之前保存的值,将其注入到所有后续请求(包括自动重定向的请求)中。

示例:将Token添加到请求头

static function OnBeforeRequest(oSession: Session) {
    // 读取持久化的Token,第二个参数是默认值(为空字符串)
    var savedToken = FiddlerObject.UI.GetPreference("MyApp.AuthToken", "");
    if (savedToken) {
        // 将Token添加到请求头
        oSession.oRequest["Authorization"] = "Bearer " + savedToken;
        
        // 如果需要添加到URL参数,可取消下面注释:
        // var paramSeparator = oSession.url.includes("?") ? "&" : "?";
        // oSession.url += `${paramSeparator}token=${savedToken}`;
    }
}

4. 关键说明

  • 持久化特性:Preferences存储在%APPDATA%\Fiddler2\Preferences文件中,重启Fiddler后依然有效;如果用普通全局变量(比如在脚本顶部定义var g_Token;),重启Fiddler就会丢失。
  • 清除值:要清除保存的值,可以调用FiddlerObject.UI.SetPreference("MyApp.AuthToken", ""),或者直接编辑Preferences文件删除对应键值。
  • 适配重定向:Fiddler的OnBeforeRequest会拦截所有请求,包括自动重定向的请求,所以注入的逻辑会自动作用于重定向请求。

内容的提问来源于stack exchange,提问作者Duccio Fabbri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:22:23