本文目录导读:

- 方法一:使用 Python + whois 库(推荐)
- 方法二:使用 dns.resolver 查询DNS状态
- 方法三:Shell脚本方式(Linux/Mac)
- 方法四:使用 requests 调用第三方API
- 使用方法
- 注意事项
使用 Python + whois 库(推荐)
import whois
import csv
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
def check_domain(domain):
"""查询单个域名状态"""
try:
w = whois.whois(domain)
# 判断域名状态
status = "未注册" if w.status is None else "已注册"
if status == "已注册":
# 检查是否过期
if w.expiration_date:
exp_date = w.expiration_date[0] if isinstance(w.expiration_date, list) else w.expiration_date
if exp_date < datetime.now():
status = "已过期"
return {
'domain': domain,
'status': status,
'registrar': w.registrar if w.registrar else 'N/A',
'expiration_date': w.expiration_date if w.expiration_date else 'N/A'
}
except Exception as e:
return {'domain': domain, 'status': f'查询失败: {str(e)}'}
def batch_check(domains, max_workers=10):
"""批量查询域名"""
results = []
with ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = {executor.submit(check_domain, domain): domain for domain in domains}
for future in as_completed(futures):
results.append(future.result())
return results
# 使用示例
domains_list = ['example.com', 'google.com', 'test-domain-12345.com']
results = batch_check(domains_list)
# 保存到CSV
with open('domain_status.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=['domain', 'status', 'registrar', 'expiration_date'])
writer.writeheader()
writer.writerows(results)
print("查询完成,结果已保存到 domain_status.csv")
使用 dns.resolver 查询DNS状态
import dns.resolver
import csv
def check_domain_dns(domain):
"""通过DNS查询域名状态"""
status = {}
status['domain'] = domain
# 查询A记录
try:
answers = dns.resolver.resolve(domain, 'A')
status['has_a_record'] = True
status['ip'] = answers[0].to_text()
except dns.resolver.NXDOMAIN:
status['has_a_record'] = False
status['status'] = '未注册/未解析'
except Exception as e:
status['has_a_record'] = False
status['error'] = str(e)
return status
# 批量查询
domains = ['example.com', 'notexist123456.com']
results = [check_domain_dns(d) for d in domains]
Shell脚本方式(Linux/Mac)
#!/bin/bash
# 批量查询域名状态脚本
# 使用方法: ./check_domains.sh domains.txt
INPUT_FILE="${1:-domains.txt}"
OUTPUT_FILE="domain_status_$(date +%Y%m%d_%H%M%S).csv"
echo "域名,状态,IP地址" > "$OUTPUT_FILE"
while IFS= read -r domain; do
if [ -z "$domain" ]; then
continue
fi
echo "正在查询: $domain"
# 使用host命令检查
if host "$domain" > /dev/null 2>&1; then
ip=$(host "$domain" | grep "has address" | head -1 | awk '{print $NF}')
echo "$domain,已解析,$ip" >> "$OUTPUT_FILE"
else
# 使用whois辅助判断
if whois "$domain" 2>/dev/null | grep -q "No match for"; then
echo "$domain,未注册,N/A" >> "$OUTPUT_FILE"
else
echo "$domain,可能已注册但未解析,N/A" >> "$OUTPUT_FILE"
fi
fi
sleep 0.5 # 避免触发限制
done < "$INPUT_FILE"
echo "查询完成!结果保存在 $OUTPUT_FILE"
使用 requests 调用第三方API
import requests
import json
import time
def check_domain_api(domain, api_key=None):
"""使用第三方API查询(示例使用 whoisxmlapi)"""
url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService"
params = {
'domainName': domain,
'outputFormat': 'JSON',
'apiKey': api_key or 'Your_API_KEY'
}
try:
response = requests.get(url, params=params)
data = response.json()
status = data.get('WhoisRecord', {}).get('registryData', {}).get('domainAvailability', 'UNKNOWN')
return {
'domain': domain,
'status': status,
'registrar': data.get('WhoisRecord', {}).get('registrarName', 'N/A')
}
except Exception as e:
return {'domain': domain, 'status': f'API查询失败: {str(e)}'}
# 批量处理
def batch_api_check(domains_list, api_key):
results = []
for domain in domains_list:
result = check_domain_api(domain, api_key)
results.append(result)
time.sleep(0.2) # API限速
return results
使用方法
-
准备域名列表 - 创建文本文件,每行一个域名
example.com google.com test-domain.com -
安装依赖(Python方法)
pip install python-whois dnspython requests
-
运行脚本
python domain_checker.py
注意事项
- 查询限制:WHOIS服务器可能有查询频率限制,建议添加延迟
- 批量大小:单次不要查询太多,建议分批(每次50-100个)
- 代理使用:如果需要大量查询,考虑使用代理IP
- 合法合规:遵守相关法律法规,不要用于恶意目的
推荐使用 Python + whois库 的方法,平衡了易用性和功能完整性。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播