Я использую tcpdump для получения данных HTTP, выполнив следующую команду:
sudo tcpdump -A -s 1492 dst port 80
Результат вышеуказанной команды:
- Заголовки, я думаю, заголовки запросов и ответов.
- Нечитаемые данные.
- URL
GET /modules/mod_news_pro_gk1/cache/stories.ilbalad.ajayeb.strange-tractor.jpg.
Мне нужен более четкий результат, например, читаемый запрос> заголовок ответа> тело ответа и т. Д. Как мне отфильтровать мои результаты?
Ответ 1 · рейтинг 214 · paulz
Существуют фильтры tcpdump для HTTP GET и HTTP POST (или для обоих плюс тело сообщения):
Запустите man tcpdump | less -Ip examples, чтобы увидеть несколько примеров
Вот фильтр tcpdump для HTTP GET (GET = 0x47, 0x45, 0x54, 0x20):
sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
Вот фильтр tcpdump для HTTP POST (POST = 0x50, 0x4f, 0x53, 0x54):
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
Отслеживайте HTTP-трафик, включая заголовки запросов и ответов и тело сообщения (источник):
tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Для получения дополнительной информации об изменении битов в заголовке TCP см .: Генератор фильтра захвата с сопоставлением строк (ссылка на объяснение Сакэ Блока).
Ответ 2 · рейтинг 34 · Brian Campbell
Я бы порекомендовал использовать Wireshark, в котором есть опция "Follow TCP Stream", которая позволяет очень легко увидеть полную запросы и ответы для конкретного TCP-соединения. Если вы предпочитаете использовать командную строку, вы можете попробовать tcpflow, инструмент, предназначенный для захвата и восстановления содержимое TCP-потоков.
В других вариантах можно использовать прокси-сервер отладки HTTP, например Charles или Fiddler, как предлагает EricLaw. Они имеют то преимущество, что они имеют особую поддержку HTTP, чтобы упростить работу с различными типами кодировок, а также другие функции, такие как сохранение запросов для их воспроизведения или редактирование запросов.
Вы также можете использовать такой инструмент, как Firebug (Firefox), Web Inspector (Safari, Chrome и другие браузеры на основе WebKit) или Opera Dragonfly, все из которых предоставляют некоторую возможность просматривать заголовки и тела запросов и ответов (хотя большинство из них не позволяет вам видеть точный поток байтов, а вместо этого то, как браузеры анализируют запросы).
И, наконец, вы всегда можете создавать запросы вручную, используя что-то вроде telnet, netcat или socat, чтобы подключиться к порту 80 и ввести запрос вручную, или с помощью такого инструмента, как htty, чтобы упростить создание запроса и проверку ответа.
Ответ 3 · рейтинг 6 · thinker007
Вот еще один вариант: Chaosreader
Поэтому мне нужно отладить приложение, которое отправляет XML в стороннее приложение. Я нашел замечательный небольшой Perl-скрипт, который выполняет всю тяжелую работу - вы просто забиваете его в выходной файл tcpdump, и он выполняет все манипуляции и выводит все, что вам нужно ...
Скрипт называется chaosreader0.94. См. http://www.darknet.org.uk/2007/11/chaosreader-trace-tcpudp-sessions-from-tcpdump/.
Это сработало, как угощение, я сделал следующее:
tcpdump host www.blah.com -s 9000 -w outputfile; perl chaosreader0.94 outputfile