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

如何在Manifest V3 Chrome扩展中重复执行重定向规则?

解决Chrome Manifest V3中declarativeNetRequest规则无法移除所有诅咒词的问题

问题分析

你当前的规则仅能移除第一个匹配的诅咒词,原因是declarativeNetRequest的正则替换默认是单次匹配,且规则默认只对初始请求触发一次。要移除所有实例,可通过以下两种方案实现:


方案一:利用多次重定向自动循环移除所有匹配项

Chrome的declarativeNetRequest会对重定向后的新请求重新评估规则,因此我们可以让规则匹配任意位置的单个诅咒词,每次重定向移除一个,直到没有匹配项为止(自动终止,不会无限循环)。

修改你的rules_1.json规则如下:

[
  {
    "id": 1,
    "priority": 1,
    "action": {
      "type": "redirect",
      "redirect": {
        "regexSubstitution": "https://www.google.com/search?q=\\1\\2"
      }
    },
    "condition": {
      "regexFilter": "^https?://www\\.google\\.com/search\\?q=(.*?)\\s?(?:dang|frickin)(.*)",
      "resourceTypes": ["main_frame"],
      "isUrlFilterCaseSensitive": false
    }
  }
]
  • 添加isUrlFilterCaseSensitive: false可忽略大小写匹配(可选)
  • 每次重定向后的URL会再次触发规则,直到所有诅咒词被移除
  • 可通过chrome://net-internals/#events或扩展详情页的规则匹配日志(需declarativeNetRequestFeedback权限)验证触发情况

方案二:使用动态规则一次性全局替换

如果不想依赖多次重定向,可在Service Worker中利用动态规则的自定义转换函数,一次性移除所有诅咒词(Chrome 110+支持)。

  1. 确保manifest.json已包含所需权限(你当前的配置已满足)
  2. 在service_worker.js中添加如下逻辑:
chrome.runtime.onInstalled.addListener(() => {
  // 移除已有动态规则(如果存在)并添加新规则
  chrome.declarativeNetRequest.updateDynamicRules({
    removeRuleIds: [100],
    addRules: [
      {
        "id": 100,
        "priority": 2, // 优先级高于静态规则,确保优先触发
        "action": {
          "type": "redirect",
          "redirect": {
            "transform": {
              "queryTransform": {
                "addOrReplaceParams": [
                  {
                    "key": "q",
                    "value": (url) => {
                      const query = new URL(url).searchParams.get('q');
                      // 全局替换所有匹配的诅咒词
                      return query.replace(/\s?(dang|frickin)/gi, '');
                    }
                  }
                ]
              }
            }
          }
        },
        "condition": {
          "urlFilter": "https://www.google.com/search?q=*",
          "resourceTypes": ["main_frame"]
        }
      }
    ]
  });
});
  • 该方案通过自定义函数全局替换所有诅咒词,无需多次重定向,效率更高
  • 动态规则优先级设为2,确保比静态规则先触发

关于updateStaticRules的说明

updateStaticRules仅用于启用/禁用静态规则集或调整其优先级,无法修改规则的正则或替换逻辑,因此不适合用来实现重复执行规则的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:35:56