 使用 DNR 实现请求拦截)
24.1 目的通过 chrome.declarativeNetRequest 规则来阻止或重定向某一类请求。24.2 使用场景 / 避免场景使用场景: 当你可以将行为表达为规则阻塞/重定向/头部信息时。避免场景: 当你需要针对每个请求的自定义逻辑或请求体时。24.3 权限选择一种模型declarativeNetRequest (安装时显示警告允许/阻止规则隐式获取主机访问权限)declarativeNetRequestWithHostAccess (无警告需要 host_permissions 对受影响的主机进行授权)24.4 步骤在 manifest.json 中添加 DNR 权限和一个规则集创建一个小的 JSON 规则文件包含稳定的数字 ID仔细测试匹配urlFilter/resourceTypes(可选) 动态启用/禁用规则集24.5 最小示例manifest.json:{ permissions: [declarativeNetRequestWithHostAccess], host_permissions: [*://example.com/*], declarative_net_request: { rule_resources: [ { id: ruleset_1, enabled: true, path: rules_1.json } ] } }rules_1.json:[ { id: 1, priority: 1, action: { type: block }, condition: { urlFilter: ||example.com/track, resourceTypes: [xmlhttprequest, script] } } ]24.6 雷区规则未匹配因为过滤器稍有错误激发规则限制优先选择较少但更具影响力的规则预期 MV2 的阻塞 webRequest 行为选择了错误的权限模型 (declarativeNetRequest vs WithHostAccess)24.7 任务清单[ ] 规则 ID 稳定不要随意重新编号[ ] urlFilter 已在实际 URL 上测试过[ ] 每个规则都能向审阅者/用户解释清楚24.8 参考资料declarativeNetRequest (官方): https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest