25 Stimmen

Den HTTP-Anforderungskörper von einer Chrome-Erweiterung abfangen

Ich bin mir bewusst, dass chrome.webRequest.onBeforeRequest eine Anfrage abfangen, analysieren und blockieren kann, aber es ermöglicht nur den Zugriff auf die Anfrageheader und nicht den Anfragekörper (so weit ich weiß).

Beispiel-Anwendungsfall: das Abfangen von Formularwerten.

Es scheint eine API-Änderungsvorschlag hier zu geben, die genau das vorschlägt.

Gibt es einen anderen Weg, wie dies erreicht werden könnte?

Danke.

21voto

Marmoy Punkte 7874

Diese Funktionalität wurde jetzt zur API hinzugefügt, siehe die Dokumentation.

Um auf den Body zuzugreifen, müssen Sie folgendes tun:

chrome.webRequest.onBeforeRequest.addListener(
    function(details)
    {
        console.log(details.requestBody);
    },
    {urls: ["https://myurlhere.com/*"]},
    ['requestBody']
);

14voto

Taher Elsheikh Punkte 137

Hier ist was ich gemacht habe

  1. Ich habe den requestBody benutzt, um den Post-Anforderungstext zu erhalten
  2. Ich habe ein decoder benutzt, um den Text in einen String zu konvertieren

Hier ist ein Beispiel

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        if(details.method == "POST")
        // Verwenden Sie dies, um den Text Ihres Beitrags zu decodieren
            var postedString = decodeURIComponent(String.fromCharCode.apply(null,
                                      new Uint8Array(details.requestBody.raw[0].bytes)));
           console.log(postedString)

    },
    {urls: [""]},
    ["blocking", "requestBody"]
);

2voto

patrickgamer Punkte 513

Während Sie möglicherweise nicht in der Lage sind, abzufangen, können Sie den Standard-AJAX-Ansatz verwenden, um ihn mit Klebeband zu fixieren. Statt den href-Anfrage zu erstellen, prüfen Sie, ob Sie einen asynchronen Aufruf machen und diesen in ein nicht präsentiertes HTML-Objekt speichern können. Dann kratzen/lesen/analysieren/was auch immer Ihre Körperkriterien sind, und wenn sie bestehen, schieben Sie dieses Körperobjekt wieder nach oben zum aktuellen Fenster/Seite.

Das Speichern des Inhalts in einem unterdrückten Element und dann die Verwendung dieses Elements für den Inhalt würde es Ihnen ermöglichen, Duplikat-Aufrufe zu vermeiden. Der Nachteil ist, dass Sie den vollständigen Inhalt für Dinge erhalten werden, die Sie am Ende nicht verwenden. Das kann oder kann kein Bandbreiten-/Geschwindigkeitsproblem sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X