爬蟲之ssh證書警告錯誤


錯誤信息:

錯誤信息如下:

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

 錯誤分析:  

ssh證書是美國網景公司發放的一個安全認證證書,有了這個證書即可證明網站是安全的,但是認證是需要收費的,

所以一些網站就會自己仿造證書,這個時候瀏覽器就會給予警告,而我們爬蟲就爬不到想要的信息

解決辦法:

方式一:

加上一個參數: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)

方式二:

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)

方式三:

我們可以通過設置忽略警告的方式來屏蔽這個警告:

import requests
from requests.packages import urllib3

urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

或者通過捕獲警告到日志的方式忽略警告:

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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM