requests库的使用—SSL证书验证

简介: requests库的使用—SSL证书验证

requests库的使用—SSL证书验证
现在很多网站要求使用HTTPS协议,但是有些网站可能并没有设置好HTTPS证书,或者网站的HTTPS证书可能并不被CA机构认可,这时这些网站就可能出现SSL证书错误的提示。

例如这个示例网站:https://ssr2.scrape.center/,如果用Chrome浏览器打开它,则会提示“您的连接不是私密连接”这样的错误,如下图所示:

我们可以在浏览器中通过一些设置来忽略证书的验证。但是如果想用requests库来请求这类网站,又会遇到什么问题呢?我们用代码试一下:

import requests

response = requests.get('https://ssr2.scrape.center/')
print(response.status_code)

运行结果如下:

image.png

可以看到,直接抛出了SSLError错误,原因是我们请求的URL的证书是无效的。

那如果我们一定要爬取这个网站,应该怎么做呢?可以使用verify参数控制是否验证证书,如果将此参数设置为False,那么在请求时就不会再验证证书是否有效。如果不设置verify参数,其默认值是True,会自动验证。

于是我们改写代码如下:

import requests

response = requests.get('https://ssr2.scrape.center/',verify=False)
print(response.status_code)

运行结果如下:
image.png

不过我们发现其中报了一个警告,它建议我们给它指定证书。我们可以通过设置忽略经过的方式来屏蔽这个警告:

import requests
from requests.packages import urllib3

urllib3.disable_warnings()
response = requests.get('https://ssr2.scrape.center/', verify=False)
print(response.status_code)

或者通过捕获警告道日志的方式忽略警告:

import requests
import logging

logging.captureWarnings(True)
response = requests.get('https://ssr2.scrape.center/', verify=False)
print(response.status_code)

运行结果如下:

image.png

相关文章
|
3月前
|
网络安全
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
嗯… 无法访问此页面43.139.210.211 花了太长时间进行响应,无法连接宝塔,是服务器内的宝塔面板开启了ssl的验证,但是没有绑定证书,所以被拦截,关闭宝塔面板的ssl访问认证恢复正常
|
网络安全 Python
requests--会话对象,ssl验证
requests--会话对象,ssl验证
|
5月前
|
网络安全
HttpURLConnection 跳过ssl验证
HttpURLConnection 跳过ssl验证
122 0
|
算法 安全 网络安全
客户端如何验证ssl/tls证书的合法性
客户端是如何验证ssl/tls证书的合法性
501 1
|
Web App开发 负载均衡 安全
浏览器如何验证SSL证书及如何查看网站的证书
浏览器如何验证SSL证书及如何查看网站的证书
浏览器如何验证SSL证书及如何查看网站的证书
|
安全 网络安全 数据建模
SSL证书按照验证等级分类有哪些?
SSL证书按照验证等级分类有哪些? 按验证等级可以分为三类:
SSL证书按照验证等级分类有哪些?
|
域名解析 安全 网络协议
一文读懂,SSL证书怎么做验证?
SSL证书目前已经有越来越多的企业网站开始使用,安装SSL证书后,原有的http协议将会变成安全性更好的https加密协议,这对保护用户的信息安全,保障企业及用户的利益起着重要作用。
479 0
一文读懂,SSL证书怎么做验证?
|
网络安全 PHP
PHP 5.6上的SSL证书验证
PHP 5.6上的SSL证书验证
196 0
|
安全 网络协议 网络安全
|
安全 网络安全 数据安全/隐私保护
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
451 0
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》