Анализ URL-адресов в Python

Кто-нибудь знает, как написать анализатор данных в режиме реального времени на Python, который извлекает исходный IP-адрес и полный URL-адрес, к которому осуществляется доступ? Я просмотрел извлечение данных из urlsnarf, однако IPv6 не поддерживается (и соединения будут осуществляться с хостами IPv6).

В то время как я могу получить данные из tcpdump и greping для GET/POST, это оставит мне просто путь на веб-сервере, и я не получу связанное полное доменное имя. К сожалению, использование SQUID с IPv6 TPROXY невозможно из-за конфигурации среды.

Есть ли у кого-нибудь идеи о том, как это сделать с привязками Python для libpcap? Ваша помощь будет высоко оценена :)

Спасибо :)


person platten    schedule 25.03.2011    source источник
comment
Scapy должен иметь некоторые привязки IPv6. Как только вы преодолеете препятствие IPv6, вам останется только разобрать заголовки http. Это все на прикладном уровне, поэтому IPv6 не должен влиять на отправляемые данные.   -  person krs1    schedule 25.03.2011
comment
stackoverflow.com/questions/462439/ возможно Связанный.   -  person Stephen Paulger    schedule 25.03.2011


Ответы (1)


К сожалению, с IPv6 вы застряли, выполняя собственную пересборку TCP. Хорошей новостью является то, что вас интересуют только данные URL, которые должны (как правило) быть в одном или двух пакетах.

Вы должны быть в состоянии избежать использования pylibpcap для этого. Вы захотите использовать setfilter на своем объекте pcap, чтобы убедиться, что вы просматриваете только TCP-трафик. По мере продвижения вперед в цикле pcap вы будете применять некоторые регулярные выражения HTTP к полезной нагрузке. Если у вас есть то, что выглядит как HTTP-трафик, попробуйте проанализировать заголовок, чтобы получить данные URL. Надеюсь, вы получите полный URL-адрес с разрывом строки перед концом пакета. Если нет, вам придется выполнить легкую повторную сборку TCP.

О, и вы захотите использовать socket.inet_ntop и socket.getaddrinfo для вывода информации о хосте IPv6.

person Justin    schedule 27.03.2011