Python request SSL证书问题

摘要:
好了,第二个简单的方法来了。要下载什么安全证书?直接添加上一段中的证书代码:1ssl_create_default_https_context=ssl._create_ unverified_Context#注意,使用此命令后不能使用请求。您必须使用urllib2。Request的完整代码如下:123456789#方法2(推荐):importsslimporturllib2sl_create_default_https_context=ssl。_create_nunverified_contextreq=urllib2。Requestdata=urllib2.urlopen。阅读()打印摘要:在我的测试之后,我建议你使用方法2。喜欢它!时隔半年多,我再次回到了爬虫:对于以上两种方法,我找到了一个很好的SSL证书验证方法:添加一个参数:verify=False。完整代码如下:12345#SSL证书验证importRequestsresponse=requests。getprint然而,我们发现报告了一个警告,建议我们为它指定一个证书。

错误信息如下:

1
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

  python做爬虫,对于有的网站,需要验证证书,比如:12306,https://inv-veri.chinatax.gov.cn/等网站

那么我参考这个作者的简书:http://www.jianshu.com/p/e42005d48929 解决了这个错误:

加上一个参数:verify=证书路径,或verify=False

1
2
3
4
5
6
7
8
#方法一<br>import  requests
from bs4 import BeautifulSoup
 
url = 'https://inv-veri.chinatax.gov.cn/'
req = requests.get(url,verify=False)
req.encoding = 'utf-8'
soup = BeautifulSoup(req.text,'lxml')
print(soup)

  错误消失了但是有提醒,不过没事,可以解析出源代码。然后我根据他的简书继续下载证书,但是不知道为什么,我下载的证书不管用,然后没辙,幸好之前做过12306这个网站。OK,第二种简单的方法来了,下载啥安全证书?不需要,不需要。直接上一段添加证书代码:

1
ssl._create_default_https_context = ssl._create_unverified_context#注意用了这个就不能用requests了,得用urllib2.Request

  完整代码如下:

1
2
3
4
5
6
7
8
9
# 方法二(推荐):
 
import ssl
import urllib2
 
ssl._create_default_https_context = ssl._create_unverified_context
req = urllib2.Request('https://inv-veri.chinatax.gov.cn/')
data = urllib2.urlopen(req).read()
print(data)

  

  总结:经过我的测试,推荐大家使用方法二。喜欢的话点个赞哦~

经过大半年之后我又回到了爬虫:对于咱们上面两个方法我又发现了一个好的SSL证书验证的方法:加参数:verify=False

完整代码如下:

1
2
3
4
5
#SSL证书验证
import requests
 
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

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

1
2
3
4
5
6
import requests
from requests.packages import urllib3
 
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

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

1
2
3
4
5
import logging
import requests
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

 如果我上面三种方法还不能解决你ssl的错误的话,请重新安装requests:

1
python2下载版本:
1
pip install requests==2.6.0  
1
python3下载版本
1
pip install requests==2.7.0 

再次运行成功。

示例:例如这个网址https://grwsyw.bjgjj.gov.cn/ish/,必须使用对的requests版本

1
2
3
import requests
req = requests.get('https://grwsyw.bjgjj.gov.cn/ish/',verify=False)
print(req.text)

转载至:https://www.cnblogs.com/fh-fendou/p/7479812.html

免责声明:文章转载自《Python request SSL证书问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[nRF51822]0.nRF51822的开发环境ios 3DTouch基本使用教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一步一步带你安装史上最难安装的 vim 插件

YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.参考:https://github.com/Valloric/YouCompleteMe#full-installation-guide本篇文章默认读者知道什么是 unix/linux,vim/...

Python爬虫之定时抢购淘宝商品

Python爬虫之定时抢购淘宝商品 importtime from selenium importwebdriver importdatetime classSpider: def __init__(self, url): self.__base_url =url self.__headers ={...

python中使用multipart/form-data请求上传文件

最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: {"salary":19,"file":{}} 1、使用Python的requests上传表单数据和文件 data={"salary":salary} files={'file...

文本检测和识别 代码结构梳理

前言:最近学习了一些OCR相关的基础知识,包含目标检测和自然语言处理。 正好,在数字中国有相关的比赛: https://www.datafountain.cn/competitions/334/details/rule 所以想动手实践一下,实际中发现,对于数据标签的处理和整个检测和识别的流程并不熟悉,自己从头去搞还是有很大难度。 幸好,有大佬们之前开源的一...

Python中将系统输出显示在PyQt中

开发一个系统,需要将系统的输出显示在PyQt中,可以直接截获sys.stdout,也可以使用信号和槽来实现。 直接显示: """Example usage:import syssys.stdout = OutLog( edit, sys.stdout)sys.stderr = OutLog( edit, sys.stderr, QtGui.QColor(...

使用boost.python进行混合开发

使用boost.python进行混合开发 原文请参照官网和各方参考,本文有改动! 参考链接:http://blog.csdn.net/lanbing510/article/details/12197901 引言: 1简介: Boost.Python 是Boost的一个组件。而Boost是目前很红火的准C++标准库,它提供了很多组件使得人们可以用C++语言更...