Come scaricare intere richieste HTTP con apache


27

È possibile scaricare intere richieste HTTP da apache? Devo tenere traccia di tutte le intestazioni HTTP delle richieste in entrata. Come farlo?

Risposte:


30

Penso che quello che vuoi invece di Apache potrebbe essere un analizzatore di pacchetti , noto anche come sniffer di pacchetti. Due dei più popolari sono probabilmente TCPDump e Wireshark , entrambi gratuiti e con versioni per sistemi operativi Windows e * nix. Ti mostreranno tutto il traffico in arrivo su un'interfaccia, non solo ciò che vede Apache. Ma puoi usare i filtri per limitarti a una porta specificata, come 80 per http.

tcpdump:
il seguente comando eseguito dal server mostrerà tutti i pacchetti destinati alla porta 80:

sudo tcpdump -s 0 -X 'tcp dst port 80'

L'interruttore X maiuscolo scarica il payload in esadecimale e ASCII. L'interruttore s con 0 significa ottenere l'intero pacchetto. 'tcp dst port 80' significa filtrare e mostrare solo i pacchetti destinati alla porta 80 nell'intestazione tcp.

Wireshark:
per la versione più intuitiva, se hai una GUI in esecuzione, considera WireShark (formalmente noto come etereo).


1
Grazie Kyle, come posso estrarre le informazioni dell'intestazione HTTP dall'output di tcpdump?
Alex

1
Alex: Sai una cosa, Wireshark lo renderà molto più semplice. È possibile utilizzare il nome -r per salvare il dump in un file, quindi aprirlo con WireShark sul desktop.
Kyle Brandt,

Oh, e rilascia il 'dst' se vuoi anche le risposte.
Kyle Brandt,

1
-Aper solo testo (senza dump esadecimale):sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust

12

forse il dumping dei cookie ? altrimenti - guarda mod_dumpio .


1
mod_dumpio sembra fantastico! Probabilmente il modo più semplice per scaricare le informazioni se si utilizza SSL (anche se wirehsark può farlo). +1 :-)
Kyle Brandt

8

Lo sniffing dei pacchetti di base è semplice con ngrep un ibrido di tcpdump e grep. In alcuni scenari, se si desidera vedere come i browser Web comunicano con i server Web e ispezionare le intestazioni HTTP.
In questo esempio, esegui un ngrep su un server web in questo modo:

$ ngrep port 80

puoi anche scegliere di filtrare la richiesta http sulla richiesta "GET /" alla porta 80:

$ ngrep -q '^GET .* HTTP/1.[01]'

Sul lato client, esiste uno strumento utile chiamato Tamper Data, un'estensione di Firefox che ti dà il potere di visualizzare, registrare e persino modificare le richieste HTTP in uscita.
Puoi trovare maggiori informazioni qui


7

Invece di usare tcpdump o WireShark, usa tcpflow. È un calo in sostituzione di tcpdump, ma crea un file per ogni lato di ogni connessione, quindi non è necessario tentare di decodificare il flusso da soli.


Grazie per questo. Sto usando mod_negotiate e il mio curl () ha raccolto i file .bak preferibilmente a .php mentre i browser hanno trovato .php. Un dado duro da rompere.
mckenzm,

0

Apache ha quella funzionalità integrata; aumenta semplicemente il livello di registro a trace7o trace8:

LogLevel trace8

Si noti che ciò scaricherà molti dati. Sei stato avvertito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.