Подтвердить что ты не робот

Расширение Chrome, замените HTML в коде ответа, пока браузер не отобразит его.

Интересно, есть ли способ сделать что-то вроде этого: Если im на определенном сайте, я хочу, чтобы некоторые файлы javascript загружались непосредственно с моего компьютера (например, файл:///c:/test.js), а не с сервера.

Для этого я думал, есть ли возможность сделать расширение, которое может изменить HTML-код в ответе, который браузер получает прямо перед его отображением. Таким образом, весь процесс должен выглядеть так:

  • выполнен запрос
  • браузер получает ответ от сервера
  • #ответа изменено # - это часть, когда расширение входит
  • Браузер проанализирует изменения и отобразит страницу с этим новым ответом.

В любом случае даже не должно быть расширения Chrome. Он должен просто выполнять описанную выше работу. Он может блокировать исходный файл и обслуживать другой (DNS/прокси?) Или фильтровать весь HTTP-трафик на моем компьютере и заменять конкретный код на другой ответ.

4b9b3361

Ответ 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), однако вы хотите, отображаемый браузером.