2

我已成功使用webRequest API来阻止从我访问的网站制作的所有xmlhttprequests。但是,我的目标是规避安装在我们学校Chromebook上的内容安全过滤器。该扩展通过阅读标签的URL并向其服务器发送xmlhttprequest来询问网站是否被阻止。我已经确定,如果我取消了对服务器所做的所有这些xmlhttprequests,则不会阻止任何网站。使用webRequest取消另一个分机发出的请求

我正在使用下面的代码来狙击所有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%)的时间都会忽略它们。 有没有办法确保我的扩展不会忽略来自另一个扩展的请求?

我知道你打算说我不应该绕过我学校的网页过滤器,因为它是错误的或者我会遇到麻烦。但我只是这样做,因为我喜欢搞清楚事情,而且我不会将它用于那些会让我或学校陷入困境的事情。另外,我还制作了其他类似的扩展程序,最近得到修复,每个使用它们的用户都期待我更新/修复我的应用程序。

+0

可能与扩展程序的加载顺序有关 – Tibrogargan

+0

您可以在应用程序中使用web视图来防止扩展干扰。 https://developer.chrome.com/apps/tags/webview –

+0

@DanielHerr你这么说很有趣,我前段时间做了一个名为“Unblock Everything”的扩展,它完成了这件事。但使用webview替代chrome仍然存在一些明显的局限性。 – Jake

回答

1

有没有办法确保我的扩展不会忽略来自另一个扩展的请求?

号以前是不可能拦截来自其他扩展程序和应用的要求,但这视为security bug - 因为你可能会玷污数据更高特权扩展。

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

相关问题