Chciałbym wyświetlić nagłówki HTTP wysłane z Apache (nasłuch na porcie 80) do Tomcat (na porcie 4080) na komputerze z systemem Linux.
Według Wikipedii ,
Pola nagłówka to pary nazwa-wartość rozdzielone dwukropkami w formacie ciągu tekstowego.
Próbowałem kilka wariantów następującego tcpdump
polecenia:
$ sudo tcpdump -lnX dst port 4080 -c 10
11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143>
0x0000: 4500 0065 3a9f 4000 3f06 0084 628a 9ec4 E..e:.@.?...b...
0x0010: 628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1 b............K..
0x0020: 8018 0017 fb43 0000 0101 080a 4708 d442 .....C......G..B
0x0030: 1e5c b127 4845 4144 202f 6461 7070 6572 .\.'HEAD./dapper
0x0040: 5f73 6572 7669 6e67 2f41 644d 6f6e 6b65 _serving/AdMonke
0x0050: 793f y?
Wynik był zawsze taki sam - dziwna mieszanka bełkotu i angielskich słów (np HEAD
.).
Jak wyświetlić nagłówki w formacie czytelnym dla człowieka?
http
rhel6
http-headers
tcpdump
Adam Matan
źródło
źródło
Odpowiedzi:
Oto jeden linijka, którą wymyśliłem do wyświetlania nagłówków HTTP żądań i odpowiedzi za pomocą
tcpdump
(co powinno również działać w twoim przypadku):Ogranicza odcięcie pakietu przy 10 KB i zna tylko polecenia GET, POST i HEAD, ale powinno to wystarczyć w większości przypadków.
EDYCJA : zmodyfikowałem go, aby pozbywał się buforów na każdym kroku, aby był bardziej responsywny. Potrzebuje teraz Perla i stdbufa, więc użyj oryginalnej wersji, jeśli ich nie masz: EDYCJA : Zmieniono docelowe skrypty portu z 80 na 4080, aby faktycznie nasłuchiwać ruchu, który przeszedł już przez apache, zamiast bezpośredniego ruchu zewnętrznego docierającego do portu 80:
Kilka wyjaśnień:
źródło
Możesz uzyskać coś zbliżonego do tego, czego chcesz
-A
, npPamiętaj, aby
-s 0
upewnić się, że otrzymałeś cały pakiet.Alternatywnie możesz użyć
wireshark
do interaktywnego przeglądania nagłówków.źródło
-A
i-s 0
uzyskałem tę samą wydajność.-X
.tcpdump -s 0 -A dst port 4080
dajeE..e..@.?.$bb...b....:......w........Q.....G..1.b..HEAD /dapper_serving/AdMonkey?ping=1 HTTP/1.0
.-s 0
a potem nicHTTP/1.0
nie ma, żądanie nie zawiera nagłówków HTTP.Spróbuj użyć http://justniffer.sourceforge.net/ To lepsze narzędzie lub Wireshark z opcją „Follow TCP Flow”, jest tylko wiele lepszych opcji niż tcpdump, aby zobaczyć nagłówki (żądania / odpowiedzi)
źródło