python - 如何使用 scapy 模块发送请求并接受三个答案?

标签 python python-3.x ip scapy

我正在尝试使用 scapy 模块向 4.2.2.4 服务器询问一些 url IP 地址。

大多数查询请求只会得到一个答复,该答复可能有一个或多个IP地址。但“facebook.com”不同。服务器会给我三个答案,每个答案都有一个IP地址。

为什么会发生这种情况?如何在我的 python 程序中获得所有三个答案?我尝试了 sr() 和 sr1() 函数,但它们都只得到一个答案。

我的代码:

from scapy.all import *
url = 'facebook.com'
server = '4.2.2.4'
result1, unanswer = sr(IP(dst=server) / UDP() / DNS(qd=DNSQR(qname=url, qtype='A', qclass='IN')))
result2 = sr1(IP(dst=server) / UDP() / DNS(qd=DNSQR(qname=url, qtype='A', qclass='IN')))

我得到的结果(部分答案):

\an \

|###[ DNS Resource Record ]###

| rrname = 'facebook.com.'

......

| rdata = '173.252.103.64'

我用wireshark得到的结果: The result I got with wireshark

最佳答案

你好,

您可以在 sr() 中使用 multiple 关键字参数:

sr([...], multiple=True)

关于python - 如何使用 scapy 模块发送请求并接受三个答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827924/

相关文章:

python:获取不带小数位的数字

python - 如何将行数堆叠到一行并分配id

python - 无法使用请求从相同的网址收集个人资料名称

javascript - 使用登录 session IP 检查用户 IP 是否安全

r - 在R中更改Tor身份

c# - 如果需要很多时间,请跳到下一次迭代 c#

python - 基于按组 ID 索引的组中最大 3 个元素的新列

python - 如何根据 PANDAS 中单个数据框的顶部和底部创建新列?

python-3.x - 什么是 "foo"在使用 Python3.x 时用于 "def function(foo):"

python - yield 中的合并排序函数出错