我正在寻找一种 Python 实现,它允许我使用 DNS (EDNS) "client sub options"的扩展来解析 DNS 地址。此选项可为内容交付系统提供更好的 DNS 解析 - 并最终实现更快的互联网路由。动机在这里更好地解释:http://www.afasterinternet.com/howitworks.htm
另一个名称是“vandergaast-edns-client-subnet”
可以在此处获得 dig 的实现:
https://www.gsic.uva.es/~jnisigl/dig-edns-client-subnet.html
我正在寻找一个可以做同样事情的 python 实现。
最佳答案
我是 dnspython-clientsubnet 的开发者/维护者。它旨在在您的代码中用作 dnspython 的添加剂。我刚刚发布了 2.0.0 版(在尝试做你想做的事之后)这让一切变得更容易
pip install clientsubnetoption
(适用于 Python2 和 Python3) clientsubnetoption
和依赖项:import dns
import clientsubnetoption
ClientSubnetOption
:cso = clientsubnetoption.ClientSubnetOption('1.2.3.4')
message = dns.message.make_query('google.com', 'A')
message.use_edns(options=[cso])
message
进行查询:r = dns.query.udp(message, '8.8.8.8')
r.options
并且可以有多个,因此您可能需要遍历它们以找到 ClientSubnetOption
对象。for options in r.options:
if isinstance(options, ClientSubnetOption):
# do stuff here
pass
clientsubnetoption.py 中的代码用作单元测试和支持 edns-clientsubnet 的测试工具,而不是因为您必须以这种方式使用它。
关于python - 使用 Python 中的客户端子网选项解析 dns (edns),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28609181/