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

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

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

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

4b9b3361

Ответ 1

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

Это было невозможно, когда OP задал вопрос, но вскоре Chrome выпустил экспериментальный API WebRequest. Но теперь они были официально включены в расширение 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

Ответ 3

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

Ответ 4

Имейте в виду, что начиная с 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