Python DNS解析器和原始TTL

Python DNS解析器和原始TTL,python,dns,ttl,dnspython,Python,Dns,Ttl,Dnspython,我需要得到原始的TTL的dns记录在每个查询。 DNS解析器仅在第一次查询时显示原始ttl。它显示在每次下一次查询时重置缓存的时间 >>> answer = dns.resolver.query('www.stackoverflow.com') >>> print answer.rrset.ttl 300 >>> answer = dns.resolver.query('www.stackoverflow.com') >>>

我需要得到原始的TTL的dns记录在每个查询。 DNS解析器仅在第一次查询时显示原始ttl。它显示在每次下一次查询时重置缓存的时间

>>> answer = dns.resolver.query('www.stackoverflow.com')
>>> print answer.rrset.ttl
300
>>> answer = dns.resolver.query('www.stackoverflow.com')
>>> print answer.rrset.ttl
292

如何在任何查询中获取原始TTL?

您只能通过直接查询权威服务器来获取原始TTL。这不是特定于Python的

  • 通过查询所需名称的
    NS
    记录,找出权威名称服务器集是什么。如果未找到名称的NS记录,请删除第一个标签并再次查询(查询父域)。递归地重复,直到得到一些NS记录
  • 一旦您有了NS记录,就可以直接查询那些名称服务器以获得最初请求的名称。如果其中一个或多个名称服务器没有响应,请查询列表中的下一个名称服务器

  • 这基本上相当于执行递归解析器的部分工作。

    您需要在每次查询之间留出时间,最后一个DNS查询答案将在本地名称serverTry命令中存储20分钟(不确定)
    dig www.google.com
    注意
    中的输出;;回答部分:
    您将在74.125.135.99中获得类似于:
    www.google.com.218的内容,这里
    218
    意味着查询结果将在DNS数据库中的本地名称服务器上存储
    218
    秒。反复尝试此命令,您会注意到
    218
    将随着时间的推移而减少,当它减少到
    0
    @GrijeshChauhan时,我知道。那么,获得原始ttl的最佳方法是什么?我不想在没有缓存的情况下部署自己的dns服务器来执行此任务。另一方面,没有缓存的dns服务器将非常慢。我不知道
    dns.resolver.query()
    函数这个存储时间必须有一个返回参数,你必须给出两个连续调用函数之间的时间,我认为没有其他选择。提到这是重复递归解析器的工作似乎很重要