2

Я успешно использовал API webRequest, чтобы заблокировать все xmlhttprequests, сделанные с веб-сайтов, которые я посещаю. Однако моя цель - обходить фильтр защиты контента, установленный на наших школьных хромовых книгах. Расширение работает, читая 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, расширение школы отправляется на его серверы. У меня также есть код для блокировки xmlhttprequests с onHeadersReceived и onBeforeRequest, но все они имеют одинаковую проблему. Они блокируют запросы, сделанные с веб-сайтов, но не распознают запрос, если он сделан из расширения.

И как ни странно, иногда этот код действительно работает и блокирует запросы, сделанные из расширения, но большинство (например, 99%) того времени игнорирует их. Есть ли способ гарантировать, что мое расширение не игнорирует запросы, сделанные из другого расширения?

Я знаю, что вы скажете, как я не должен обходить фильтры в моей школе, потому что это неправильно или я попаду в беду. Но я просто делаю это, потому что мне нравится разбираться, и я не собираюсь использовать его для вещей, которые могут вызвать у меня или в школе проблемы. Кроме того, я сделал другие подобные расширения, которые недавно были исправлены, и все, кто их использует, в значительной степени ожидают, что я буду обновлять/исправлять свое приложение.

+0

Возможно, что-то связано с порядком загрузки расширений – Tibrogargan

+0

Вы можете использовать веб-просмотр в приложении для предотвращения помех от интерференции. https://developer.chrome.com/apps/tags/webview –

+0

@ DanielHerr: Забавно, что вы сказали, что я сделал расширение некоторое время назад под названием «Разблокировать все», что делает эту точную вещь. Но есть еще некоторые очевидные ограничения на использование webview в качестве замены хром. – Jake

ответ

1

Есть ли способ гарантировать, что мое расширение не игнорирует запросы, сделанные с другого расширения?

No. Раньше можно перехватывать запросы от других расширений и приложений, но это было сочтено security bug - так как вы могли потенциально испортить данные для расширения высших привилегий.

Как таковой, обеспечивается, что вы будет игнорировать такие запросы.