小编典典

使用 Requests 包时出现 SSL InsecurePlatform 错误

all

我使用 Python 2.7.3 和请求。我通过 pip 安装了请求。我相信这是最新版本。我在 Debian Wheezy 上运行。

我过去曾多次使用过 Requests 并且从未遇到过这个问题,但似乎在使用 https
请求时Requests遇到了InsecurePlatform异常。

错误提到urllib3,但我没有安装。我确实安装了它以检查它是否解决了错误,但它没有。

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and 
may cause certain SSL connections to fail. For more information, see 
https://urllib3.readthedocs.org/en/latest  
/security.html#insecureplatformwarning.

关于我为什么得到这个的任何想法?我已经检查了错误消息中指定的文档,但是文档说要导入 urllib3 并禁用警告或提供证书。


阅读 72

收藏
2022-05-31

共1个答案

小编典典

使用有点隐藏的 安全 功能:

pip install requests[security] 或者 pip install pyOpenSSL ndg-httpsclient pyasn1

这两个命令都安装了以下额外的包:

  • pyOpenSSL
  • cryptography
  • idna

请注意,这不是python-2.7.9+所必需的。

如果pip install失败并出现错误,请检查您是否需要开发包libffilibssl
使用发行版的包管理器*python安装在系统中: *

  • Debian / Ubuntu -python-dev libffi-dev libssl-dev软件包。

  • Fedora -openssl-devel python-devel libffi-devel软件包。

上面的发行版列表不完整。

解决方法 ([参见@TomDotTom 的原始答案])

我不在生产中使用它,只是一些测试运行器。并重申urllib3 文档

如果您知道自己在做什么并想禁用此警告和其他警告

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

编辑/更新:

以下内容也应该起作用:

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)

如果您无法安装某些必需的开发包,还有一个选项可以禁用该警告:

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

如果您pip自己受到PyPI 的影响InsecurePlatformWarning并且无法从 PyPI
安装任何东西,则可以使用此分步指南手动部署额外的python 包来修复它。

2022-05-31