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

如何用Python依据域名CNAME/NS记录执行操作及排查代码问题

解决CNAME检测问题与实现域名记录检测脚本

一、修复CNAME检测代码的问题

你的代码始终输出“No”,核心原因是server.target是dns.name.Name类型的对象,不是普通字符串,直接和字符串'xdomain.org'比较会不相等。另外,DNS返回的目标域名通常末尾带有.(比如xdomain.org.),需要处理后再比较。

修正后的代码(包含异常处理,避免无CNAME记录时崩溃):

import dns.resolver

domain = 'example.com'
try:
    answers = dns.resolver.resolve(domain, 'CNAME')
    for server in answers:
        # 转换为字符串并去掉末尾的点号
        target = server.target.to_text().rstrip('.')
        print(target)
        if target == 'xdomain.org':
            print("Yes")
        else:
            print("No")
except dns.resolver.NoAnswer:
    print("该域名没有CNAME记录")
except dns.resolver.NXDOMAIN:
    print("域名不存在")

二、完整实现域名记录检测脚本

以下脚本可以同时检测CNAME指向和NS记录,并执行对应操作:

import dns.resolver

# 自定义配置
CHECK_DOMAIN = 'example.com'
TARGET_CNAME = 'xdomain.org'  # 要检测的CNAME目标
TARGET_NS = {'ns1.xserver.com', 'ns2.xserver.com'}  # 要检测的NS服务器集合

def execute_y():
    """替换成你的Y操作逻辑"""
    print("执行Y操作:域名CNAME指向符合要求")

def execute_z():
    """替换成你的Z操作逻辑"""
    print("执行Z操作:域名NS服务器符合要求")

# 检测CNAME记录
try:
    cname_records = dns.resolver.resolve(CHECK_DOMAIN, 'CNAME')
    for record in cname_records:
        target = record.target.to_text().rstrip('.')
        if target == TARGET_CNAME:
            execute_y()
            break  # 找到匹配项后停止遍历
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
    # 无CNAME记录或域名不存在时跳过
    pass

# 检测NS记录
try:
    ns_records = dns.resolver.resolve(CHECK_DOMAIN, 'NS')
    current_ns_set = {record.target.to_text().rstrip('.') for record in ns_records}
    # 判断目标NS是否全部存在于当前域名的NS列表中
    if TARGET_NS.issubset(current_ns_set):
        execute_z()
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
    print("无法获取NS记录或域名不存在")

关键说明

  • 用集合存储目标NS,通过issubset方法可以快速判断是否所有指定的NS服务器都在域名的NS记录中
  • 所有DNS记录的目标都转换为字符串并去掉末尾的点号,避免因格式差异导致比较失败
  • 加入异常处理,防止脚本因域名不存在、无对应记录等情况崩溃

内容的提问来源于stack exchange,提问作者Reception123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:56:12