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

使用declarativeNetRequest.updateDynamicRules时所有网站被拦截,请求协助

问题排查与解决

核心问题分析

你遇到的所有网站被拦截的情况,大概率是规则匹配逻辑不符合预期,或者存在未排查到的其他生效规则。结合你的代码,重点排查以下几点:

1. 修正URL匹配模式

Chrome的declarativeNetRequest中,不带通配符的urlFilter是精确匹配整个URL(包括协议、域名、路径、参数等)。你写的"urlFilter": "analytics"只会精确匹配URL完全等于analytics的请求,这显然不符合你的需求,反而如果存在其他规则干扰,可能导致意外匹配。

如果你想拦截所有URL中包含analytics的主框架请求,需要用通配符*包裹目标字符串:

chrome.declarativeNetRequest.updateDynamicRules({
   removeRuleIds: [232],
   addRules: [{
     id: 232,
     "condition": { "urlFilter": "*analytics*", "resourceTypes": ["main_frame"] },
     action: {
       "type": "block"
     },
   }]
});

2. 检查是否存在其他生效规则

  • 查看扩展的静态规则:检查manifest.json中declarative_net_request.rules字段,是否有拦截所有请求的静态规则。
  • 查看当前动态规则:调用chrome.declarativeNetRequest.getDynamicRules()打印当前生效的动态规则,确认只有你添加的id:232规则,且旧规则已被正确移除。

3. 修正代码语法问题

你的代码中action部分多了一个多余的逗号,虽然JavaScript会忽略,但可能导致解析异常,建议移除:

action: {
  "type": "block" // 去掉后面的冗余逗号
}

4. 验证规则匹配范围

在Chrome扩展管理页面,进入你的扩展详情页,找到「声明式网络请求」板块,点击「查看规则」,可以直观看到每条规则的匹配范围和命中情况,确认id:232规则是否错误匹配了所有主框架请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:35:30