如何为urlretrieve禁用SSL验证?

时间:2017-04-04 10:00:05

标签: python urllib2

围绕SO问了几次类似的问题,但解决方案是urlopen。该函数采用可选的context参数,该参数可以接受预先配置的SSL上下文。 urlretrieve没有此参数。如何在以下调用中绕过SSL验证错误?

urllib.request.urlretrieve(
    "http://sourceforge.net/projects/libjpeg-turbo/files/1.3.1/libjpeg-turbo-1.3.1.tar.gz/download", 
    destFolder+"/libjpeg-turbo.tar.gz")

2 个答案:

答案 0 :(得分:3)

此解决方案对我来说效果很好:在调用库之前,请定义默认的SSL上下文:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# urllib.request.urlretrieve(...)

来源:http://thomas-cokelaer.info/blog/2016/01/python-certificate-verified-failed/

答案 1 :(得分:1)

mohi@dev:~$ vi runtime.txt mohi@dev:~$ cat runtime.txt python-2.7.13 似乎无法做到这一点(在Python> = 2.7.9或Python> = 3.0中)。

建议将requests包作为替代品。

编辑添加:已将上下文参数添加到代码中,即使文档中未提及!帽子@Sushisource