Расширение Chrome, замените HTML в коде ответа, пока браузер не отобразит его.
Интересно, есть ли способ сделать что-то вроде этого:
Если im на определенном сайте, я хочу, чтобы некоторые файлы javascript загружались непосредственно с моего компьютера (например, файл:///c:/test.js), а не с сервера.
Для этого я думал, есть ли возможность сделать расширение, которое может изменить HTML-код в ответе, который браузер получает прямо перед его отображением. Таким образом, весь процесс должен выглядеть так:
- выполнен запрос
- браузер получает ответ от сервера
- #ответа изменено # - это часть, когда расширение входит
- Браузер проанализирует изменения и отобразит страницу с этим новым ответом.
В любом случае даже не должно быть расширения Chrome. Он должен просто выполнять описанную выше работу. Он может блокировать исходный файл и обслуживать другой (DNS/прокси?) Или фильтровать весь HTTP-трафик на моем компьютере и заменять конкретный код на другой ответ.
Ответы
Ответ 1
Для этого вы можете использовать API WebRequest. Например, вы можете добавить слушателя onBeforeRequest
и перенаправить некоторые запросы:
chrome.webRequest.onBeforeRequest.addListener(function(details)
{
var responseData = "<div>Some text</div>"
return {redirectUrl: "data:text/html," + encodeURIComponent(responseData)};
}, {urls: ["https://www.google.com/"]}, ["blocking"]);
Это отобразит элемент <div>
с текстом "некоторый текст" вместо главной страницы Google. Обратите внимание, что вы можете перенаправлять только URL-адреса, на которые разрешен перенаправление веб-сервера. Это означает, что перенаправление на file:///
URL-адреса невозможно, и вы можете перенаправлять только файлы в своем расширении, если они доступны через Интернет. data:
и http:
URL работают нормально.
Ответ 2
В Windows вы можете использовать Proxomitron (proxomitron.info), который является локальным прокси-сервером, который может перехватывать любую страницу или файл, загружаемый в ваш браузер, и изменять его с помощью регулярных выражений (без разбора DOM), однако вы хотите, отображаемый браузером.