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

如何通过Fiddler自动响应器绕过子资源完整性检查替换JS文件

解决Fiddler替换JS文件时的子资源完整性(SRI)拦截问题

当你用Fiddler替换目标站点的JS文件时,浏览器会通过子资源完整性(SRI)校验对比哈希值,导致修改后的JS被拦截。以下是具体解决步骤:

一、配置自动响应器替换目标JS文件

  1. 准备好你修改后的JS文件(比如命名为custom-modules.js),存放在本地路径(如C:\FiddlerScripts\custom-modules.js)。
  2. 打开Fiddler,切换到Autoresponder标签页:
    • 勾选「Enable rules」和「Unmatched requests passthrough」。
    • 点击「Add Rule」,在「Match Condition」栏输入目标JS的匹配规则,比如:
      regex:https://a.gamelet.online/gassets/resource/.+/modules.js
      
      (如果知道完整URL,直接填完整URL更精准)
    • 在「Action」下拉框选择「Find a file...」,选中你本地的custom-modules.js。
    • 点击「Save」保存规则。

二、修改页面的SRI校验属性(二选一)

浏览器会读取页面中JS标签的integrity属性做校验,你需要修改这个属性或者直接移除它:

方法1:替换为修改后JS的哈希值

  1. 直接使用报错信息里浏览器计算出的修改后JS的SHA-256哈希(格式为sha256-xxxxxx)。
  2. 打开Fiddler的规则编辑器:点击Rules -> Customize Rules...(或按Ctrl+R)。
  3. 在OnBeforeResponse函数中添加以下代码:
    if (oSession.HostnameIs("twrolecgeditor.gamelet.online") && oSession.ResponseHeaders.ExistsAndContains("Content-Type", "text/html")) {
        var body = oSession.GetResponseBodyAsString();
        // 替换为你修改后JS的哈希值
        var newIntegrity = "sha256-9AoQiDzp9rKuhtfbTQtj1N4Rh7kqUtxfLdrVOuef7dw=";
        body = body.Replace(/sha256-[a-zA-Z0-9+/=]+(?=["'])/, newIntegrity);
        oSession.utilSetResponseBody(body);
    }
    
  4. 保存脚本,重启Fiddler生效。

方法2:直接移除页面的SRI校验属性

如果不想计算哈希,直接移除页面中JS标签的integrity属性即可:
在OnBeforeResponse函数中替换为以下代码:

if (oSession.HostnameIs("twrolecgeditor.gamelet.online") && oSession.ResponseHeaders.ExistsAndContains("Content-Type", "text/html")) {
    var body = oSession.GetResponseBodyAsString();
    // 移除所有sha256类型的integrity属性
    body = body.Replace(/integrity="sha256-[a-zA-Z0-9+/=]+" /g, "");
    oSession.utilSetResponseBody(body);
}

完成以上配置后,刷新目标站点,修改后的JS就能正常加载,不会被SRI拦截了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:32