使用pythonwhois测试域名可用性

使用pythonwhois测试域名可用性,python,domain-name,whois,Python,Domain Name,Whois,我正在成功地使用pythonwhois(与pip安装一起安装…)来检查.com域的可用性: import pythonwhois for domain in ['aaa.com', 'bbb.com', ...]: details = pythonwhois.get_whois(domain) if 'No match for' in str(details): # simple but it works! print domain 但是: 有点慢(平均

我正在成功地使用
pythonwhois
(与
pip安装一起安装…
)来检查.com域的可用性:

import pythonwhois
for domain in ['aaa.com', 'bbb.com', ...]:
    details = pythonwhois.get_whois(domain)
    if 'No match for' in str(details):   # simple but it works!
        print domain 
但是:

  • 有点慢(平均每秒2个请求)
  • 如果我执行26*26*26~17000个请求,我不会被
    whois
    服务器列入黑名单吗?
    (我正在测试
    ???mail.com
    的可用性,其中
    a..z
问题:有没有更好的方法来检查可用性,而不是对每个域执行一个
whois
请求?



编辑:如果任何人有兴趣启动电子邮件服务,则从2017年11月起,该作业在9572秒内完成,并以
???mail.com
的形式提供所有域

你应该将你正在做的事情并行化。由于函数花费的大部分时间都在等待,因此可以一次验证大量工作(不限于处理器数量)。例如:

import pythonwhois
from joblib import Parallel, delayed, cpu_count
n_jobs = 100 # works in parallel
def f(domain):
    details = pythonwhois.get_whois(domain)
    if 'No match for' in str(details):   # simple but it works!
        print(domain)
        return domain
    else:
        return None

domains= ['aaa.com', 'bbb.com', 'ccc.com', 'bbbaohecraoea.com']
result = Parallel(n_jobs=n_jobs, verbose=10)(delayed(f)(domain) for domain in domains)

# create a list with the available domains
available_domains=[domains[idx] for idx,r in enumerate(result) if r!=None]
print(available_domains)
# Result
# ['bbbaohecraoea.com']

哇,这看起来很不错,我以前从来没有用过
Parallel
!(只是您的代码有一个错误:
ImportError:[joblib]试图在不支持分叉的系统上执行并行计算而不保护您的导入。若要在脚本中使用并行计算,您必须使用“if _uname_uuuu==”uuu main_uuuuu')保护主循环。请参阅关于Parallel的joblib文档以了解更多信息(我在Windows中使用Python 2.7)。因此,我添加了
如果uuu name_uuuuu='uu main_uuuuu':
,然后它运行,但除了
[并行(n_作业=10)]:完成5个任务|运行时间:1.7s[并行(n_作业=10)]:完成12个任务|运行时间:2.1s[并行(n_作业=10)]:完成21项任务|运行时间:2.5s[并行(n_作业=10)]:完成30项任务|已用时间:2.6s
。知道如何实际显示结果吗?我认为
打印
没有任何效果。我添加了更多的代码来显示可用的域。另外,在我的情况下,导入时没有错误。这可能是版本问题或其他问题。哦,我明白了,它没有显示在屏幕上飞行中,但在最后,当打印
结果时
…是否有一种方法可以在飞行中(同时)在结束前打印域?似乎
中的
打印(域)
没有显示。可能是因为您使用的版本。在linux下,我的版本可以正常工作。但您感兴趣的只是结果。只是为了玩我创建的游戏,它会创建10000个随机字符串并进行检查。