使用`requests`检查域名是否已注册是否准确?

时间:2015-07-21 09:45:04

标签: python python-requests urllib3 http.client

我注意到请求无效的网址requests.get(invalid_url)会引发以下异常:

Traceback (most recent call last):
  File "/usr/lib/python3.4/socket.py", line 530, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

During handling of the above exception, another exception occurred:
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 607, in urlopen
    raise MaxRetryError(self, url, e)
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='sparkandshine.me', port=80): Max retries exceeded with url: / (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)

During handling of the above exception, another exception occurred:
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 378, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='sparkandshine.me', port=80): Max retries exceeded with url: / (Caused by <class 'socket.gaierror'>: [Errno -2] Name or service not known)

通过捕获这些例外来确定域名是否已注册是否准确?以下是源代码:

#!/usr/bin/env python3
import http
import urllib3
import requests

url = 'http://example.com'
try :
    r = requests.get(url)
except (http.client.HTTPException, urllib3.exceptions.MaxRetryError, requests.exceptions.ConnectionError):
    print(url) #this domain name is not registered?

2 个答案:

答案 0 :(得分:4)

没有;域名注册并且没有根域名的IP地址是完全没问题的,更不用说在该IP地址的端口80上运行服务器了。

答案 1 :(得分:3)

如@tripleee所述,它不是很精确。我找到另一种方法来确定域名是否已注册,使用python模块pywhois

要安装它,

viewModel

这是一个例子。

pip install python-whois

PS:不支持python3。