Maison  >  Article  >  interface Web  >  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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 18:38:35230parcourir

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

Récupérer le 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.
<code class="javascript">// 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 ...
    });
  }
});</code>

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 services tiers. Notez que vous pouvez fermer la session de débogage en utilisant chrome.debugger.detach lorsque vous avez terminé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn