You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过公共DNS服务器获取所有.ac.in结尾的网站并写入文件(代码问题排查)

如何通过公共DNS服务器获取所有.ac.in结尾的网站并写入文件(代码问题排查)

嗨,我来帮你排查下代码失效的问题~ 你当前的代码逻辑存在一个核心误区:直接查询ac.in的A记录,只能拿到ac.in这个域名本身的IP地址,根本没办法获取所有以.ac.in结尾的子域名。DNS系统本身并没有提供“遍历所有子域名”的原生查询方式,这就是你的代码没效果的关键原因。

那怎么才能获取这类子域名呢?常见的可行思路有两种:

  • 尝试域传送(AXFR查询):这是DNS服务器用来同步域名记录的机制,部分域名的权威DNS服务器可能允许公开的AXFR请求(但像.ac.in这类顶级二级域,几乎不会开放公共查询权限)。
  • 借助第三方数据集/工具:比如安全厂商、域名统计平台的公开数据集,或者合法的子域名枚举工具(结合DNS查询、搜索引擎数据等多维度信息)。

下面给你修改后的代码,尝试通过DNS域传送的方式尝试获取数据(提前说明:很大概率会失败,因为这类公共域名不会开放AXFR权限):

import dns.resolver
import dns.query
import dns.zone

def get_ac_in_websites():
    dns_server = '8.8.8.8'  # 先通过Google DNS获取ac.in的权威DNS服务器地址
    query_domain = 'ac.in'
    
    try:
        # 第一步:获取ac.in的权威DNS服务器列表
        resolver = dns.resolver.Resolver()
        resolver.nameservers = [dns_server]
        ns_response = resolver.resolve(query_domain, rdtype='NS')
        auth_dns_servers = [ns.to_text().strip('.') for ns in ns_response]
        
        websites = []
        # 尝试对每个权威DNS服务器发起AXFR域传送请求
        for ns in auth_dns_servers:
            try:
                zone = dns.zone.from_xfr(dns.query.xfr(ns, query_domain))
                # 遍历域内所有记录,提取完整域名
                for name, node in zone.nodes.items():
                    full_domain = f"{name}.{query_domain}".strip('.')
                    if full_domain.endswith('.ac.in'):
                        websites.append(full_domain)
            except Exception as e:
                print(f"无法从权威服务器 {ns} 获取数据: {e}")
        
        # 去重后返回结果
        return list(set(websites))
    except dns.exception.DNSException as e:
        print(f"DNS查询失败: {e}")
        return []

def write_to_file(filename, data):
    with open(filename, 'w', encoding='utf-8') as file:
        # 只写入前1000条数据
        for entry in data[:1000]:
            file.write(entry + '\n')

# 获取.ac.in结尾的网站列表
websites = get_ac_in_websites()

# 写入文件
write_to_file('dotacin.txt', websites)

重要提示:

  • 上面的代码大概率拿不到有效数据,因为.ac.in的权威DNS服务器出于安全考虑,会拒绝公共的AXFR请求。
  • 如果确实需要大量.ac.in子域名数据,建议查找公开的域名归档数据集,或者使用amass、sublist3r这类合法的子域名枚举工具(它们会结合多种数据源来枚举子域名)。

备注:内容来源于stack exchange,提问作者Curi0usM3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:43:08