修复Python爬虫SSL错误

文章目录
python的网络套接字部分依赖外部标准ssl库。一般在Windows上这个问题不大,Linux上需要正确安装`libssl`并且有可用的ssl.h头文件,这是很多问题的源头,因为有些Linux发行版使用了过时的libssl版本,解决依赖冲突会很麻烦。如果系统中的ssl库版本不符合要求,则安装后的python不能使用ssl访问(pip的使用都会受到限制)。

在mac上我之前以为这个问题不大,因为bsd系统套接字部分的实现非常成熟,但是系统升级11.5以后就没再用过python写爬虫。今天再次写爬虫的时候发现报了很多关于ssl的错误。根本原因是缺乏本地CA证书,因此我们添加上就行了。
证书可以手动添加,但是有更简单的办法自动添加。
安装目录内的工具
在python安装完毕的软件目录内,双击执行Install Certificates.command,会自动诊断并修复本地证书错误。
安装过程
至此问题解决。上述办法是查StackOverflow找到的,CSDN上没有一个答案是靠谱的!
更新
今天在Windows上写爬虫居然也出现了类似的问题,而且不能通过上述脚本自动解决,手动处理过程倒也不算太复杂。在Windows平台上出现ssl错误的环境大多使用anaconda创建。
首先需要确定本地证书目录:

1
2
3
4
>>>import ssl
>>>ssl.get_default_verify_paths()
DefaultVerifyPaths(cafile='C:\\Program Files\\Common Files\\ssl/cert.pem', capath=None,
openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='C:\\Program Files\\Common Files\\ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='C:\\Program Files\\Common Files\\ssl/certs')

如果上述目录根本不存在,则手动创建到ssl目录一层。之后需要使用certifi模块获取合规的证书:

1
2
3
>>>import certifi
>>>certifi.where()
'D:\\Users\\admin\\anaconda3\\envs\\proj\\lib\\site-packages\\certifi\\cacert.pem'

将上述cacert.pem文件拷贝到前述ssl文件夹即可。

本文作者:MyTech::Author

本文链接: https://mytech.pages.dev/2022/01/30/echo_412/