gpt4 book ai didi

python - 在 Python 中使用客户端子网选项解析 dns (edns)

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:21 26 4
gpt4 key购买 nike

我正在寻找一个 Python 实现,它允许我使用 DNS (EDNS)“客户端子选项”的扩展来解析 DNS 地址。此选项可为内容交付系统提供更好的 DNS 解析 - 并最终实现更快的互联网路由。此处更好地解释了动机:http://www.afasterinternet.com/howitworks.htm

它的另一个名字是“vandergaast-edns-client-subnet”

此处提供了挖掘的实现: https://www.gsic.uva.es/~jnisigl/dig-edns-client-subnet.html

我正在寻找可以执行相同操作的 python 实现。

最佳答案

我是 dnspython-clientsubnet 的开发者/维护者。它旨在在您的代码中用作 dnspython 的添加剂。我刚刚发布了 2.0.0 版(在尝试做你想做的事之后),这让一切变得更容易

  1. pip install clientsubnetoption(适用于 Python2 和 Python3)
  2. 导入 clientsubnetoption 和您需要的依赖项:

    import dns
    import clientsubnetoption
  3. 使用您想要的信息设置您的ClientSubnetOption:

    cso = clientsubnetoption.ClientSubnetOption('1.2.3.4')
  4. 创建您的 DNS 数据包:

    message = dns.message.make_query('google.com', 'A')
  5. 添加 edns 选项:

    message.use_edns(options=[cso])
  6. 使用 message 进行查询:

    r = dns.query.udp(message, '8.8.8.8')
  7. 选项信息现在位于 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com