我可以使用 Chrome 扩展程序修改传出请求标头吗?

2023-12-19

我在 中看不到这个问题的答案开发者指南 http://code.google.com/chrome/extensions/devguide.html,尽管也许我没有找对地方。

我想使用 Chrome 扩展拦截 HTTP 请求,然后转发它,可能使用新的/不同的 HTTP 标头 - 我该怎么做?


PS:我是author of 请求地 https://requestly.io?- 用于修改 HTTP 请求和响应的 Chrome/Firefox 扩展。

当OP提出问题时这当然是不可能的,但现在你可以使用网络请求API https://developer.chrome.com/extensions/webRequest使用 Manifest V2 和 DeclarativeNetRequest API 使用 Manifest V3 编写自己的扩展来修改请求和响应标头。

清单 V2 代码

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return { requestHeaders: details.requestHeaders };
  },
  {urls: ['<all_urls>']},
  ['blocking', 'requestHeaders' /* , 'extraHeaders' */]
  // uncomment 'extraHeaders' above in case of special headers since Chrome 72
  // see https://developer.chrome.com/extensions/webRequest#life_cycle_footnote
);

Google Chrome 在 Manifest V3 中弃用了 webRequest 阻止 API。根据官方声明 https://developer.chrome.com/blog/more-mv2-transition/Google 于 2022 年 9 月 28 日发布消息称,从 2023 年 6 月起,所有使用 Manifest v2 的扩展程序将无法在 Chrome 上运行。这是使用 Manifest v3 修改请求和响应标头的方法 -https://github.com/requestly/modify-headers-manifest-v3 https://github.com/requestly/modify-headers-manifest-v3

清单 V3 代码:

rules.ts

const allResourceTypes = 
    Object.values(chrome.declarativeNetRequest.ResourceType);

export default [
  {
    id: 1,
    priority: 1,
    action: {
      type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
      requestHeaders: [
        {
          operation: chrome.declarativeNetRequest.HeaderOperation.SET,
          header: 'x-test-request-header',
          value: 'test-value',
        },
      ]
    },
    condition: {
      urlFilter: '/returnHeaders',
      resourceTypes: allResourceTypes,
    }
  },
  {
    id: 2,
    priority: 1,
    action: {
      type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
      responseHeaders: [
        {
          operation: chrome.declarativeNetRequest.HeaderOperation.SET,
          header: 'x-test-response-header',
          value: 'test-value',
        },
      ]
    },
    condition: {
      urlFilter: 'https://testheaders.com/exampleAPI',
      resourceTypes: allResourceTypes,
    }
  },
];

背景.ts

import rules from './rules';

chrome.declarativeNetRequest.updateDynamicRules({
  removeRuleIds: rules.map((rule) => rule.id), // remove existing rules
  addRules: rules
});

完整的源代码可以在 GitHub 存储库中找到 -https://github.com/requestly/modify-headers-manifest-v3 https://github.com/requestly/modify-headers-manifest-v3

