首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何快速检查域名是否存在?

问如何快速检查域名是否存在?
EN

Stack Overflow用户
提问于 2020-11-26 01:18:19
回答 5查看 1.6K关注 0票数 6

我有一个很大的域名列表,我需要检查域名是否现在可用。我是这样做的:

代码语言:javascript
复制
import requests
list_domain = ['google.com', 'facebook.com']
for domain in list_domain:
    result = requests.get(f'http://{domain}', timeout=10)
    if result.status_code == 200:
        print(f'Domain {domain} [+++]')
    else:
        print(f'Domain {domain} [---]')

但是检查太慢了。有没有办法让它更快?也许有人知道另一种检查域名是否存在的方法?

EN

回答 5

Stack Overflow用户

发布于 2020-11-26 02:55:01

如果您想检查哪些域可用,更正确的方法是从requests模块捕获ConnectionError,因为即使您得到的响应代码不是200,存在响应这一事实也意味着存在与该域相关联的服务器。因此,域名被占用。

就检查域可用性而言,这不是完整的证据,因为域可能被占用,但可能没有与其关联的适当A记录,或者服务器可能暂时停机。

下面的代码也是异步的。

代码语言:javascript
复制
from concurrent.futures import ThreadPoolExecutor
import requests
from requests.exceptions import ConnectionError

def validate_existence(domain):
    try:
        response = requests.get(f'http://{domain}', timeout=10)
    except ConnectionError:
        print(f'Domain {domain} [---]')
    else:
        print(f'Domain {domain} [+++]')


list_domain = ['google.com', 'facebook.com', 'nonexistent_domain.test']

with ThreadPoolExecutor() as executor:
    executor.map(validate_existence, list_domain)
票数 2
EN

Stack Overflow用户

发布于 2020-11-26 01:42:17

你可以通过"requests-futures“模块做到这一点。requests-futures异步运行,如果你有一个平均的互联网连接,它可以每秒检查8-10url(根据我的经验)。

票数 1
EN

Stack Overflow用户

发布于 2020-11-29 19:45:44

您可以使用套接字库来确定域是否具有DNS条目:

代码语言:javascript
复制
>>> import socket
>>> 
>>> addr = socket.gethostbyname('google.com')
>>> addr
'74.125.193.100'
>>> socket.gethostbyname('googl42652267e.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
socket.gaierror: [Errno -2] Name or service not known
>>> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65009692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档