Jak zrzucić całe żądania HTTP za pomocą apache

27

Czy można zrzucić całe żądania HTTP przez apache? Muszę śledzić wszystkie nagłówki HTTP przychodzących żądań. Jak to zrobić?

Alex
źródło

Odpowiedzi:

30

Myślę, że zamiast Apache'a może być analizator pakietów , znany również jako sniffer pakietów. Dwa z najbardziej popularnych to prawdopodobnie TCPDump i Wireshark , oba są bezpłatne i mają wersje dla systemów operacyjnych Windows i * nix. Pokazują one cały ruch przychodzący na interfejs, a nie tylko to, co widzi Apache. Możesz jednak użyć filtrów, aby ograniczyć się do określonego portu, takiego jak 80 dla http.

tcpdump:
Poniższe polecenie uruchomione z serwera pokaże wszystkie pakiety przeznaczone dla portu 80:

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

Wielki przełącznik X zrzuca ładunek w postaci szesnastkowej i ASCII. Przełącznik s z 0 oznacza uzyskanie całego pakietu. „tcp dst port 80” oznacza filtrowanie i pokazywanie tylko pakietów przeznaczonych dla portu 80 w nagłówku tcp.

Wireshark: w
przypadku bardziej przyjaznej dla użytkownika wersji, jeśli masz GUI, rozważ wireshark (formalnie zwany ethereal).

Kyle Brandt
źródło
1
Dzięki Kyle, jak mogę wyodrębnić informacje nagłówka HTTP z wyjścia programu tcpdump?
Alex
1
Alex: Wiesz co, Wireshark znacznie to ułatwi. Możesz użyć nazwy pliku -r, aby zapisać zrzut do pliku, a następnie otworzyć go za pomocą wireshark na pulpicie.
Kyle Brandt,
Aha, i upuść „dst”, jeśli chcesz również odpowiedzi.
Kyle Brandt,
1
-Atylko do tekstu (bez zrzutu heksadecymalnego):sudo tcpdump -A -s 0 'tcp dst port 80'
Brent Faust
12

może zrzut ciasteczek ? w przeciwnym razie - spójrz na mod_dumpio .

pQd
źródło
1
mod_dumpio brzmi fajnie! Prawdopodobnie łatwiejszy sposób na zrzucenie informacji, jeśli używasz SSL (chociaż wirehsark też może to zrobić). +1 :-)
Kyle Brandt,
8

Podstawowe wąchanie pakietów jest łatwe dzięki ngrep hybrydowi tcpdump i grep. W niektórych scenariuszach, jeśli chcesz zobaczyć, w jaki sposób przeglądarki internetowe komunikują się z serwerami internetowymi, i sprawdzić nagłówki HTTP.
W tym przykładzie uruchom ngrep na serwerze sieciowym w następujący sposób:

$ ngrep port 80

możesz również przefiltrować żądanie HTTP do żądania „GET /” do portu 80 według:

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

Po stronie klienta istnieje przydatne narzędzie o nazwie Tamper Data. Jest to rozszerzenie przeglądarki Firefox, które umożliwia przeglądanie, nagrywanie, a nawet modyfikowanie wychodzących żądań HTTP.
Więcej informacji znajdziesz tutaj

Ali Mezgani
źródło
7

Zamiast używać tcpdump lub wireshark, użyj tcpflow. Jest to kropla zastępująca tcpdump, ale tworzy plik dla każdej strony każdego połączenia, więc nie musisz samodzielnie próbować dekodować strumienia.

David Pashley
źródło
Dzięki za to. Korzystam z mod_negotiate, a moja curl () wybrała pliki .bak zamiast .php, podczas gdy przeglądarki znalazły plik .php. Twardy orzech do zgryzienia.
mckenzm
0

Apache ma tę funkcjonalność wbudowaną; po prostu zwiększ poziom dziennika do trace7lub trace8:

LogLevel trace8

Pamiętaj, że spowoduje to zrzucenie dużej ilości danych. Zostałeś ostrzeżony.

Wouter Verhelst
źródło