【问题标题】:How can I capture traffic originating from my own Firefox Web Extension如何捕获来自我自己的 Firefox Web 扩展的流量
【发布时间】:2017-03-18 07:13:24
【问题描述】:

我正在开发一个 Firefox 扩展 (WebExtension),作为它的功能之一,它需要从网络请求资源并覆盖响应标头,尤其是那些控制浏览器如何处理响应的标头(例如,应该从内容编码中删除 gzip 编码以检索“原始”响应)。

问题是我找不到拦截由我的扩展程序发出的请求的方法。这在 Chrome 中运行良好,我可以拦截用户直接发出的请求。

此问题会影响所有 webRequest 处理程序,但该示例适用于 onHeadersReceived(简化到最低限度):

function OnHeadersReceived(details){
    console.log('Received headers for ' + details.url);
}

chrome.webRequest.onHeadersReceived.addListener(OnHeadersReceived, { urls: ['<all_urls>'] });

这是一个非常简单的请求示例:

fetch('http://www.alexa.com')

同样的问题也适用于XMLHttpRequest

感谢您对此问题的任何见解。我知道 Chrome 不允许拦截来自其他扩展程序的请求,但对来自您自己的扩展程序的请求没有任何作用。

更新

在 BugZilla 上发现一个错误:WebExtensions: webRequest listeners do not fire for XMLHttpRequest requests generated by the extension

【问题讨论】:

  • 如果您是自己发起这个请求,您可以将各种选项传递给fetch() 以自定义标头等:developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/…
  • 是的,你是对的,我可以。对于其他一些情况,我会这样做。但就我而言,我需要获取一些不会传回给我的标题。例如,如果浏览器理解编码,它将解码响应并去除标头,我不希望它这样做,尽管我确实希望服务器使用该编码。示例:下载 GZIPped 页面并将其转发到其他地方。还有其他用例。

标签: javascript firefox firefox-addon firefox-addon-webextensions


【解决方案1】:

如果其他人想知道,这是 Firefox 中的一个问题,它已在版本 52 中得到修复。 现在所有来自网络扩展的请求也会被这些扩展中的处理程序拦截。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多