全网域名扫描项目还在进行中,之前想的很简单的whois提取本以为很简单,看了下linux下whois出来的结果格式很多都不一样,自己写的话是比较麻烦的。
在线接口的话找了很多,还是只有站长之家最靠谱,但是由于量很大,而且又有请求限制,还是决定再找找whois的轮子,找了两个,一个很烂,.cn .com.cn等很多根域名都不支持,参数必须顶级域名,结果还不包括邮箱。
python-whois
但是用的另一个模块结果就非常nice了,结果返回dict格式,
下载地址
python-whois-0.6.5.tar2017.3.16 – 20.55 Kb
说明:需要安装future模块
pypi地址:https://pypi.python.org/pypi/python-whois
2018年4月10日 更新
发现一个严重问题,由于模块为国外开发,又因为不同根域名返回的whois格式不同,所以这个模块中根本没有对 .cn的whois 信息做处理,以至于.cn的域名注册时间与过期时间是获取不到的。
所以模块中parser.py 中需要小改一下,
新增一个class
class WhoisCn(WhoisEntry): """Whois parser for .cn domains """ regex = { 'domain_name': 'Domain Name: *(.+)', 'registrar': 'Registrar: *(.+)', 'whois_server': 'Whois Server: *(.+)', # empty usually 'referral_url': 'Referral URL: *(.+)', # http url of whois_server: empty usually 'updated_date': 'Updated Date: *(.+)', 'creation_date': 'Registration Time: *(.+)', 'expiration_date': 'Expiration Time: *(.+)', 'name_servers': 'Name Server: *(.+)', # list of name servers 'status': 'Status: *(.+)', # list of statuses 'emails': EMAIL_REGEX, # list of email addresses } def __init__(self, domain, text): if 'No match for "' in text: raise PywhoisError(text) else: WhoisEntry.__init__(self, domain, text, self.regex)
最后修改后的最新版:python-whois 0.6.9,直接打包一版:
python-whois_修改版2018.4.10 – 92.72 Kb