Heim >Web-Frontend >js-Tutorial >Wie erfasse ich HTTP-Antworttexte innerhalb einer Chrome-Erweiterung?

Wie erfasse ich HTTP-Antworttexte innerhalb einer Chrome-Erweiterung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 03:42:02324Durchsuche

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

So erfassen Sie HTTP-Antwortkörper in Chrome-Erweiterungen

Einführung:

In Chrome-Erweiterungen Das Abrufen von Informationen über HTTP-Anfragen ist für viele Aufgaben unerlässlich, beispielsweise für die Analyse des Netzwerkverkehrs oder die Änderung von Antworten. Der Zugriff auf Anforderungstexte ist zwar unkompliziert, das Abrufen von Antworttexten stellt jedoch eine größere Herausforderung dar.

HTTP-Antworttexte abrufen:

Anfangs war der direkte Zugriff auf Antworttexte über Chrome-Erweiterungen nahezu unmöglich unmöglich. Die Lösung liegt nun jedoch in der Verwendung der API Network.getResponseBody aus dem Chrome DevTools-Protokoll.

Verwendung der API Network.getResponseBody:

Um Antworttexte mithilfe der Network.getResponseBody-API zu erfassen, führen Sie die folgenden Schritte aus:

  1. Debuggen aktivieren: Hängen Sie den Chrome-Debugger mit chrome.debugger.attach() und an die aktuelle Registerkarte an Aktivieren Sie den Befehl Network.enable().
  2. Auf Antwortereignisse warten: Abonnieren Sie das Network.responseReceived-Ereignis, das ausgelöst wird, wenn eine Antwort empfangen wird.
  3. Antworttext abrufen: Wenn das Ereignis empfangen wird, senden Sie einen Network.getResponseBody-Befehl mit der requestId der Antwort, um deren Text abzurufen.

Codebeispiel:

<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>

Hinweis:

Die Debugger-Funktionalität, einschließlich dieser API, ist nur in Hintergrundskripten verfügbar. Sie können diese Technik nicht in Inhaltsskripten verwenden, die innerhalb von Seitenkontexten ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie erfasse ich HTTP-Antworttexte innerhalb einer Chrome-Erweiterung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn