用python2使用httplib或者request库的时候,访问https站点,提示如下:
Exception: hostname 'xxx' doesn't match either of 'yyy'
截图:
原因是 python2的httplib库下层调用的SSL组件,会去请求对应https站点的证书信息,然后验证你请求的域名是否符合该证书。
证书内容截图如下:
证书中的“使用者备用名称” 即SNI没有我请求的域名,因此报错。
修复方法:
在脚本前面增加两行
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
不验证ssl内容即可,当然安全性会下降。