使用python获取顶级域的所有子域

问题描述 投票:0回答:3

我想列出给定二级域的所有子域。顶级域(2LD.1LD),例如

.edu.uk
,或
.gov.us
通过python

我在python中使用

dns

import dns.resolver

answers = dns.resolver.query('stackoverflow.com', 'MX')
for rdata in answers:
    print('Host', rdata.exchange, 'has preference', rdata.preference)

但它不能与

dns.resolver.query('edu.uk', 'MX')

一起使用

我也用

googlesearch

from googlesearch import search
res = search("site:edu.uk",num_results=1000)
print((res))

但它只响应 100 个结果。

我想要一个包含所有子域的结果(我认为这是一个非常大的结果)。我能怎么做?谢谢大家

python dns subdomain google-search
3个回答
2
投票

简单的答案:你不能。无论级别如何,都无法查询整个域的内容。有些(只有少数,如根)允许您使用 AXFR 传输来传输区域(尝试:

dig @b.root-servers.net axfr .
,如果您安装了绑定实用程序)。但总的来说,DNS 协议现在允许您始终获取 DNS 记录树的内容。您可以猜测其中的一些,例如您在上面计算得出,某些区域内可能存在
MX
记录,这通常是正确的(例外示例:没有 TLD 具有
MX
记录)。您可以猜测大多数域名确实有
www
前缀以及
A
AAAA
记录,但即使如此也不能保证。

简而言之:你的问题不在于Python,而在于DNS协议本身。如果该区域的所有者不希望您获得该区域内容的完整列表,则无论使用哪种语言都无法获得该区域的完整列表。

[旁注:带有 NSEC 不存在记录证明的 DNSSEC 签名区域允许您“行走”记录名称的区域,但我不建议您通常尝试滥用此功能 - 我们运行 DNS扫描仪,甚至我们在寻找签名域时也不使用这种方法——这会导致大量合法的仇恨电子邮件]


0
投票

有些网站有一个 /robot.txt 来列出 google 抓取的网址。如果允许,另一种选择是使用 burpsuite 和子域列表来扫描它们。


0
投票

在 google 上搜索任何域名并输入 site:example.com

© www.soinside.com 2019 - 2024. All rights reserved.