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

Python3.7实现nslookup批量查询域名列表代码报错求解决方案

问题排查与解决方案

原代码核心问题

  • 域名处理错误:将换行符替换为空格后,域名末尾携带多余空格,导致DNS解析请求失败,应直接删除首尾空白字符而非替换为空格。
  • 路径拼接不规范:硬编码Windows路径分隔符\\,在Linux/macOS系统下无法运行,应使用os.path.join做跨平台路径拼接。
  • 文件资源未安全管理:输出文件Domain_check.txt未使用上下文管理器,程序异常时可能出现文件内容未写入、资源未释放的问题。
  • 输出格式不符合要求:没有添加域名与IP的分隔符、换行符,所有结果会拼接成无意义的连续字符串。
  • 缺少异常处理逻辑:遇到无法解析的域名时程序会直接崩溃,无法完成所有域名的遍历查询。
  • 变量名语义不明:用date类变量名表示域名,不利于代码排查调试。
  • Python3.7适配问题:最新版dnspython库不再支持Python3.7,需要安装兼容的指定版本。

修复后可运行代码

import dns.resolver
import os

# 输出文件也用上下文管理器管理
with open("Domain_check.txt", "w", encoding="utf-8") as new_txt:
    # 跨平台拼接域名文件路径
    domain_path = os.path.join(os.getcwd(), "Domains.txt")
    with open(domain_path, "r", encoding="utf-8") as f:
        for domain in f:
            # 去除首尾的换行、空白字符,得到干净的域名
            domain_clean = domain.strip()
            # 跳过空行
            if not domain_clean:
                continue
            try:
                # 执行A记录查询
                answers = dns.resolver.resolve(domain_clean, 'A')
                for ip in answers:
                    # 按指定格式写入,域名和IP用空格分隔,每行一条结果
                    new_txt.write(f"{domain_clean} {ip}\n")
            except Exception as e:
                # 解析失败时写入错误信息,避免程序中断
                new_txt.write(f"{domain_clean} 解析失败:{str(e)}\n")

使用前准备

  • 先安装适配Python3.7的dnspython版本,执行命令:pip install dnspython==2.2.1
  • 把待查询的域名按每行一个的格式,存入和脚本同目录的Domains.txt文件中
  • 运行脚本后,结果会自动写入同目录的Domain_check.txt文件,每条域名对应一条或多条解析结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:08