我正在寻找Python中的实现,该实现将允许我使用DNS(EDNS)“客户端子选项”扩展名解析DNS地址。此选项可以为内容交付系统提供更好的DNS解析-最终,可以实现更快的Internet路由。可以在这里更好地解释动机: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')
创建您的DNS数据包:
message = dns.message.make_query('google.com', 'A')
添加edns选项:
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的测试工具,而不是因为您必须以这种方式使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句