ssl.CertificateError: hostname 'example.com' doesn't match either of 'exampleserver.com'?

问题描述 投票:0回答:1

当我试图用urllib库打开一个网站时,我得到了这个错误。我不明白为什么会出现这个错误,目前我使用的是python 3.6版本。是版本的问题吗?

url = 'https://example.com'
html = urllib.request.urlopen(url).read().decode('utf-8')
text = get_text(html)
data = text.split()
print(data)
python-3.x ssl-certificate urllib urllib2 urllib3
1个回答
2
投票

当你的SSLTLS证书的通用名与你网站的域名不匹配时,就会出现这个错误。试着把你网站的域名改成exampleServer.Com,看看是否有效。 否则,你将不得不写自定义逻辑来忽略名称不匹配的错误。


0
投票

我已经用这个代码解决了这个问题。

需要导入ssl库

导入ssl

需要在加载url前添加这段代码

ssl.match_hostname = lambda cert, hostname: True

例如:

import ssl

ssl.match_hostname = lambda cert, hostname: True
url = 'https://example.com'
html = urllib.request.urlopen(url).read().decode('utf-8')
text = get_text(html)
data = text.split()
print(data)
© www.soinside.com 2019 - 2024. All rights reserved.