⭐ 推荐:社区规则条款 V1.0

批量查询域名Whois信息有哪些高效方法?

满月居于空
满月居于空 萌新站长
发布于 2026-10-24 20:00 ·4 浏览 ·0 回复
内容摘要

整理规范域名清单后,用 whois 命令按序加 sleep 限流批量查询,或用 Python 脚本输出结构化 CSV,并注意不同后缀注册局及限流、格式统一问题,可支持几十到上千域名的批量 Whois 查询。

学完这篇,你能拿到一套可落地的批量 Whois 查询方案:从整理域名清单,到用命令行、Python 脚本、RDAP 接口三种方式跑完全部域名,再把结果整理成表格,同时避开限流和格式不统一这两个最常见的坑。

第一步:先把域名清单整理干净,得到一份能直接读入的 txt 文件

批量查询失败,一半原因是清单本身不规范。新建 domains.txt,一行一个域名,只保留主域名,去掉 https://、www.、路径和端口,例如:

gj0.com
example.com
example.cn

去重可以用命令行:sort -u domains.txt -o domains.txt。检查行数:wc -l domains.txt。

注意:清单里如果混入 URL,whois 会把整串当域名查到报错,脚本中途中断,记得先清洗再跑。

第二步:用系统自带 whois 命令批处理,适合几十到几百个域名

这一步的目标是拿到每个域名的注册商和到期时间,结果直接落盘成文本。先装工具:

sudo apt install whois      # Debian / Ubuntu
sudo yum install whois      # CentOS / RHEL
brew install whois          # macOS

单条验证通了再批量:whois -H gj0.com。-H 是隐藏法律声明段落,输出更干净。批量脚本:

while read -r d; do
  echo "===== $d ====="
  whois -H "$d" | grep -Ei 'Registrar:|Creation Date|Registry Expiry Date|Expiry Date'
  sleep 1
done < domains.txt > result.txt

sleep 1 不要省,它是防封的关键。

注意:Verisign 等 whois 服务器对同一 IP 有频率限制,一秒一条基本安全;并发几十条会被返回 “query rate exceeded” 或直接断连。.cn 域名要查 whois.cnnic.cn,部分后缀的注册局服务器地址需要单独确认。

第三步:用 Python 脚本查询,适合上千条并需要结构化结果

这一步把结果写成 CSV,便于后续筛选“即将到期域名”。先装库:pip install python-whois。核心代码:

import whois, csv, time

domains = [l.strip() for l in open('domains.txt') if l.strip()]
with open('whois.csv', 'w', newline='', encoding='utf-8') as f:
    w = csv.writer(f)
    w.writerow(['domain', 'registrar', 'creation', 'expiration', 'status'])
    for d in domains:
        try:
            info = whois.whois(d)
            w.writerow([d, info.registrar,
                        str(info.creation_date), str(info.expiration_date),
                        ';'.join(info.status) if isinstance(info.status, list) else info.status])
        except Exception as e:
            w.writerow([d, 'ERROR', str(e), '', ''])
        time.sleep(1)

注意:info.expiration_date 有时返回 list(多个日期),直接写 CSV 会变成一列脏数据,入库前统一取第一个元素。另外部分域名启用了隐私保护,注册商字段会显示代理信息,不是真实注册人。

第四步:用 RDAP 接口查询,拿到标准 JSON,解析最省事

RDAP 是 whois 的替代协议,返回 JSON,字段固定,不用写正则。浏览器或命令行直接试:

curl -s https://rdap.org/domain/example.com | jq '.events, .entities[0].vcardArray'

脚本里把返回的 events 中 eventAction 为 expiration 的 eventDate 取出来,就是到期时间。RDAP 支持 HTTP 状态码判断,429 就是被限流,按返回的 Retry-After 等待即可。

注意:RDAP 并非所有后缀都已覆盖,.cn 等部分国别域名仍需走传统 whois 43 端口,混合跑的时候要准备两套分支。

第五步:整理查询结果,筛出真正要处理的数据

把 whois.csv 导入表格软件,按到期时间升序排列,标出 30 天内到期的域名,是续费提醒还是放弃,一目了然。如果想省掉写脚本的功夫,站长工具、爱站一类平台也提供 whois 批量查询入口:打开查询页面,在输入框里每行填一个域名,点查询按钮,结果页可以直接导出。批量条数通常有限制,几十个以内够用。

注意:在线工具的查询结果会有缓存,域名刚续费或刚转移注册商时,显示的可能还是旧数据,以注册局 whois 的原始返回为准。

小结

  • 批量查 whois 的核心是“清单先清洗、速率要控制、结果要结构化”三件事。
  • 几十条用 shell 循环加 sleep 1;上千条用 Python 加 CSV 输出;要稳定解析优先选 RDAP 的 JSON 接口。
  • 频率限制、隐私保护、日期字段返回 list、部分后缀服务器不同,是四个最常见的坑。

免责声明:本文仅作技术方法交流,Whois 数据版权归各注册管理机构所有,查询时请遵守对应服务器与接口的使用条款,不要用于骚扰、爬取售卖等用途。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2506.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~