Chrome插件网络请求拦截?

作者站长头像
站长
· 阅读数 18

请问Chrome插件如何对网络请求进行拦截,修改响应数据

回复
1个回答
avatar
test
2024-07-14

manifest.json

{
    "manifest_version": 2,
    "permissions": [
        "webRequest",
        "webRequestBlocking"
    ]
}

background

chrome.webRequest.onBeforeRequest.addListener(
  function (details) {
    const { url } = details;

    // 用来测试返回的内容,如果可行的话换成你要替换的内容
    // 不过按照这个方法貌似不能替换异步获取的内容
    const testResponse = JSON.stringify({
        msg: 'hello world!'
    });
    
    // 这里换成对应的 URL 过滤表达式
    if (url) {
      return { redirectUrl: 'data:javascript,' + testResponse };
    }
    // 无需替换的返回原 URL
    return {
      redirectUrl: url,
    };
  },
  {
    urls: ["*"], //你要拦截的url地址
    types: ["ajax"], //拦截类型
  },
  ["blocking"] //类型blocking为拦截,
);

👆 应该可行,不可行的话这个方向应该也没错。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容