Cara membuang seluruh permintaan HTTP dengan apache

27

Apakah mungkin untuk membuang seluruh permintaan HTTP dengan apache? Saya perlu melacak semua header HTTP permintaan yang masuk. Bagaimana cara melakukannya?

Alex
sumber

Jawaban:

30

Saya pikir apa yang Anda inginkan daripada Apache mungkin menjadi penganalisa paket , Juga dikenal sebagai packet sniffer. Dua yang paling populer mungkin TCPDump dan Wireshark , keduanya gratis dan memiliki versi untuk sistem operasi Windows dan * nix. Ini akan menunjukkan kepada Anda semua lalu lintas yang masuk pada antarmuka, bukan hanya apa yang dilihat Apache. Tetapi Anda dapat menggunakan filter untuk membatasi ke port yang ditentukan, seperti 80 untuk http.

tcpdump:
Perintah berikut ini dijalankan dari server akan menunjukkan kepada Anda semua paket yang ditujukan untuk port 80:

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

Sakelar X modal membuang muatan dalam hex dan ASCII. Saklar s dengan 0 berarti untuk mendapatkan seluruh paket. 'tcp dst port 80' berarti untuk memfilter dan hanya menampilkan paket-paket yang ditujukan untuk port 80 di header tcp.

Wireshark:
Untuk versi yang lebih ramah pengguna, jika Anda menjalankan GUI, pertimbangkan wireshark (secara resmi dikenal sebagai ethereal).

Kyle Brandt
sumber
1
Terima kasih Kyle, bagaimana cara mengekstrak informasi header HTTP dari uoutput tcpdump?
Alex
1
Alex: Anda tahu, Wireshark akan membuatnya lebih mudah. Anda dapat menggunakan nama file -r untuk menyimpan dump ke file, dan kemudian membukanya dengan wireshark di desktop Anda.
Kyle Brandt
Oh, dan jatuhkan 'dst' jika Anda ingin balasan juga.
Kyle Brandt
1
-Ahanya untuk teks (tidak ada hex dump):sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust
12

mungkin membuang cookie ? jika tidak - lihat mod_dumpio .

pQd
sumber
1
mod_dumpio terdengar keren! Mungkin cara yang lebih mudah untuk membuang informasi jika menggunakan SSL (meskipun wirehsark juga bisa melakukannya). +1 :-)
Kyle Brandt
8

Paket dasar sniffing mudah dengan ngrep hibrida dari tcpdump dan grep. Dalam skenario tertentu jika Anda berkeinginan untuk melihat bagaimana browser web berkomunikasi dengan server web, dan untuk memeriksa header HTTP.
Dalam contoh ini, jalankan ngrep di server web seperti ini:

$ ngrep port 80

Anda juga dapat memilih untuk memfilter permintaan http ke permintaan "GET /" ke port 80 dengan:

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

Sisi klien, ada alat yang berguna bernama Tamper Data itu adalah Ekstensi Firefox yang memberi Anda kekuatan untuk melihat, merekam, dan bahkan memodifikasi permintaan HTTP keluar.
Anda dapat menemukan informasi lebih lanjut di sini

Ali Mezgani
sumber
7

Daripada menggunakan tcpdump atau wireshark, gunakan tcpflow. Ini adalah pengganti tcpdump, tetapi membuat file untuk setiap sisi dari setiap koneksi, jadi Anda tidak perlu mencoba memecahkan kode stream sendiri.

David Pashley
sumber
Terima kasih untuk ini. Saya menggunakan mod_negotiate dan curl saya () mengambil file .bak dalam preferensi untuk .php sementara browser menemukan .php. Kacang yang keras untuk dipecahkan.
mckenzm
0

Apache memiliki fungsionalitas bawaan; cukup tingkatkan log ke trace7atau trace8:

LogLevel trace8

Perhatikan bahwa ini akan membuang banyak data. Anda telah diperingatkan.

Wouter Verhelst
sumber