Python中的URL嗅探

5 投票
1 回答
1980 浏览
提问于 2025-04-16 14:25

有没有人知道怎么用Python写一个实时数据嗅探器,能够提取出发起的IP地址和正在访问的完整网址?我看过urlsnarf这个工具,但它不支持IPv6,而我的连接都是到IPv6主机。

虽然我可以从tcpdump中提取数据,并通过grep查找GET/POST请求,但这样只能得到网站服务器上的路径,无法获取相关的完整域名(FQDN)。不幸的是,由于环境的配置,使用SQUID和IPv6 TPROXY也不是一个选项。

有没有人有想法怎么用Python和libpcap的绑定来实现这个功能?非常感谢你的帮助 :)

谢谢 :)

1 个回答

2

不幸的是,使用IPv6时,你需要自己处理TCP数据的重组。不过好消息是,你只需要关注URL数据,这些数据通常只会在一到两个数据包中。

你可以使用pylibpcap来完成这个任务。你需要在你的pcap对象上使用setfilter,确保你只关注TCP流量。在你处理pcap循环时,可以对数据内容应用一些HTTP的正则表达式。如果你发现看起来像HTTP流量的内容,就可以尝试解析头部,以获取URL数据。希望你能得到完整的URL,并且在数据包结束前有一个换行符。如果没有,那你就需要进行一些简单的TCP重组了。

哦,对了,你还需要使用socket.inet_ntop和socket.getaddrinfo来打印出关于IPv6主机的信息。

撰写回答