确定显示网站所需的所有DNS查询

时间:2013-03-11 12:01:50

标签: scripting dns automation

我需要创建一个显示大量网站所需的所有DNS查询的列表(理想情况下最多为1 000 000)。该列表需要将查询分配给需要它们的页面。

示例:访问google.com需要对google.com,ssl.gstatic.com,apis.google.com和其他网站进行DNS查询。我的清单会读到

的内容
google.com:google.com,ssl.gstatic.com,apis.google.com,...

(确切格式与此无关)

我目前有两个关于如何做到这一点的想法:

  1. 设置带有日志记录的DNS服务器,使用我的DNS服务器作为解析器构建一个访问给定域列表的脚本
  2. 构建一个加载站点源代码的脚本(例如,想想python的urllib2),解析所有嵌入的内容并构建一个需要的查询列表
  3. 但这两个想法都存在问题。访问1 000 000个域,访问之间的间隔为2秒(以便之后可以向访问的站点分配查询),加载大约1秒(非常乐观)将花费34天,可能更长。但是要构建解析器,我需要一个完整的列表,列出所有可能形式的嵌入式内容,这将导致DNS查询,我还需要查询一些目标URL(想想iframe),有些内容是不可能的检查进一步的查询(想想连接到其他服务器的flash内容)。

    我有点被困在这里,并希望得到一些关于如何处理这个问题的意见。可以将URL列表缩短到10万,但任何不足都会大大减少结果的使用。

    对于上下文:我的学士论文需要此列表,处理有关建议的DNS隐私扩展的攻击策略。

2 个答案:

答案 0 :(得分:1)

有一个工具可以做到这一点并产生图形表示。它是名为DNSpktflow(DNS数据包流)

的dnssec工具的一部分

它可能无法完全按照您的要求进行,但它是开源的,因此您可以看到它们是如何做到的。

答案 1 :(得分:1)

您可以使用PhantomJS来执行此操作,因为它提供了一个界面,可让您捕获网络请求并记录它们,这与this example一样。

您需要编写一些简单的Javascript,但作为它的Node,以异步方式运行它以在合理的时间内收集所需的数据应该相当容易。