2012-04-21 2 views
8

Я пытаюсь добавить несколько дополнительных параметров к URL-адресу, который пользователь вводил (до загрузки страницы). Можно ли это сделать?Возможно ли переписать url (с дополнительными параметрами) с расширением Chrome

Например, если пользователь www.google.com, я хотел бы добавить ?q=query к URL (окончательный:.. www.google.com?q=query

Благодаря

ответ

8

webRequest API может быть то, что вам нужно Этот код идет в фоновой странице :

chrome.webRequest.onBeforeRequest.addListener(
    function(details) { 
     if(details.url == "http://www.google.com/") 
      return {redirectUrl: "http://www.google.com/?q=defaultquery" }; 
    }, 
    {urls: ["http://www.google.com/*"]}, 
    ["blocking"]); 

Это крайне специфическое правило, которое перенаправляет посещения http://www.google.com/ с http://www.google.com/?q=defaultquery, но я думаю, что вы может увидеть, как расширить его, чтобы добавить больше функциональности.

Обратите внимание, что это перенаправляет все пытается достичь http://www.google.com/, включая запросы Ajax и iframe.

За документацию, вам нужно будет добавить webRequest и webRequestBlocking разрешения вместе с разрешениями на хост для каждого хоста вы планируете перехватывать:

"permissions": [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*.google.com/", 
    ... 
], 
+0

Какой файл я должен написать этот код, как добавить на это разрешение. – anwerj

+1

@anwerjunaid Из текста выше: «Код идет на вашей фоновой странице». Необходимые разрешения описаны в [первом абзаце в документации webRequest] (http://code.google.com/chrome/extensions/webRequest.html), с которым я уже связан выше. Вам нужны 'webRequest',' webRequestBlocking' и разрешения хоста для каждого сайта, который вы хотите перехватить. – apsillers

1

Это старый вопрос, до сих пор я отвечаю на его для будущих читателей.

Изменение параметров запроса немного сложно, потому что вы можете завершить бесконечный цикл, а chrome/firefox может его обнаружить и обработать независимо от текущего состояния запроса Url.

я столкнулся с этой ситуацией в моем хромированном расширении Requestly где пользователи используются Replace Rule и заменили www.google.com с www.google.com?q=query или сделали что-то подобное.

Проблема с этим подходом заключается в том, что браузер может перехватить URL-адрес запроса после добавления параметра запроса, чтобы параметр был добавлен несколько раз и исказил URL-адрес. Поэтому вам необходимо обеспечить одно из следующих условий: -

  1. Не перехватывайте запрос после его перенаправления.
  2. Проверьте, существует ли параметр, не перенаправляйте его.

Как правильно указал @passillers в своем ответе, вы должны использовать API webRequest для внесения любых изменений в URL. Посмотрите на его answer и напишите свой код соответствующим образом.

На всякий случай вы ищете уже доступное решение, попробуйте Requestly's Query Parameter Rule. Вот скриншот того, как он выглядит следующим образом: -

enter image description here

Для Firefox, вы можете скачать Requestly from its home page.

Смежные вопросы