快速解决Requests请求出现SSLError

在网上有用户在Linux上爬Google Play的app列表时,发现之前的脚本不能用了,总是报SSLError。其实这是因为用python写爬虫的时候,需要https认证的网站,采用常用模块requests模块,而一般的做法都是在请求中将verify设置成假,免证书验证,但是这些都是理想状态,https请求很容易报错,一旦报错就难以解决。


这里是由于这个网页的证书没有被官方CA机构信任,所以这里会出现证书验证的错误。
这样的url典型有https://www.12306.cn

如下使用代码的时候,就会出现这样的问题。

import requests
r = requests.get(‘https://www.12306.cn’)
print(r.status_code)

解决方法

第一种解决方法

解释:下面代码有点意思。一开始的时候写在pycharm上面显示的是错误的信息。但是运气起来却是没有问题的。
下面代码调用了urllib3.disable_warnings()函数,来确保不会发生警告。

import requests
from requests.packages import urllib3
urllib3.disable_warnings()
r = requests.get(‘https://www.12306.cn’, verify=False)
print(r.status_code)

如果不写 urllib3.disable_warnings(),看下面代码

import requests
# from requests.packages import urllib3
# urllib3.disable_warnings()
r = requests.get(‘https://www.12306.cn’, verify=False)
print(r.status_code)

输出如下
下面内容中是对应的路径。

200
Path\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)

解决办法2:

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

总结
其实这一切都是因为没采用正规的SSL证书。信孚科技建议各大用户在选择SSL证书一定要根据自己的站点特性选择合适的SSL证书,选择全球认可的CA机构,以此避免因为SSL证书的问题而导致各种SSL报错。而信孚科技是Comodo、Symantec、GeoTrust、GlobalSign等全球信任的颁发机构(CA)的中国代理商,为国内网络提供专业的SSL数字证书、邮件签名证书、客户端证书、代码签名、网站安全服务产品。同时信孚科技拥有强大的技术支持团队,能提供完善的技术支持服务,为国内企业和个人提供优质低价的SSL证书服务。

相关新闻

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code