Перенаправление URL-адреса в расширение хром

Как я могу переадресовать хром в расширение при посещении данного URL-адреса?

Например: когда я посещаю http://yahoo.com/ я хочу перенаправить его на http://google.com/

Есть много вариантов, один из которых сложнее, чем другой.

  1. API webRequest , в частности событие onBeforeRequest . (Еще лучше, предстоящий declarativeWebRequest API ).
  2. Скрипты содержимого . Вставить location.replace('http://example.com') на странице.
  3. API tabs . Используйте событие onUpdated чтобы определить, когда страница изменила свое местоположение, и chrome.tabs.update чтобы изменить его URL. Избегайте бесконечного цикла!

Первая из них самая лучшая, потому что она активирована до того, как страница запрошена. Второй может быть активирован после выполнения запроса, но до того, как страница будет отображена ( "run_at":"document_start" ) или после ее рендеринга ( "run_at":"document_end" ). Я упомянул последний для полноты, но вы не должны его использовать, потому что другие варианты лучше.

Вот пример использования API-интерфейса webRequest , простого расширения, которое позволяет мне просматривать страницы в заливе Пират, хотя главные хосты сняты моим провайдером (фактический список URL-адресов намного длиннее, но я опустил их для ради примера).
См. Шаблоны соответствия для объяснения в форматах URL.

manifest.json

 { "name": "The Pirate Bay", "description": "Redirect The Pirate Bay to a different host", "version": "1.0", "manifest_version": 2, "background": {"scripts":["background.js"]}, "permissions": [ "webRequest", "*://thepiratebay.se/*", "*://www.thepiratebay.se/*", "webRequestBlocking" ] } 

background.js

 var host = "http://tpb.pirateparty.org.uk"; chrome.webRequest.onBeforeRequest.addListener( function(details) { return {redirectUrl: host + details.url.match(/^https?:\/\/[^\/]+([\S\s]*)/)[1]}; }, { urls: [ "*://piratebay.se/*", "*://www.piratebay.se/*" ], types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"] }, ["blocking"] ); 

Я знаю, что я немного опаздываю в игре, чтобы ответить на этот вопрос. Тем не менее, я хотел бы ответить на это для будущих читателей. Посмотри на

Запрос – расширение Chrome для изменения запросов сети.

В настоящее время вы можете установить правила для

  1. Перенаправить URL-адрес запроса на другой URL-адрес.
  2. Заблокируйте некоторые запросы.
  3. Заменить часть URL в другой строке
  4. Изменение заголовков (добавление / удаление / изменение заголовков запроса и ответа)

Скриншоты для лучшего понимания:

  • Список правил

Список правил

  • Карты типа правила

Карты типа правила

  • Новое правило перенаправления

Создание правила перенаправления

  • Правило модификации заголовков

Изменить заголовки

В дорожной карте есть много вещей, которые можно

  • Переключение агентов пользователя

.. и многое другое.

PS: Я создал это, поэтому вы можете обвинить меня, если вы не найдете это полезным 🙂

  • Расширение отказывается загружать скрипт из-за директивы политики безопасности контента
  • Как сделать элемент выбора прозрачным в Chrome?
  • Как изменить хром-пакетный идентификатор приложения Или Почему нам нужно ключевое поле в манифесте. Json?
  • maxlength игнорируется для типа ввода = «число» в Chrome
  • jQuery ведет себя странно после обновления страницы (F5) в Chrome
  • Обнаружение первого запуска / обновления Chrome
  • Как открыть всплывающее окно моего расширения с помощью JavaScript?
  • Chrome getUserMedia не запрашивает разрешения на локальном уровне
  • Удаленная отладка iOS
  • jQuery `.is (": visible ")` не работает в Chrome
  • Что означает == $ 0 (double equals dollar zero) в инструментах разработчика Chrome?
  • Interesting Posts

    Могу ли я удалить местоположения / представления из окна проводника Windows в Windows 7?

    Полный экран DialogFragment в Android

    Изменение точки останова на панели навигации при загрузке без использования МЕНЬШЕ

    Android – создание CSV-файла из значений таблицы

    Можно ли «прыгать» / «пропустить» в отладчике GDB?

    Значение приоритета в команде «ip rule»

    Ошибка «Не удалось найти главный class» при запуске jar, экспортированного Eclipse

    Замена для gpedit.msc в Windows 7 Home edition

    Является ли stream операторов ++ безопасным?

    Удаленный доступ к маршрутизатору для Linksys WRT54GL

    Шаблоны совпадений обновляют выходной файл без разбора по желанию

    Заказ файлов css и js, загруженных Meteor

    Как запустить скрипт powershell как администратора

    USB-флеш-накопитель не работает или появляется в виде пустого диска. Отчеты управления дисками «Нет носителя» с размером 0 байт

    Включая гиперссылки в ссылках на Microsoft Word 2013

    Давайте будем гением компьютера.