使用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个随机字符串并进行检查。