一般会报SSL问题:解决办法参考
# 设置未经允许验证的SSL方法,只需运行一次便可
ssl._create_default_https_context = ssl._create_unverified_context
由ssl的版本号引起的问题
https连接所在的服务器是基于SSLV3版本
首先需要安装openssl,更新到最新版本后,在浏览器里看是否可访问,如果是可以的,所以应该不是openssl有问题。然后使用 curl尝试访问
curl -v https://ui2web1.apps.uillinois.edu/BANPROD1/bwskfcls.P_GetCrse
可以查看ssl版本,如果不能访问,尝试更换ssl版本
curl
-1 https://xxx.com curl
-2 https://xxx.com curl
-3 https://xxx.com
分别用上面的三句脚本去测试连接情况,发现第三种可以连接正常(-1,2,3,数字分别代码tlsv1,sslv2,sslv3三个不同的SSL版本)。说明这个https连接所在的服务器是基于SSLV3版本的。找到的问题,就很容易知道怎么改写python代码了。
class MyAdapter(HTTPAdapter):
def init_poolmanager(self,
connections, maxsize):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
ssl_version=ssl.PROTOCOL_SSLv3)
s = requests.Session()
s.mount('https://',MyAdapter())#所有的https连接都用ssl.PROTOCOL_SSLV3去连接s.get('https://xxx.com')