Расширение Chrome, замените HTML в коде ответа, прежде чем браузер отобразит его - PullRequest
12 голосов
/ 07 июня 2011

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Для этого можно использовать 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> с текстом «some text» вместо домашней страницы Google.Обратите внимание, что вы можете перенаправлять только те URL-адреса, на которые веб-серверу разрешено перенаправлять.Это означает, что перенаправление на file:/// URL-адреса невозможно, и вы можете перенаправить файлы только внутри вашего расширения, если они доступны через Интернет .Однако, URL data: и http: работают нормально.

1 голос
/ 07 апреля 2012

В Windows вы можете использовать Proxomitron (proxomitron.info), который является локальным прокси-сервером, который может перехватывать любую страницу или файл, загружаемый в ваш браузер, и изменять его с помощью регулярных выражений (без анализа DOM), как вы захотите, до того, как это произойдет. отображается браузером.

...