我正在尝试实现确定页面是否支持tls以及是否需要具有前缀www
的程序。因此,我正在测试page1.cz并检查此对象的响应状态:
Session().get('http://page1.cz')
<Response [200]>
Session().get('http://www.page1.cz')
<Response [200]>
Session().get('https://page1.cz')
<Response [200]>
Session().get('https://www.page1.cz')
<Response [200]>
它工作正常,我知道page1.cz使用的是https,并且始终重定向到https://page1.cz
。当我尝试page2.cz时,使用前缀https
进行测试时收到错误消息。我收到此错误:
Session().get('http://page2.cz')
<Response [200]>
Session().get('http://www.page2.cz')
<Response [200]>
Session().get('https://page2.cz')
ConnectionError: HTTPSConnectionPool(host='page2.cz', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f75e85f03c8>: Failed to establish a new connection: [Errno 111] Connection refused',))
Session().get('https://www.page2.cz')
ConnectionError: HTTPSConnectionPool(host='www.page2.cz', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f75e85f03c8>: Failed to establish a new connection: [Errno 111] Connection refused',))
我知道第二页不支持https
,但是为什么会出现该错误?它应该只返回代码4xx还是我错了?我在做什么错,如何检查页面是否支持http
,https
和www
前缀?
答案 0 :(得分:1)
错误表明主机拒绝了连接,并引发了错误。
您可以使用try-except
块来处理异常。
import requests
try:
req = requests.get(your_website)
except requests.exceptions.ConnectionError:
print("Connection refused")
此外,您可以为请求设置超时,例如
req = requests.get(your_website, timeout=1)
例如,考虑以下不支持https的网站http://www.qq.com/。
在your_website
为http://www.qq.com/
的情况下,您将获得200 OK,而在your_website
为https://www.qq.com/
的情况下,将引发异常。