python:urllib2.URLError urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
现在随处可见 https 开头的网站,urllib2可以为 HTTPS 请求验证SSL证书,就像web浏览器一样,如果网站的SSL证书是经过CA认证的,则能够正常访问,
如果SSL证书验证不通过,或者操作系统不信任服务器的安全证书,比如浏览器在访问12306网站的时候,会警告用户证书不受信任。(据说 12306 网站证书是自己做的,没有通过CA认证)
警告用户证书不受信任
urllib2在访问的时候则会报出SSLError:
import urllib2
url = "https://www.12306.cn/mormhweb/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
request = urllib2.Request(url, headers = headers)
response = urllib2.urlopen(request)
print response.read()
运行结果:
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>
所以,如果以后遇到这种网站,我们需要单独处理SSL证书,让程序忽略SSL证书验证错误,即可正常访问。
import urllib
import urllib2# 1. 导入Python SSL处理模块
import ssl# 2. 表示忽略未经核实的SSL证书认证
context = ssl._create_unverified_context()url = "https://www.12306.cn/mormhweb/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
request = urllib2.Request(url, headers = headers)# 3. 在urlopen()方法里 指明添加 context 参数
response = urllib2.urlopen(request, context = context)
print response.read()
总结:解决方案包括下列两种方式:
1. 使用ssl创建未经验证的上下文,在urlopen中传入上下文参数
import ssl
import urllib2
context = ssl._create_unverified_context()
print urllib2.urlopen("https://www.12306.cn/mormhweb/", context=context).read()
2. 全局取消证书验证
import ssl
import urllib2ssl._create_default_https_context = ssl._create_unverified_context
print urllib2.urlopen("https://www.12306.cn/mormhweb/").read()
关于CA
CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数字证书的受信任的第三方机构,
CA的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理。
现实生活中可以用身份证来证明身份, 那么在网络世界里,数字证书就是身份证。和现实生活不同的是,并不是每个上网的用户都有数字证书的,往往只有当一个人需要证明自己的身份的时候才需要用到数字证书。
普通用户一般是不需要,因为网站并不关心是谁访问了网站,现在的网站只关心流量。但是反过来,网站就需要证明自己的身份了。
python:urllib2.URLError urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed相关推荐
- Python [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
一个搭建在SAE上的Django应用,使用新浪微博提供的Python SDK已经稳定运行一年有余,但最近开始持续出现微博认证失败的状况. 摘录微博python SDK的错误提示如下所示: ERROR: ...
- 解决方案:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to
解决方案:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to ...
- pip联网问题 SSLError(SSLError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748
有时候你在conda中使用pip,即使在pip.conf中设置了trusted-host,还是不起作用,连不上网: $ pip search absl-py WARNING: pip is being ...
- ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to
最近再用mac下的pycharm编写python文件,在抓取制定网站的错误提示每次运行都直接报错如下: ssl.SSLCertVerificationError: [SSL: CERTIFICATE_ ...
- [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
错误: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727),报错问题就是证书验证失败,这种情况出现在网站使用 ...
- 解决ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
问题 原代码: async def call_wss_api(msg):async with websockets.connect('wss://xxx.com/tool/handle') as we ...
- ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed问题解决
问题复现 在使用django框架编写项目时,启动项目正常,访问url时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] ...
- GAE使用时的一些问题:urllib2.URLError: urlopen error [Errno 10061]
问题描述: Win7系统下,在用GAE自己架设代理时,用appcfg.py update myapp/上传时出现urllib2.URLError: <urlopen error [Errno 1 ...
- 下载Pytorch的自带数据集时报错=urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]
错误原因: 这是一个SSL证书验证错误,当请求一个https站点,但是证书验证错误时,就会报这样的错误. 解决办法: 只需在代码中加入如下两行将跳过证书的检查,即可成功访问网页. # 全局取消证书验证 ...
最新文章
- centos java tomcat_centos配置Tomcat以指定的身份(非root)运行
- rowid 对应mysql_请教一下相当于MySQL中Oracle的RowID
- 电子商务系统的设计与实现(九):后端管理系统功能细化
- Mysql 中Sql控制流语句_DCL语句/控制流语句
- ASP.NET页面生命周期概述(转载)
- java中方法_java中的方法
- ubuntu批量创建文件夹
- 变分模态分解python代码_VMD变分模态分解代码问题
- 使用STM32,接触USB功能
- spring boot 核心配置文件是什么?
- 维修 空调 碰上 骗子
- 基于.net的当下传统制造业MES系统的思考(一)
- 机器人控制学习机器编程代码_带上机器人,让他们维护我们的代码!
- python基础之实现len函数
- SkeyeRTSPLive传统视频监控互联网+实现利器解决方案
- EasyExcel 使用Converter 转换注入时报nullPoint异常
- 国家信息安全水平考试NISP一级模拟题(02)
- Go pprof 性能分析工具 - 详细使用图解
- 当前日期的周一,下周日期,下月日期;批次号生成
- Ubuntu安装腾讯APP