check_hostname requires server_hostname 错误解决方法
通常造成check_hostname requires server_hostname错误都与Python有关;本文将详细的描述造成这类错误的原因和多种解决方法;
错误原因
Python中有一个叫urllib3
的库,该库用于构造HTTP
客户端,发起HTTP
请求,总之非常强大,它在很多第三方库中都被使用;非常出名的requests
库就是基于它开发的;
在较新版本的urllib3
中,存在一个bug(作者写这篇文章的时候还没被修复);该bug导致如果你的计算机使用了VPN或代理,将造成check_hostname requires server_hostname错误;所以基本上可以肯定造成这个错误的程序使用了或依赖于urllib3
;
解决方案
解决方法有两个,一是停止使用计算机的VPN或代理功能,二是使用较低版本的urllib3
;具体用哪种方法取决于你的程序需不需要使用VPN;下面详细介绍两种解决方法;
停止使用VPN或代理
在有些时候,就算是停止了VPN的使用,也可能造成这个错误;这时候请打开计算机【设置】【网络和Internet】找到【代理】,确保某些选项都被关闭,有的时候代理程序意外结束导致这些设置没有被切换过来;

使用较低版本的urllib3
通过pip
命令pip list
查看当前的urllib3
版本;如果其版本大于1.25.7
,则将其卸载,再重新安装1.25.7
的urllib3
;
pip uninstall urllib3
pip install urllib3==1.25.7