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

如何在谷歌Chrome扩展中拦截URL以特定字符开头的请求?

解决方案

1. 先确认manifest.json权限配置

Chrome扩展请求拦截能力需要提前在配置文件中声明对应权限,分两个版本的配置要求:

  • Manifest V2 配置:
"permissions": [
  "webRequest",
  "webRequestBlocking",
  "*://*.facebook.com/s/*"
],
"background": {
  "scripts": ["background.js"]
}
  • Manifest V3 配置:
    Manifest V3 中webRequest的blocking能力仅对企业政策部署的扩展开放,普通公开扩展需使用declarativeNetRequest实现拦截,性能更高且无需后台脚本常驻:
"permissions": [
  "declarativeNetRequest"
],
"host_permissions": [
  "*://*.facebook.com/s/*"
],
"background": {
  "service_worker": "background.js"
}

2. 对应后台代码调整

Manifest V2 + webRequest 方案

你原有代码可优化匹配规则,减少不必要的全局请求监听:

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    console.log(details);
    return { cancel: true };
  },
  // 直接在监听规则里限定目标路径,无需判断所有请求
  { urls: ["*://*.facebook.com/s/*"] },
  ["blocking", "requestHeaders"]
);

Manifest V3 推荐方案

直接在background.js中注册拦截规则即可:

chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeNetRequest.updateDynamicRules({
    addRules: [
      {
        id: 1,
        priority: 1,
        action: { type: "block" },
        condition: {
          urlFilter: "*://*.facebook.com/s/*",
          resourceTypes: ["main_frame", "sub_frame", "xmlhttprequest", "script", "image", "stylesheet"]
        }
      }
    ],
    removeRuleIds: [1]
  });
});

常见排查点

  • 规则不生效时,先到扩展管理页面确认你的扩展已开启对应场景权限,比如「允许访问文件网址」「在隐身模式下启用」
  • 上述配置中的通配符可同时匹配带www、不带www的Facebook域名下所有/s/开头的请求,覆盖所有常见资源类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:27:00