Могу ли я изменить заголовки исходящих запросов с помощью расширения Chrome? - PullRequest
33 голосов
/ 18 июля 2010

Я не вижу ответа на этот вопрос в Руководстве разработчика , хотя, возможно, я не ищу нужное место.

Я хочу перехватывать HTTP-запросы с помощью ChromeРасширение, а затем переслать его, возможно, с новыми / другими заголовками HTTP - как я могу это сделать?

Ответы [ 4 ]

36 голосов
/ 14 января 2015

PS: Я автор этого расширения, так что вы можете обвинить меня во всем, что вам не нравится :)

Конечно, это было невозможно, когда OP задал вопрос, но вскоре Chrome выпустил экспериментальный WebRequest API . Но теперь они были официально включены в расширение Chrome. Вы можете использовать его для изменения заголовков запросов и ответов в Chrome.

Посмотрите на этот пример:

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return { requestHeaders: details.requestHeaders };
  },
  {urls: ['<all_urls>']},
  [ 'blocking', 'requestHeaders']
);

Если вы хотите использовать расширение Chrome, вы можете использовать Requestly , который позволяет вам изменять заголовки запроса и ответа по вашему желанию. Посмотрите на этот снимок:

Headers Rule

11 голосов
/ 04 февраля 2012

Изменение заголовков запросов (https://developer.chrome.com/extensions/webRequest) поддерживается в Chrome 17.

4 голосов
/ 18 июля 2010

Вы смотрите в правильном месте, но перехват HTTP-запросов еще не существует, но команда разработчиков знает, что это популярный запрос, и хотела бы получить его в ближайшее время.

0 голосов
/ 05 апреля 2019

Имейте в виду, что начиная с chrome 72, некоторые заголовки не допускаются, если вы не добавите extraHeaders в opt_extraInfoSpec Таким образом, приведенный выше пример в ответе @ sachinjain024 будет выглядеть примерно так:

chrome.webRequest.onBeforeSendHeaders.addListener(
  function(details) {
    for (var i = 0; i < details.requestHeaders.length; ++i) {
      if (details.requestHeaders[i].name === 'User-Agent') {
        details.requestHeaders.splice(i, 1);
        break;
      }
    }
    return { requestHeaders: details.requestHeaders };
  },
  {urls: ['<all_urls>']},
  [ 'blocking', 'requestHeaders', 'extraHeaders']
);

Для получения дополнительной информации, проверьте документацию Скриншот из документации https://developer.chrome.com/extensions/webRequest#life_cycle_footnote

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...