Я успешно использовал 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%) того времени игнорирует их. Есть ли способ гарантировать, что мое расширение не игнорирует запросы, сделанные из другого расширения?
Я знаю, что вы скажете, как я не должен обходить фильтры в моей школе, потому что это неправильно или я попаду в беду. Но я просто делаю это, потому что мне нравится разбираться, и я не собираюсь использовать его для вещей, которые могут вызвать у меня или в школе проблемы. Кроме того, я сделал другие подобные расширения, которые недавно были исправлены, и все, кто их использует, в значительной степени ожидают, что я буду обновлять/исправлять свое приложение.
Возможно, что-то связано с порядком загрузки расширений – Tibrogargan
Вы можете использовать веб-просмотр в приложении для предотвращения помех от интерференции. https://developer.chrome.com/apps/tags/webview –
@ DanielHerr: Забавно, что вы сказали, что я сделал расширение некоторое время назад под названием «Разблокировать все», что делает эту точную вещь. Но есть еще некоторые очевидные ограничения на использование webview в качестве замены хром. – Jake