Для моніторингу трафіку HTTP між сервером та веб-сервером я зараз користуюся tcpdump
. Це працює відмінно, але я хотів би, щоб позбутися від деяких непотрібних даних на виході (я знаю про tcpflow
та wireshark
, але вони не завжди доступні в моєму оточенні).
На tcpdump
чоловіковій сторінці:
Щоб надрукувати всі HTTP-пакети IPv4 до і з порту 80, тобто друкувати лише пакети, які містять дані, а не, наприклад, пакети SYN та FIN та пакети, що стосуються лише ACK.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Ця команда
sudo tcpdump -A 'src example.com і tcp порт 80 і (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '
забезпечує наступний вихід:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Прапори [P.], seq 918827135: 918827862, ack 351213824, win 4316, варіанти [nop, nop, TS val 4093273405 ecr 869959372], довжина 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 200 ОК сервер: Apache / 2.2.3 (Red Hat) Тип вмісту: текст / html; charset = UTF-8 Дата: Сб, 14 листопада 2009 18:35:22 GMT Вік: 7149
Тривалість вмісту: 438<HTML> <HEAD> <TITLE> Прикладна веб-сторінка </TITLE> </HEAD> <body>
<p> Ви дійшли до цієї веб-сторінки ... </p> </BODY> </HTML>
Це майже ідеально, за винятком виділеної частини. Що це, кінець - що ще важливіше - як я його позбудуся? Можливо, це лише трохи підлаштувати вираз у кінці команди?