Как сбросить все HTTP-запросы с Apache

27

Можно ли сбросить целые HTTP-запросы с помощью Apache? Мне нужно отслеживать все HTTP-заголовки входящих запросов. Как это сделать?

Alex
источник

Ответы:

30

Я думаю, что вместо Apache вы можете использовать анализатор пакетов , также известный как анализатор пакетов. Двумя наиболее популярными из них являются, вероятно, TCPDump и Wireshark , которые бесплатны и имеют версии для операционных систем Windows и * nix. Они покажут вам весь трафик, поступающий через интерфейс, а не только то, что видит Apache. Но вы можете использовать фильтры для ограничения указанным портом, например, 80 для http.

tcpdump:
следующая команда, запущенная с сервера, покажет вам все пакеты, предназначенные для порта 80:

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

Переключатель с большой буквы X выводит полезную нагрузку в шестнадцатеричном и ASCII-формате. Переключатель s с 0 означает получение всего пакета. «tcp dst port 80» означает фильтровать и показывать только пакеты, предназначенные для порта 80, в заголовке tcp.

Wireshark:
для более удобной для пользователя версии, если у вас работает графический интерфейс, рассмотрите wireshark (формально известный как ethereal).

Кайл Брандт
источник
1
Спасибо, Кайл, как мне извлечь информацию заголовка HTTP из выходных данных tcpdump?
Алекс
1
Алекс: Знаете что, Wireshark сделает это намного проще. Вы можете использовать имя файла -r, чтобы сохранить дамп в файл, а затем открыть его с помощью wireshark на рабочем столе.
Кайл Брандт
Да, и отбросьте 'dst', если вы хотите получить ответы.
Кайл Брандт
1
-Aтолько для текста (без шестнадцатеричного дампа):sudo tcpdump -A -s 0 'tcp dst port 80'
Брент Фауст
12

может быть сброс файлов cookie ? в противном случае - посмотрите на mod_dumpio .

PQD
источник
1
mod_dumpio звучит круто! Вероятно, более простой способ вывести информацию, если используется SSL (хотя это может сделать и Wirehsark). +1 :-)
Кайл Брандт
8

Базовое прослушивание пакетов легко с ngrep, гибридом tcpdump и grep. В некоторых случаях, если вы хотите увидеть, как веб-браузеры взаимодействуют с веб-серверами, и проверить заголовки HTTP.
В этом примере запустите ngrep на веб-сервере следующим образом:

$ ngrep port 80

Вы также можете отфильтровать запрос http к запросу «GET /» на порт 80 следующим образом:

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

На стороне клиента есть полезный инструмент, который называется Tamper Data. Это расширение Firefox, которое дает вам возможность просматривать, записывать и даже изменять исходящие HTTP-запросы.
Вы можете найти больше информации здесь

Али Мезгани
источник
7

Вместо использования tcpdump или wireshark используйте tcpflow. Это капля замены tcpdump, но создает файл для каждой стороны каждого соединения, поэтому вам не нужно пытаться декодировать поток самостоятельно.

Дэвид Пашли
источник
Спасибо за это. Я использую mod_negotiate, и мой curl () подобрал файлы .bak по сравнению с .php, в то время как браузеры нашли .php. Крепкий орешек.
mckenzm
0

Apache имеет эту встроенную функциональность; просто увеличьте уровень журнала до trace7или trace8:

LogLevel trace8

Обратите внимание, что это сбросит много данных. Вы были предупреждены.

Воутер Верхелст
источник