python环境设置ssl

Python09

python环境设置ssl,第1张

爬取数据需要用python请求网络数据, https的加密实现依赖openssl

利用源码直接安装

安装zlib库

安装openssl到 /usr/local/openssl 目录,安装之后,编译

安装结束后执行以下命令

进入/usr/local目录下,执行以下命令

在/etc/ld.so.conf文件的最后面,添加如下内容:/usr/local/openssl/lib

然后执行以下命令

添加OPESSL的环境变量,在etc/的profile的最后一行,添加:

查看openssl版本

使用源码按过于繁琐,如果对软件版本没有特殊要求的话可以使用yum命令安装和更新,既方便又快捷

先看下ssl有没有被引入

报错是因为python没有带--with-ssl 选项编译

修改Setup.dist文件 (把Setup这个不带后缀的也一起改了)

修改结果如下:(去掉最后4行的注释)

切到python文件夹下

完成之后

没有报错, 大功告成

参考链接

ImportError: No module named _ssl

linux上安装Openssl步骤详解

一,检查pip有没安装cryptography,pyOpenSSL,certifi

pip install cryptography

pip install pyOpenSSL

pip install certifi

二,添加ssl验证

import ssl

ssl._create_default_https_context = ssl._create_stdlib_context

三,添加header

header = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0Win64x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45"

}

四,调用requests的get接口

response = requests.get(url,headers=header)

content = response.text

print(content)

就能获取到html内容,如果需要更好的解释html标签内容可以使用 BeautifulSoup

我之前写过一个脚本用于实现检查ssl证书并邮件通知的功能:

python3下检查ssl证书过期时间并邮件通知

但是在使用过程中,我发现了一个问题: 证书过期时间不准 。这种说法可能不是很准确,确切地说是:如果在一级域名下配置了子域名证书,且不同级证书过期时间不同,则之前的脚本可能会检查到一级域名的过期时间,并不会返回子域名证书过期时间,如此便会出现过期时间不准的情况。

于是我在网上找到一个可用的脚本(python3.6.5下亲测有效),链接如下:

https://gist.github.com/gdamjan/55a8b9eec6cf7b771f92021d93b87b2c?tdsourcetag=s_pctim_aiomsg

脚本具体内容我这里也贴一下,可按实际需求进行修改,使用前务必注意安装相关模块: