全網域名掃描項目還在進行中,之前想的很簡單的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 模塊

最后修改后的最新版:python-whois 0.6.9,直接打包一版:
python-whois_修改版2018.4.10 – 92.72 Kb

 

您的支持將鼓勵我們繼續創作!

[微信] 掃描二維碼打賞

[支付寶] 掃描二維碼打賞