1. 程式人生 > >python requests SSL證書問題

python requests SSL證書問題

urllib proc cert sts def int 安全 con 不能

錯誤信息如下:

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

#方法一
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,第二種簡單的方法來了,下載啥安全證書?不需要,不需要。直接上一段添加證書代碼:

ssl._create_default_https_context = ssl._create_unverified_context#註意用了這個就不能用requests了,得用urllib2.Request

  完整代碼如下:

# 方法二(推薦):
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)

  快下班了,此處寫的急點,排版垃圾,不過實用。。。

python requests SSL證書問題