批量查询域名Whois信息有哪些高效方法?
整理规范域名清单后,用 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 数据版权归各注册管理机构所有,查询时请遵守对应服务器与接口的使用条款,不要用于骚扰、爬取售卖等用途。
转载请注明出处,版权归原作者所有。