190617-python 网络请求之certificate verify failed问题处理

文章目录
  1. II. 其他
    1. 1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
    2. 2. 声明
    3. 3. 扫描关注

在使用python的request库进行网络访问时,当url是一个https的链接,居然没法正常玩耍,直接提示

1
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)>

使用request进行图片下载,https的格式的图片,结果直接抛出来上面的异常,网上查询了一下,解决方法也比较简单,忽略掉证书校验即可

1
2
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

加上上面两行,然后再次测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os
import random
from urllib import request
import ssl
ssl._create_default_https_context = ssl._create_unverified_context


def testDownImg():
url = 'https://www.theblockbeats.com/uploads/course/20190617/1560740686526583.jpg'

def tmp_save(url, app=None):
path = f"/tmp/img/{app}/"

if not os.path.exists(path):
# 当目录不存在时,主动创建
os.makedirs(path)

try:
opener = request.build_opener()
opener.addheaders = [('user-agent',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')]
request.install_opener(opener)

file = f"{path}/01_{random.randint(0, 20)}"
request.urlretrieve(url, file)
return file
except Exception as e:
print(e)
return None

ans = tmp_save(url, app='test')
print(ans)


testDownImg()

再次执行,图片正常保存, 上面的代码中,还演示了某些情况下,对user-agent进行校验的case,我们可以通过 opener 来注册请求头

II. 其他

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

QrCode

知识星球

goals

# Python

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×