"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment récupérer le corps de la réponse HTTP dans les extensions Chrome : est-ce possible ?

Comment récupérer le corps de la réponse HTTP dans les extensions Chrome : est-ce possible ?

Publié le 2024-11-08
Parcourir:148

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

Comment récupérer le corps de réponse HTTP dans les extensions Chrome

La récupération du corps de réponse HTTP dans un script d'arrière-plan d'extension Chrome présente un défi. Bien que l'extension puisse accéder au corps de la requête à l'aide de chrome.webRequest.onBeforeRequest, il n'est généralement pas possible d'obtenir le corps de la réponse.

Pour surmonter cette limitation, une approche créative consiste à exploiter l'API chrome.debugger. Cette API permet aux extensions de déboguer et d'interagir avec l'activité réseau du navigateur. Voici une implémentation détaillée :

  1. Établissez une connexion à l'onglet actuel à l'aide de chrome.tabs.query et chrome.debugger.attach.
  2. Activez le débogage réseau en envoyant la commande Network.enable dans l'onglet.
  3. Enregistrez un écouteur d'événement pour les événements Network.responseReceived.
  4. Lorsqu'une réponse est reçue, envoyez la commande Network.getResponseBody en spécifiant le requestId à partir des paramètres de l'événement.
  5. Le corps de la réponse sera renvoyé par la commande, vous permettant de le traiter selon vos besoins.
// 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 ...
    });
  }
});

Cette méthode vous permet de récupérer le corps de la réponse HTTP sans avoir besoin de pages de navigateur supplémentaires ou de services tiers. Notez que vous pouvez fermer la session de débogage à l'aide de chrome.debugger.detach lorsque vous avez terminé.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729758196. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3