Ich bin auf der Suche nach einem Befehlszeilentool, das einen bestimmten Teil abhört, glücklich jede HTTP-POST-Anforderung ausschließt und sie ausgibt.
Ich möchte es zu Testzwecken verwenden, dh zum Testen von Clients, die HTTP-POST-Anforderungen ausgeben.
Das bedeutet, dass ich das Gegenstück curl -F
suche (mit dem ich Test-HTTP-POSTs an einen HTTP-Server senden kann).
Vielleicht so etwas wie socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...
- aber socat reicht nicht aus, weil es nicht über HTTP spricht.
http
http-logging
maxschlepzig
quelle
quelle
netcat
(nc
auf einigen Systemen) die Optionen-l
(Listen) und-p
(Portnummer) verwenden.nc
für Teiltests verwenden - aber ich sehe folgende Nachteile: 1) Es sendet keinen HTTP-Statuscode 2) Ich muss Strg + D drücken, nachdem ich die Aufforderung zum Trennen der Verbindung sehe 3) Es weiß nicht wie man dann reagiert 'Expect: 100-continue' Header 4) es weiß nicht wie man mit dem 'Transfer-Encoding: chunked' HeaderAntworten:
Einfache Kernbefehlszeilen-Tools, wie z. B.
nc
,socat
scheinen nicht in der Lage zu sein, bestimmte HTTP-Vorgänge (Chunks, Übertragungscodierungen usw.) zu verarbeiten. Dies kann zu unerwartetem Verhalten im Vergleich zur Kommunikation mit einem echten Webserver führen. Mein erster Gedanke ist also, den schnellsten Weg aufzuzeigen, den ich kenne, um einen winzigen Webserver einzurichten und ihn dazu zu bringen, genau das zu tun, was Sie wollen: alle Ausgaben sichern.Der kürzeste, den ich mit Python Tornado finden konnte :
Ersetzen Sie die
pprint
Zeile, um nur die spezifischen Felder auszugeben, die Sie beispielsweiseself.request.body
oder benötigenself.request.headers
. Im obigen Beispiel wird Port 8080 an allen Schnittstellen überwacht.Alternativen dazu gibt es genug. web.py , Flasche etc.
(Ich bin ziemlich Python-orientiert, sorry)
Wenn Ihnen die Art der Ausgabe nicht gefällt, führen Sie sie trotzdem aus und versuchen Sie es
tcpdump
wie folgt:um einen echten Raw-Dump aller HTTP-POST-Anfragen zu sehen. Alternativ können Sie auch Wireshark ausführen.
quelle
pprint.pprint(self.request.body)
. Beachten Sieself.request.body
eher alsself.body
. Gleiches gilt fürself.request.headers
. Siehe tornado.readthedocs.org/en/latest/…Ich habe auch selbst danach gesucht und bin auf den http-echo-server von Node.js gestoßen :
Es akzeptiert alle Anforderungen und gibt die vollständige Anforderung einschließlich des Headers an die Befehlszeile weiter.
quelle