为了执行 HTTP GET,我需要发送一个数据包(GET / HTTP/1.0\n\n)并等待 3 个数据包:
我的 GET 的 ACK
GET 答案:HTTP/1.0 200 OK
和传输的 FIN ACK
我找到了两种方法:
=> 将 sr() 与多选项一起使用
=> 在发送我的 GET 请求后使用嗅探
对于 sr() 函数,问题是停止嗅探,唯一的选择是设置超时,但我的脚本将测试许多不同的站点,因此时间的答案有很多不同,可能很难选择静态超时值,其中我敢肯定,任何时候都没有网站超过它。
对于嗅探,没有同样的问题,因为我可以设置“计数”参数只接收 3 个数据包。但是很难使过滤器足够好以确保记录的 3 个数据包是我想要的 3 个(并且没有 ARP、DNS 或其他任何东西)。但主要问题有时是第一个应答数据包出现在“嗅探”启动之前(在 send(GET_PACKET) 和 answers=sniff(...) 之间)。在这种情况下,我丢失了一些信息,我的所有后处理都被破坏了。
完美的方法是使用带有“count=3”选项的 sr() 函数来仅获取 3 个数据包,但 sr() 不存在该选项。
有人有想法吗?
非常感谢
对不起我的语言,我是法国人