Maison > interface Web > js tutoriel > Comment capturer les corps de réponse HTTP dans une extension Chrome ?

Comment capturer les corps de réponse HTTP dans une extension Chrome ?

Mary-Kate Olsen
Libérer: 2024-10-25 03:42:02
original
331 Les gens l'ont consulté

How do I capture HTTP response bodies within a Chrome extension?

Comment capturer les corps de réponse HTTP dans les extensions Chrome

Introduction :

Dans les extensions Chrome , l'obtention d'informations sur les requêtes HTTP est essentielle pour de nombreuses tâches, telles que l'analyse du trafic réseau ou la modification des réponses. Bien qu'il soit simple d'accéder aux corps de requête, la récupération des corps de réponse pose un plus grand défi.

Obtention des corps de réponse HTTP :

Au départ, accéder aux corps de réponse directement à partir des extensions Chrome était presque impossible. impossible. Cependant, la solution réside désormais dans l'utilisation de l'API Network.getResponseBody du protocole Chrome DevTools.

Utilisation de l'API Network.getResponseBody :

Pour capturer les corps de réponse à l'aide de l'API Network.getResponseBody, procédez comme suit :

  1. Activer le débogage : attachez le débogueur Chrome à l'onglet actuel à l'aide de chrome.debugger.attach() et activez la commande Network.enable().
  2. Écoutez les événements de réponse : abonnez-vous à l'événement Network.responseReceived, qui est déclenché lorsqu'une réponse est reçue.
  3. Obtenir le corps de la réponse : lorsque l'événement est reçu, envoyez une commande Network.getResponseBody avec le requestId de la réponse pour récupérer son corps.

Exemple de code :

<code class="javascript">chrome.tabs.query(
  { currentWindow: true, active: true },
  function (tabArray) {
    let currentTab = tabArray[0];
    chrome.debugger.attach(
      { tabId: currentTab.id },
      "1.0",
      onAttach.bind(null, currentTab.id)
    );
  }
);

function onAttach(tabId) {
  chrome.debugger.sendCommand({ tabId: tabId }, "Network.enable");
  chrome.debugger.onEvent.addListener(allEventHandler);
}

function allEventHandler(debuggeeId, message, params) {
  if (currentTab.id != debuggeeId.tabId) {
    return;
  }
  if (message == "Network.responseReceived") {
    chrome.debugger.sendCommand(
      { tabId: debuggeeId.tabId },
      "Network.getResponseBody",
      { requestId: params.requestId },
      function (response) {
        // Access the response body in 'response.body'
        // Close the debugger (optional)
        chrome.debugger.detach(debuggeeId);
      }
    );
  }
}</code>
Copier après la connexion

Remarque :

La fonctionnalité du débogueur, y compris cette API, n'est disponible que dans les scripts d'arrière-plan. Vous ne pouvez pas utiliser cette technique dans les scripts de contenu, qui s'exécutent dans des contextes de page.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal