Chrome插件网络请求拦截?

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

阅读 4.8k
2 个回答

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为拦截,
);

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题