对于https请求,是需要ssl证书验证的请求的,所以如果在请求时如果不带ssl证书,那么可以忽略证书的验证

有三种方法去实现:

1、Requests请求:

在文档中可以看到:http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced

Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。要想检查某个主机的 SSL 证书,你可以使用 verify 参数:

如果你没有设置ssl证书,那就忽略证书:

如果你将 verify 设置为 False,Requests 也能忽略对 SSL 证书的验证。

 requests.get('https://kennethreitz.com', verify=False)

因为默认情况下,是verify是为Ture

2、urllib2.urlopen()

使用urllib的时候,就需要关闭证书的验证,在官网文档可以看到

https://www.python.org/dev/peps/pep-0476/

import ssl

# This restores the same behavior as before.
context = ssl._create_unverified_context()
urllib.urlopen("https://no-valid-cert", context=context)

以上几行代码就可以跳过ssl证书的验证了。

3、urllib3的到来

>>> import urllib3.contrib.pyopenssl
>>> urllib3.contrib.pyopenssl.inject_into_urllib3()

Finally, you can create a PoolManager that verifies certificates when performing requests:

>>> import certifi
>>> import urllib3
>>> http = urllib3.PoolManager(
... cert_reqs='CERT_REQUIRED',
... ca_certs=certifi.where())

The PoolManager will automatically handle certificate verification and will raise SSLErrorif verification fails:

>>> http.request('GET', 'https://google.com')
(No exception)
>>> http.request('GET', 'https://expired.badssl.com')
urllib3.exceptions.SSLError ...

最后一点就是

Requests 默认附带了一套它信任的根证书,来自于 Mozilla trust store。然而它们在每次 Requests 更新时才会更新。这意味着如果你固定使用某一版本的 Requests,你的证书有可能已经 太旧了。

从 Requests 2.4.0 版之后,如果系统中装了 certifi 包,Requests 会试图使用它里边的 证书。这样用户就可以在不修改代码的情况下更新他们的可信任证书。

为了安全起见,我们建议你经常更新 certifi!

最新文章

  1. NOI 题库 9272 题解
  2. C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享
  3. python学习——如何判断输入是数字
  4. IIS 7 Web服务器上部署ASP.NET网站(转)
  5. java之数组
  6. 两种动态加载JavaScript文件的方法
  7. 每天一个linux命令(22):chgrp命令
  8. 关于HIVE的配置
  9. HDUOJ----2571(命运)(简单动态规划)
  10. POJ3608(旋转卡壳--求两凸包的最近点对距离)
  11. 一步一步学c#(五):泛型
  12. Moya 浅析
  13. 【证明】【一题多解】布尔不等式(union bound)的证明
  14. keras实现textcnn
  15. 【HNOI 2018】游戏
  16. 【2016.3.19】作业 分析一个很有(wu)趣(liao)的小程序
  17. ACM基础(一)
  18. C# WinForm 菜单项的大小、高宽的手动控制
  19. javascript 构造函数类和原型 prototyp e定义的属性和方法的区别
  20. js时间的应用(再看看前面,会发现不一样的)

热门文章

  1. STM32JTAG口用作普通IO的配置
  2. Qt——styleSheet
  3. verilog中参数传递与参数定义中#的作用(二)
  4. Python前戏
  5. elk6.3.2在线安装中文分词工具IK
  6. 20145202马超《java》【课堂实验】P98测试
  7. 北京Uber优步司机奖励政策(4月1日)
  8. DE1-SOC工程helloworld-第一篇(未完成)
  9. possible new indexes 出现了
  10. word record 4