Ich entwickle einen einfachen HTTPS-Proxy (geschrieben in Python), der POST/GET-Anfragen/Antworten empfängt, eine Transformation anwendet und das Ergebnis schließlich an den Empfänger weiterleitet. Ich muss chunked-codierte Anfragen/Antworten in einer "Streaming" -Methode behandeln, was bedeutet, dass der Proxy, sobald ein Chunk empfangen wird, diesen transformiert und an den Empfänger weiterleitet.HTTPS-Proxy mit Unterstützung für chunked-codierte Anfragen
Bevor Sie sich für chunked-codierte Anfragen entschieden haben, habe ich mitmproxy http://mitmproxy.org/ verwendet und es hat perfekt funktioniert. Leider habe ich bemerkt, dass es wartet, bis der gesamte Körper empfangen wird, bevor ich die Antwort/Anfrage behandeln darf.
Wie kann ich einen Proxy implementieren, der chunked-codierte Anfragen/Antworten unterstützt? Hat jemand von euch jemals so etwas getan?
Dank
EDIT: MEHR INFO ON MY USE CASE
Ich brauche POST-Anfragen zu behandeln und Antworten.
In der POST-Anfrage Ich erhalte ein JSON-Objekt und ich muss einige seiner Werte verschlüsseln.
In der GET Antwort Ich erhalte ein JSON-Objekt und ich muss einige seiner Werte entschlüsseln.
Bis jetzt der folgende Code hat perfekt funktioniert:
def handle_request(self, r):
if(r.method=='POST'):
// encryption of r.get_form_urlencoded()
def handle_response(self, r):
if(r.request.method=='GET'):
// decryption of r.content
Wie kann ich das gleiche tun mit einzelnen Brocken?
EDIT: AKTUELL
Nach verschiedenen Lösungen bewerten, entschied ich mich für Squid (Proxy) + ICAP (Content Adaptation) zu gehen.
Ich habe Squid erfolgreich konfiguriert und die Leistung ist einfach großartig. Leider kann ich keinen geeigneten ICAP-Server finden (in Python, wenn möglich), um die Anpassung des Inhalts vorzunehmen (Modifikation). Ich dachte, dass diese https://github.com/netom/pyicap könnte die Arbeit tun, aber sieht aus wie es liest nicht den Körper von myPOST Anfragen.
Kennen Sie einen Python ICAP-Server, den ich zusammen mit Squid verwenden kann?
Danke
Hallo mhils, danke für deine Antwort und deinen Rat. Ich habe beide Optionen nicht so gut bekommen, aber die Option # 1 ist wahrscheinlich die beste für mich (ich möchte vermeiden, mitmproxy zu modifizieren). Wie kann ich https://github.com/mitmproxy/mitmproxy/blob/master/libmproxy/protocol/http.py verwenden, um einzelne Chunks zu verarbeiten? Könnten Sie bitte etwas genauer sein oder mir ein Beispiel geben? Danke – pAkY88
Siehe bearbeiten oben. :-) –
Hi mhils, ich habe gerade die Antwort bearbeitet und weitere Details zu meinem Anwendungsfall hinzugefügt. Wenn ich mich nicht irre, denke ich, wäre es schön, meinem Skript etwas wie "handle_chunk (self, r, chunk)" hinzuzufügen und diese Funktion von https://github.com/mitmproxy/netlib/blob/master aufzurufen /netlib/http.py#L98. Was denken Sie? – pAkY88