如何禁用urllib3的SSL验证?处理SSL版本错误问题
问题解决:SSL版本号错误处理
错误原因
你遇到的[SSL: WRONG_VERSION_NUMBER]错误,核心原因是用HTTPS协议连接了仅支持HTTP的端口(你的请求用了https://www.example.com:8080,但该8080端口实际只提供HTTP服务)。
注意:verify=False参数仅用于跳过SSL证书有效性验证,而这个错误发生在SSL握手的早期阶段(协议版本协商失败),还没到证书验证环节,所以设置该参数无法解决问题。
解决方案
方案1:改用HTTP协议(推荐)
既然你提到HTTP连接一切正常,直接将URL中的https替换为http即可,这是最简单且风险最低的方法:
import requests requests.get('http://www.example.com:8080/geoserver/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=qazqoinau_test%3A%D0%93%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%20%D0%A0%D0%B5%D1%81%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B8%20%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D1%82%D0%B0%D0%BD&STYLES=qazqoinau_test%3Alayers_border_RK&SRS=EPSG%3A3857&CRS=EPSG%3A3857&TILED=true&access_token=JNkYj4bIfuWQbQu06AAF2MUxc9banx&WIDTH=512&HEIGHT=512&BBOX=2504688.542848654%2C2504688.542848654%2C5009377.08569731%2C5009377.08569731')
方案2:确认服务端HTTPS配置(若必须用HTTPS)
如果业务强制要求使用HTTPS,需完成以下检查:
- 确认目标服务的8080端口是否真的配置了SSL证书,可能是服务端未在该端口启用HTTPS;
- 检查是否用错端口,HTTPS默认端口为443,尝试将端口改为443后重试。
方案3:强制跳过SSL握手(不推荐,仅应急)
如果你执意要通过修改代码绕开问题,可以自定义requests适配器,强制将HTTPS请求转为HTTP:
import requests from requests.adapters import HTTPAdapter from urllib3.poolmanager import PoolManager class ForceHTTPAdapter(HTTPAdapter): def init_poolmanager(self, connections, maxsize, block=False): self.poolmanager = PoolManager( num_pools=connections, maxsize=maxsize, block=block, # 强制使用HTTP协议,忽略URL中的HTTPS scheme='http' ) session = requests.Session() # 给目标地址挂载自定义适配器 session.mount('https://www.example.com:8080', ForceHTTPAdapter()) response = session.get('https://www.example.com:8080/geoserver/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=qazqoinau_test%3A%D0%93%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%20%D0%A0%D0%B5%D1%81%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B8%20%D0%9A%D0%B0%D0%B7%D0%B0%D1%85%D1%81%D1%82%D0%B0%D0%BD&STYLES=qazqoinau_test%3Alayers_border_RK&SRS=EPSG%3A3857&CRS=EPSG%3A3857&TILED=true&access_token=JNkYj4bIfuWQbQu06AAF2MUxc9banx&WIDTH=512&HEIGHT=512&BBOX=2504688.542848654%2C2504688.542848654%2C5009377.08569731%2C5009377.08569731')
修改影响:所有指向该地址的HTTPS请求会实际走HTTP传输,数据失去加密保护,存在被窃听、篡改的风险,仅适合测试环境或内部可信网络使用。
内容的提问来源于stack exchange,提问作者Manap Shymyr
相关产品推荐
相关产品推荐

