目标
- 创建一个简单的可导入Python模块,用于生成给定域名的解析WHOIS数据。
- 能够提取所有流行顶级域名(com、org、net等)的数据。
- 直接查询WHOIS服务器,而不是像许多其他方法那样通过中间Web服务。
示例
>>> import whois
>>> w = whois.whois('example.com')
>>> w.expiration_date # 日期转换为datetime对象
datetime.datetime(2022, 8, 13, 4, 0)
>>> w.text # 从WHOIS服务器下载的内容
u'\nDomain Name: EXAMPLE.COM
Registry Domain ID: 2336799_DOMAIN_COM-VRSN
...'
>>> print(w) # 打印所有找到的属性值
{
"creation_date": "1995-08-14 04:00:00",
"expiration_date": "2022-08-13 04:00:00",
"updated_date": "2021-08-14 07:01:44",
"domain_name": "EXAMPLE.COM",
"name_servers": [
"A.IANA-SERVERS.NET",
"B.IANA-SERVERS.NET"
],
...
安装
从pypi安装:
pip install python-whois
或从代码库检出最新版本:
git clone git@github.com:richardpenman/whois.git
pip install -r requirements.txt
运行测试用例:
python -m pytest
遇到问题?
欢迎提交拉取请求!
感谢许多人为新增顶级域名发送补丁。如果你想添加或修复某个顶级域名,这是相当直接的。 请参考whois/parser.py中的示例域名
基本上每个顶级域名都有类似以下的格式:
class WhoisOrg(WhoisEntry):
"""Whois解析器用于.org域名
"""
regex = {
'domain_name': 'Domain Name: *(.+)',
'registrar': 'Registrar: *(.+)',
'whois_server': 'Whois Server: *(.+)',
...
}
def __init__(self, domain, text):
if text.strip() == 'NOT FOUND':
raise PywhoisError(text)
else:
WhoisEntry.__init__(self, domain, text)