admin管理员组

文章数量:1567915

处理不被信任证书的网站

SSL证书:数字证书的一种,配置在服务器上面的,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。

SSL证书的特点:遵循了SSL协议,由收信任的数字证书颁发机构CA,验证身份之后颁发的证书,同时具有服务器身份验证和数据传输加密功能。
SSL证书的发展历程:
为啥网站会出现SSL证书? 具有服务器身份验证和数据传输加密的功能,https是http的安全版本,是在http的基础上添加的安全阶层(ssl层),https在传输的时候,就有ssl加密和解密的过程,能够保证数据传送的安全性,大多数网站用的都是https,http用的就比较少了,打开http开头的网站会提示不安全。https = http + ssl
http升级成https时,需要ssl证书,一旦有了ssl证书后,数据传输的安全有了保证,就成了https。ssl证书得到有两种方法:一是自己做,大型的公司有专门的团队去做;二是找专业的第三方平台去做。自己做的话需要找专门的机构去认证,否则不会被信任。 有些网站不被信任可能就访问不了,但是像税务网站,一般没有需求的人也不会去访问,某种程度上数据更安全了。

测试网站:
https://inv-veri.chinatax.gov/
打开后左侧显示“不安全”三个字,但是也是https开头的,是因为所做的证书没有去认证。

需求:向一个不被SSl信任的网站发起请求 爬取数据
目标url:https://inv-veri.chinatax.gov/
​如果单纯的用以前的requests模块就爬取不了该种网站,requests模块在向网站发起请求的时候会自动的检测数字证书,发现数字证书是不被信任的,就会抛出异常。代码如下:

import requests
# 目标url
url = 'https://inv-veri.chinatax.gov/'
headers = {
   
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62'
}
res = requests.get(url, headers=headers)
print(res.text)

返回的结果

    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='inv-veri.chinatax.gov', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))

可以看到返回的是SSLError,证书错误。

如果想正常爬取,那就不让re

本文标签: 爬虫案例Python反反爬cookie