使用webRequest取消其他扩展程序

时间:2016-09-21 23:18:03

标签: javascript html google-chrome google-chrome-extension google-chrome-app

我已成功使用webRequest API阻止从我访问的网站发出的所有xmlhttprequests。但是,我的目标是绕过学校chromebook上安装的内容安全过滤器。扩展程序通过读取选项卡的URL并向其服务器发送xmlhttprequest来询问网站是否被阻止。我已经确定,如果我取消对其服务器发出的所有这些xmlhttprequests,则不会阻止任何网站。

我使用以下代码来阻止所有xmlhttprequests。

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

此代码适用于阻止从任何网站发出的请求(例如,您无法在启用此扩展程序的情况下播放Spotify音乐)。但onBeforeSendHeaders似乎忽略了从扩展中提出的请求。因此,此代码不能阻止学校扩展发送到其服务器的xmlhttprequests。我还有使用onHeadersReceived和onBeforeRequest阻止xmlhttprequests的代码,但它们都有同样的问题。它们会阻止从网站发出的请求,但如果请求是通过扩展程序生成的,则无法识别请求。

奇怪的是,有时候这段代码实际上有效,并且会阻止从扩展程序发出的请求,但大多数(如99%)的时候,它会忽略它们。 有没有办法确保我的扩展程序不会忽略来自其他扩展程序的请求?

我知道你会说我不应该绕过我学校的网络过滤器,因为它错了或者我会遇到麻烦。但我只是这样做是因为我喜欢把事情搞清楚,而且我不会用它来解决那些会让我或学校陷入困境的事情。此外,我已经制作了其他类似的扩展程序,这些扩展程序最近已得到修复,并且每个使用它们的人都希望我更新/修复我的应用程序。

1 个答案:

答案 0 :(得分:1)

  

有没有办法确保我的扩展程序不会忽略从其他扩展程序发出的请求?

没有。过去可以拦截来自其他扩展程序和应用程序的请求,但这被视为security bug - 因为您可能会为更高权限的扩展程序污染数据。

因此,确保您忽略此类请求。