【问题标题】:Chrome extension API for intercepting/modifying websockets UA用于拦截/修改 websockets UA 的 Chrome 扩展 API
【发布时间】:2015-05-08 12:28:00
【问题描述】:

我正在尝试编写一个扩展来修改来自 Chrome 的所有传出请求的用户代理。

对于 http://、https://、ftp://、file:// 或 chrome-extension://,我可以使用 chrome.webRequest API 和 onBeforeSendHeaders。但是,这不适用于 ws:// 或 wss://。

是否有其他 API 允许我设置/修改这些请求的标头?

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension websocket user-agent


    【解决方案1】:

    我在谷歌上搜索这个问题的答案,既然三年后的现在是可能的,我会在这里记录下来。

    根据https://developer.chrome.com/extensions/webRequest,它应该可以在 Chrome 58 上运行。但是需要几个配置才能使其正常工作。

    • 必须在清单中为 webRequest 和 webRequestBlocking 请求权限
    • 还必须为 Web 套接字 URL 请求权限,例如“wss://*/”和“ws://*/”
    • 在请求过滤器中(在 addListener 函数调用中),url 必须用 wss 或 ws 方案声明。使用 * 作为方案仅解析为 http 和 https
    • 在请求过滤器中,websocket 必须在类型中声明。 (我不确定这是否需要,我没有时间验证)

    请记住,webRequest 仅在后台脚本中可用,而在内容脚本中不可用。

    示例(更改Origin标头,更改User Agent应该类似)

    在 manifest.json 中:

    "permissions": [
    "storage",
    "tabs",
    "activeTab",
    "webRequest",
    "webRequestBlocking",
    "webNavigation",
    "debugger",
    "https://*/",
    "wss://*/"
    ],
    

    在后台脚本中

    // origin is defined somewhere above
    chrome.webRequest.onBeforeSendHeaders.addListener((details) => {
          if (origin) {
            const headers = details.requestHeaders;
            for (let i = 0; i < headers.length; i++) {
              if (headers[i].name === 'Origin') {
                headers[i].value = origin;
              }
            }
            return { requestHeaders: headers };
          }
        }, { urls: ['wss://server.example.com/*', 'https://server.example.com/*'],
             types: ['xmlhttprequest', 'websocket'] },
           ['requestHeaders', 'blocking']);
    

    【讨论】:

    • 这对我不起作用。我的 chrome 不拦截 websocket 请求(
    【解决方案2】:

    恐怕不行。现在可以使用请求标头,请参阅this answer。

    不过,这将是一个不错的功能请求。

    【讨论】:

    • Link 到功能请求。对于那些感兴趣的人。
    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2014-06-27
    • 2018-07-25
    相关资源
    最近更新 更多