如果您想使用现有的 Chrome/Firefox/Edge 扩展程序,您可以使用请求地 https://chrome.google.com/webstore/detail/requestly/mdnleldcmiljblolnjhpnblkcekpdkpa它允许您修改请求和响应标头。看看这个快照:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以使用 Chrome 扩展程序修改传出请求标头吗? 的相关文章

  • 后台脚本 chrome.tabs 在 chrome 扩展中未定义?

    我试过这个 背景 js chrome browserAction onClicked addListener function activeTab chrome tabs query active true currentWindow tr
  • 如何针对 Google Chrome 调试 Silverlight

    有谁知道如何从 Visual Studio 调试在 Google Chrome 中运行的 Silverlight 2 应用程序 即使在确定之后Chrome是调试浏览器 https stackoverflow com questions 59
  • 如何保存Chrome的Coverage工具分析的结果?

    乍一看 它看起来像是非常有用的工具 但是我找不到任何类似的操作Save或类似的选项 有谁知道是否可以保存Chrome的Coverage工具分析的结果 谢谢 正如上面的评论中提到的 以及标记重复 https stackoverflow com
  • 如何在 Chrome 开发工具中访问 js 文件/lib 时设置断点?

    是否有可能调试时设置断点 以便每次访问某个类时停止 否则运行正常 这是非常常见的用例 当人们不想停止在 jquery 函数或其他常见的库函数上 而是希望停留在特定的 js 文件上 但不知道什么可能会引发错误 所以人们不这样做不想在 js 文
  • Chrome 扩展程序弹出窗口中的 Google 图表?

    我想让我的 Chrome 扩展程序的弹出页面显示一个 Google 图表 显示有关用户新闻阅读习惯的信息 我注意到 特别是在这里 Chrome 扩展程序不起作用 https stackoverflow com questions 10799
  • 外部协议处理程序和现代浏览器

    我注意到 GitHub 几个月前推出了一个新的 在 Mac 中克隆 按钮 单击该按钮后会执行外部协议请求 github mac openRepo REPOURL 假设我想为我的应用程序实现类似的功能 我想知道 如果用户浏览器不支持外部协议
  • 安装时 Chrome 扩展显示 CRX_REQUIRED_PROOF_MISSING

    我刚刚创建了一个供公司内部使用的 chrome 扩展 我不想发布它 而是想传递给我的同事 当我将该扩展打包到本地 chrome 中时 它给了我错误消息 CRX REQUIRED PROOF MISSING 您无法分发 Chrome 扩展程序
  • Chrome Sockets API 在 Chrome 操作系统(与 Ubuntu、Windows)上的行为有何不同?

    我有一个示例 Chrome 打包应用程序 它使用 Chrome 套接字 API 来执行 DNS 服务发现 繁重的工作是从这里的例子中借来的 https github com GoogleChrome chrome app samples t
  • 以编程方式在 Chrome 扩展中启用内容脚本

    我开发了一个 chrome 扩展 它工作得非常好 的一部分manifest json看起来像这样 content scripts js js script js css css style css matches http localhos
  • 如何使用Google Chrome缩略图预览服务?

    有人知道如何使用 google chrome 服务来生成网站缩略图 新标签上浏览次数最多的网站 有想法做类似的事情吗 These 浏览 chrome 源代码我找不到任何有趣的东西 你呢 来源在这里 http src chromium org
  • 在 Python 中获取 Chrome 标签页 URL

    我想获取有关 Chrome 选项卡的信息 例如当前选项卡的 URL 或自动获取所有 URL 但我找不到任何相关文档 我安装了 Chrome API 但据我所知 没有类似的情况 感谢您的帮助 您可以通过以下方式获取当前 URL 或至少在地址栏
  • 从封闭的网络应用程序在 Chrome 或 Firefox 中发送桌面通知?

    我的目标是发送Gmail 风格的桌面通知 https support google com mail answer 1075549 hl en在 Chrome 或 Firefox 中 通过当前未在浏览器中打开的 Web 应用程序 我们称之为
  • 为什么我无法使用 http3/quic 访问 google?

    Chrome已经打开了enable quic开关 但是当我访问google时 它仍然使用http2协议 如何使用浏览器的http3 quic功能 启用快速 https i stack imgur com Bkeg6 png http2协议
  • 动态加载内容脚本(chrome扩展)

    我有一个 chrome 扩展 其中有 2 个由清单注入的内容脚本和一个后台脚本 manifest version 2 name Test permissions tabs
  • 窗户可以关闭吗?

    我需要知道是否window close 实际上是要关闭窗口 这不是重复的关闭窗口 如何确定窗口是如何打开的 https stackoverflow com questions 17689005 close window how to det
  • 为什么视口宽度与实际显示宽度不匹配?

    Chrome 显示我的视口宽度为 1280px 然而 我的实际显示分辨率是2560x1600px 我使用的机器是13 3英寸的MacBook Pro 为什么视口不是 2560px 宽 使用没有任何区别 my display settings
  • chrome中使用jquery的图像高度问题

    img height 回报0在 Chrome 中 但在 IE 和 Firefox 中返回实际高度 在 Chrome 中获取图像高度的实际方法是什么 正如 Josh 提到的 如果图像尚未完全加载 jQuery 将不知道尺寸是多少 尝试这样的操
  • 如何在background.js中保留变量

    我正在创建一个 chrome 扩展并提出了一个问题 这就是我如何将变量保留在background js 保留 在这里的意思是我的变量backgrund js似乎重新初始化并且先前存储在相应变量中的数据丢失了 我尝试使用chrome runt
  • Tampermonkey 用户脚本可以访问 Chrome API 吗?

    我正在开发一个需要的用户脚本chrome对象 但我无法访问它 如何访问chrometampermonkey 用户脚本中的对象 也许 清单中的一些权限或者什么 参考Chrome 扩展代码 vs 内容脚本 vs 注入脚本 https stack
  • 为什么 Chrome 80 会导致这个 grid-template-rows: auto 问题

    有人知道最新的 Chrome 80 更新有什么变化吗 似乎 grid template rows auto 即使标记中不存在给定行 从现在开始也会占用一些空间 仅发生在 Chrome 80 上 l page display grid gri

随机推荐