分享

如何以编程方式查找域名是否已注册

 印度阿三17 2019-07-13

我使用pywhois来确定域名是否已注册.这是我的源代码. (从a.net到zzz.net的所有排列)

#!/usr/bin/env python
import whois  #pip install python-whois
import string
import itertools

def main():
    characters = list(string.ascii_lowercase)
    ##domain names generator
    for r in range(1, 4) :
        for name in itertools.permutations(characters, r) : #from 'a.net' to 'zzz.net'
            url = ''.join(name)   '.net'

            #check if a domain name is registered or not
            try :
                w = whois.whois(url)
            except (whois.parser.PywhoisError):  #NOT FOUND
                print(url)   #unregistered domain names?

if __name__ == '__main__':
    main()

我得到了以下结果:

jv.net
uli.net
vno.net
xni.net

但是,以上所有域名都已注册.这不准确.有人能解释一下吗?有很多错误:

fgets: Connection reset by peer
connect: No route to host
connect: Network is unreachable
connect: Connection refused
Timeout.

here报告了另一种方法.

import socket   
try:    
    socket.gethostbyname_ex(url) 
except:
    print(url) #unregistered domain names?

在谈到速度时,我使用map来并行处理.

def select_unregisteredd_domain_names(self, domain_names):
    #Parallelism using map
    pool = ThreadPool(16)  # Sets the pool size
    results = pool.map(query_method(), domain_names)
    pool.close()  #close the pool and wait for the work to finish
    pool.join()

    return results

解决方法:

这是一个棘手的问题,比大多数人意识到的要棘手.原因是有些人不希望你发现这一点.大多数域名注册商都会使用大量的黑魔法(即许多特定于TLD的黑客)来获取他们提供的精彩列表,并且通常他们会弄错.当然,最终他们肯定会知道,因为他们拥有EPP访问权限可以保留权威答案(但通常只有在您点击“订单”时才会这样做).

你的第一种方法(whois)曾经是一个很好的方法,而且我在90年代大规模地做了这个,当时一切都更加开放.如今,许多顶级域名(TLD)都会保护验证码和阻碍性网络界面背后的信息,以及诸如此类的东西.如果不出意外,每个IP的查询数量都会有配额. (并且它也可能是有充分理由的,我过去常常将大量垃圾邮件发送到用于注册域名的电子邮件地址).另请注意,通过查询向其WHOIS数据库发送垃圾邮件通常会违反其使用条款,您可能会受到限制,阻止甚至向您的ISP收到滥用报告.

您的第二种方法(DNS)通常要快得多(但不要使用gethostbyname,使用Twisted或其他一些异步DNS来提高效率).您需要弄清楚每个TLD对已采用域和免费域的响应如何.仅仅因为域没有解析并不意味着它是免费的(它可能只是未使用).相反,一些TLD拥有所有不存在域的登录页面.在某些情况下,单独使用DNS是不可能的.

那么,你如何解决它?我很害怕,不轻松.对于每个TLD,您需要弄清楚如何巧妙地使用DNS和whois数据库,从DNS开始并在棘手的情况下采用其他方法.确保不要使用查询来填充whois数据库.

另一个选择是获得其中一个注册商的API访问权限,他们可能提供对域搜索的编程访问.

来源:https://www./content-1-322101.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多