Итак, ваш запрос на самом деле уже, чем предполагает заголовок - вы специально ищете HTTP-запросы.
Я использую для этого ngrep, который сочетает в себе функции типов tcpdump и grep. например:
sudo ngrep -d eth0 '^(GET|POST) ' port 80
Это даст вам текстовый вывод. При желании вы можете использовать опцию -w, чтобы записать совпавшие пакеты в файл в формате tcpdump.
Используйте -d, как указано выше, чтобы указать интерфейс, поскольку -i используется как в grep для нечувствительности к регистру.
] Вышеупомянутое также будет включать исходящие запросы и прочее, что вам может не понадобиться. добавьте параметры типа tcpdump по мере необходимости.
Если вы отлаживаете запросы к определенному URL-адресу, вы можете использовать это, чтобы сделать регулярное выражение более конкретным. например
sudo ngrep '^(GET|POST) /my/soap/interface .*Host: myhost.example.com' 'dst port 80 and dst host myhost.example.com'
В необычном случае, когда запрос разделен на несколько пакетов с заголовком хоста во втором пакете, вышеуказанное может не улавливать некоторые запросы. В основном это не имеет значения, но вы всегда можете записать больше, чем вам нужно, с помощью tcpdump, разбить его на файлы с помощью chaosreader, а затем начать поиск файлов с помощью grep.
Вам, вероятно, нужен не просто первый пакет - первые пакеты сеанса TCP - это трехстороннее рукопожатие, которое в первую очередь устанавливает сеанс. Однако tcpdump
действительно имеет флаг -c
, который позволяет вам захватывать определенное количество пакетов.
Вывести захваченный файл в файл (параметр -w
).
Вы можете проанализировать его с помощью wirehark
впоследствии с мощным фильтрующим движком. У вас будет доступ ко всей необходимой информации: заголовки, полезная нагрузка SOAP и т. Д.