如何编写批量查询域名状态

wen 实用脚本 31

从入门到精通

目录导读

  1. 为什么需要批量查询域名状态?
  2. 主流批量查询工具对比与选择
  3. 五步完成域名状态批量查询(附代码示例)
  4. 常见问题与风险规避(Q&A)
  5. SEO优化技巧:如何让域名状态分析更友好?

为什么需要批量查询域名状态?

在网站运维、SEO优化或域名投资领域,经常需要同时检查数百甚至数千个域名的注册状态、DNS解析情况、是否被墙、是否过期等,手动逐个查询不仅耗时,还容易出错,批量查询能帮助我们:

如何编写批量查询域名状态

  • 快速过滤可用域名:在抢注或购买时,批量查询未注册或即将过期的域名。
  • 监控域名健康状况:定期检查自有域名是否被劫持、DNS是否正确解析。
  • 分析竞品网络资产:通过批量查询了解同行域名布局。

主流批量查询工具对比与选择

工具名称 特点 适用场景 价格
WhoisXML API 支持WHOIS、DNS、IP等20+数据接口 企业级大规模查询 按调用量计费
Python + python-whois 开源免费,可自定义逻辑 开发者、技术用户 免费
DomainTools 提供历史WHOIS和关联查询 域名安全分析 付费订阅
在线批量工具(如bulkwhois.com) 无需编程,上手快 一次性小批量查询 部分免费

横向对比结论

  • 如果查询量<100个/次,用在线工具即可;
  • gt;1000个/次,建议使用API或Python脚本;
  • 如果涉及域名安全(如检测是否被标记),选择DomainTools更可靠。

五步完成域名状态批量查询(以Python为例)

步骤1:准备域名列表

创建一个domains.txt文件,每行一个域名,

example-one.com  
example-two.org  
example-three.net  

步骤2:安装依赖库

pip install python-whois requests

步骤3:编写核心查询脚本

import whois
import time
def check_domain(domain):
    try:
        w = whois.whois(domain)
        status = w.status if w.status else "unknown"
        expiration = w.expiration_date
        return (domain, status, expiration)
    except Exception as e:
        return (domain, "error", str(e))
# 读取域名列表
with open('domains.txt', 'r') as f:
    domains = [line.strip() for line in f if line.strip()]
results = []
for domain in domains[:100]:  # 每次最多查100个
    result = check_domain(domain)
    results.append(result)
    time.sleep(1)  # 避免封IP
# 输出结果
for r in results:
    print(f"{r[0]}: {r[1]}, 过期时间: {r[2]}")

步骤4:处理返回状态码

常见的域名状态码及含义:

  • active:正常注册中
  • inactive:未激活或已过期
  • pendingDelete:即将删除
  • redemptionPeriod:可赎回期(通常可高价续费)

步骤5:优化输出格式

将结果保存为CSV文件,方便后续分析:

import csv
with open('domain_status.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['域名', '状态', '过期时间'])
    writer.writerows(results)

常见问题与风险规避(Q&A)

Q1:批量查询时被Whois服务器封IP怎么办?
A:设置合理间隔(建议≥1秒/次),使用代理轮询,或购买商业API(如WhoisXML API支持5000次/分钟)。

Q2:查询结果中显示“error”是什么原因?
A:可能是域名格式错误、网络超时,或该域名使用隐私保护(部分注册商隐藏WHOIS信息),建议先检查域名格式,再尝试更新库版本。

Q3:如何检测域名是否被墙(GFW)?
A:仅靠WHOIS无法判断,需要结合HTTP请求状态码(如返回403/连接超时)+ DNS解析测试,可使用python-requests向目标域名发送HEAD请求,并对比国内/海外IP的响应差异。

Q4:免费工具和付费API的准确度差异大吗?
A:免费工具通常数据延迟1-3天,付费API(如WhoisXML)实时性更高(延迟<5分钟),如果是抢注域名,建议使用付费服务。

Q5:脚本运行到一半中断怎么办?
A:建议设计断点续传功能,记录已查询的域名索引,或使用数据库存储进度,例如用SQLite保存中间结果。


SEO优化技巧:如何让域名状态分析更友好?

如果你计划将域名状态查询结果发布为网站内容(过期域名列表”),请遵循以下SEO规则:

  1. 页面结构清晰
    使用H1(主标题)、H2(如“即将过期.com域名”)、H3(分类)层级。

  2. 关键词自然分布
    在段落中嵌入“域名状态查询工具”、“批量检查域名是否可用”等长尾词,但密度控制在1-2%。

  3. 数据可视化
    将查询结果用表格展示,并添加筛选功能(如按“过期日期”排序),可提升用户停留时间。

  4. 内链与外链策略
    内链指向“域名注册教程”、“DNS管理”等关联内容;外链引用权威Whois机构(如ICANN)。

  5. 移动端适配
    确保表格在手机端可横向滚动,或改用卡片式布局。


批量查询域名状态的核心在于三点:选对工具(免费/付费)、控制查询频率(防封)、合理处理异常数据,通过Python脚本或API接口,你可以轻松在几分钟内完成上千个域名的扫描,如果你是非技术人员,可以使用在线工具(如BulkWhois)配合CTRL+C/V操作;但若追求效率和自动化,请务必学习基础的whiois库调用。

(本文提及的所有示例代码均可直接复制运行,但请遵守相关服务商的使用条款,勿用于恶意扫描。)

抱歉,评论功能暂时关闭!