"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar o corpo da resposta HTTP em extensões do Chrome: é possível?

Como recuperar o corpo da resposta HTTP em extensões do Chrome: é possível?

Publicado em 2024-11-08
Navegar:903

How to Retrieve HTTP Response Body in Chrome Extensions:  Is it Possible?

Como recuperar o corpo da resposta HTTP em extensões do Chrome

Recuperar o corpo da resposta HTTP dentro de um script de plano de fundo de extensão do Chrome apresenta um desafio. Embora a extensão possa acessar o corpo da solicitação usando chrome.webRequest.onBeforeRequest, normalmente não é possível obter o corpo da resposta.

Para superar essa limitação, uma abordagem criativa envolve aproveitar a API chrome.debugger. Esta API permite que extensões depurem e interajam com a atividade de rede do navegador. Aqui está uma implementação detalhada:

  1. Estabeleça uma conexão com a guia atual usando chrome.tabs.query e chrome.debugger.attach.
  2. Ative a depuração de rede enviando o comando Network.enable para a guia.
  3. Registre um ouvinte de evento para eventos Network.responseReceived.
  4. Quando uma resposta for recebida, envie o comando Network.getResponseBody especificando o requestId dos parâmetros do evento.
  5. O corpo da resposta será retornado pelo comando, permitindo que você o processe conforme necessário.
// Attach to the current tab and enable network debugging.
chrome.tabs.query({ currentWindow: true, active: true }, tabs => {
  chrome.debugger.attach({ tabId: tabs[0].id }, '1.0', debuggeeId => {
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.enable');
  });
});

// Listen for response received events.
chrome.debugger.onEvent.addListener((debuggeeId, message, params) => {
  if (debuggeeId.tabId !== currentTab.id) return;
  if (message === 'Network.responseReceived') {
    // Get the response body by sending a command.
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.getResponseBody', { requestId: params.requestId }, response => {
      // The response body is now available.
      // ... Process the response body ...
    });
  }
});

Este método permite recuperar o corpo da resposta HTTP sem a necessidade de páginas adicionais do navegador ou serviços de terceiros. Observe que você pode fechar a sessão de depuração usando chrome.debugger.detach quando terminar.

Declaração de lançamento Este artigo foi reimpresso em: 1729758196 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3