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

Chrome扩展Simple declarativeNetRequest规则未按预期生效求助

问题:Chrome扩展图片拦截规则无法匹配含xxx的页面URL

我开发了一款Chrome扩展,用于阻止页面加载所有图片(拦截功能已实现),但希望当页面URL包含字符串xxx时不拦截图片。我在JSON格式的rule_resources文件中使用了以下规则:

[
    {
        "id":1,
        "priority":1,
        "action":{
            "type":"block"
        },
        "condition":{
            "urlFilter":"*",
            "resourceTypes":["image"]
        }
    },
    {
        "id":2,
        "priority":2,
        "action":{
            "type":"allow"
        },
        "condition":{
            "urlFilter":"xxx",
            "resourceTypes":["image"]
        }
    }
]

查阅文档后我认为配置无误,但访问https://example.com/test?xxx=这类网站时图片仍被拦截。请问我哪里配置错了?


编辑:尝试新规则仍未生效

按照@woxxom的建议,我尝试了以下规则但问题依旧:

[
{
    "id":1,
    "priority":1,
    "action":{
        "type":"allowAllRequests"
    },
    "condition":{
        "urlFilter":"xxx",
        "resourceTypes":["main_frame","sub_frame"]
    }
},
{
    "id":2,
    "priority":2,
    "action":{
        "type":"block"
    },
    "condition":{
        "urlFilter":"*",
        "resourceTypes":["image","font","media","object","ping"]
    }
}
]

解决方案

问题核心

你的规则存在两个关键错误:

  1. 匹配对象错误:初始规则中,第二条allow规则的urlFilter匹配的是图片资源自身的URL,而非发起请求的页面URL。你需要的是「页面URL含xxx时允许图片」,而非「图片URL含xxx时允许」。
  2. 优先级与逻辑冲突:编辑后的规则中,allowAllRequests仅作用于主/子框架页面,但后续block规则优先级更高(数值2),会直接覆盖允许逻辑,且未建立页面URL与图片请求的关联。

正确规则配置

要实现需求,需让allow规则匹配「发起图片请求的页面URL含xxx」的场景,且优先级高于block规则:

方案1:使用通配符匹配页面URL

[
  {
    "id": 1,
    "priority": 2,
    "action": {
      "type": "allow"
    },
    "condition": {
      "resourceTypes": ["image"],
      "initiatorDomains": ["*"],
      "urlFilter": "*xxx*",
      "isUrlFilterCaseSensitive": false
    }
  },
  {
    "id": 2,
    "priority": 1,
    "action": {
      "type": "block"
    },
    "condition": {
      "resourceTypes": ["image"],
      "urlFilter": "*"
    }
  }
]

方案2:使用正则表达式更灵活匹配

[
  {
    "id": 1,
    "priority": 2,
    "action": {
      "type": "allow"
    },
    "condition": {
      "resourceTypes": ["image"],
      "initiatorDomains": ["*"],
      "regexFilter": ".*xxx.*",
      "isUrlFilterCaseSensitive": false
    }
  },
  {
    "id": 2,
    "priority": 1,
    "action": {
      "type": "block"
    },
    "condition": {
      "resourceTypes": ["image"],
      "urlFilter": "*"
    }
  }
]

关键说明

  • 优先级设置:允许规则的priority数值需大于拦截规则,确保符合条件的请求先触发允许逻辑,避免被拦截规则覆盖。
  • 匹配页面URL:initiatorDomains指定请求发起方(即页面)的域名范围,结合urlFilter或regexFilter匹配页面URL中的xxx,确保规则作用于「页面含xxx」的场景,而非图片资源URL。
  • 大小写敏感:添加isUrlFilterCaseSensitive: false可忽略大小写匹配,根据需求调整。

内容的提问来源于stack exchange,提问作者Sitepor500.com.br

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:26