使用webRequest来取消由另一个扩展发出的请求

Use webRequest to cancel a request made by another extension

本文关键字:请求 扩展 另一个 webRequest 取消 使用      更新时间:2023-09-26

我已经成功地使用了webRequest API来阻止来自我访问的网站的所有xmlhttprequest。然而,我的目标是绕过安装在我们学校chromebook上的内容安全过滤器。扩展的工作原理是读取标签的URL,并发送一个xmlhttprequest到它的服务器,询问网站是否被阻止。我已经确定,如果我取消所有这些xmlhttprequest到它的服务器,没有网站将被阻止。

我使用以下代码来狙击所有xmlhttprequest。

chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
    if(details.type=='xmlhttprequest')
    {
        return{cancel:true};
    }
},{urls: ['<all_urls>']},['blocking', 'requestHeaders']);

此代码可以完美地阻止来自任何网站的请求(例如,您无法播放spotify音乐与此扩展启用)。但是onbeforeendheaders似乎忽略了来自扩展的请求。因此,这段代码不能阻止学校扩展发送到其服务器的xmlhttprequest。我也有代码阻止xmlhttprequests与onHeadersReceived和onBeforeRequest,但他们都有同样的问题。它们会阻止来自网站的请求,但不会识别来自扩展名的请求。

奇怪的是,有时这段代码实际上是有效的,并且会阻止来自扩展的请求,但大多数情况下(如99%),它忽略了它们。是否有一种方法可以确保我的扩展不忽略来自另一个扩展的请求?

我知道你会说我不应该绕过学校的网络过滤器,因为它是错误的,否则我会遇到麻烦。但我这样做只是因为我喜欢把事情弄清楚,我不会用它来做那些会给我或学校带来麻烦的事情。此外,我还做了其他类似的扩展,最近得到了修复,每个使用它们的人都非常希望我更新/修复我的应用程序。

是否有一种方法可以确保我的扩展不会忽略来自另一个扩展的请求?

。过去可以拦截来自其他扩展和应用程序的请求,但这被认为是一个安全漏洞——因为您可能会为更高权限的扩展污染数据。

因此,可以确保忽略此类请求。