Luk*_*ham 234 python ssl python-requests
我使用Python 2.7.3和请求.我通过pip安装了Requests.我相信这是最新版本.我正在使用Debian Wheezy.
我过去曾经多次使用过Requests并且从未遇到过这个问题,但似乎在Requests我发出https请求时会遇到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.
Run Code Online (Sandbox Code Playgroud)
关于为什么我得到这个的任何想法?我已经检查了错误消息中指定的文档,但文档说要导入urllib3并禁用警告或提供证书.
pla*_*aes 388
使用隐藏的安全功能:
pip install requests[security]
要么
pip install pyOpenSSL ndg-httpsclient pyasn1
这两个命令安装以下额外的包:
请注意,python-2.7.9 +不需要这样做.
如果pip install失败并出现错误,请使用分发包管理器检查您是否需要开发包libffi,libssl并python在系统中安装:
Debian/Ubuntu - python-dev libffi-dev libssl-dev软件包.
Fedora - openssl-devel python-devel libffi-devel包.
上面的发行清单不完整.
解决方法(参见@TomDotTom的原始答案):
如果您无法安装某些必需的开发包,还可以选择禁用该警告:
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
Run Code Online (Sandbox Code Playgroud)
如果你pip自己受到InsecurePlatformWarningPyPI的影响并且无法安装任何东西,可以通过这个循序渐进的指南修复它,以手动部署额外的python包.
小智 68
请求2.6为2.7.9之前的python用户引入了此警告,仅提供了库存SSL模块.
假设您无法升级到更新版本的python,这将安装更多最新的python SSL库:
pip install --upgrade ndg-httpsclient
Run Code Online (Sandbox Code Playgroud)
但是,如果没有pyOpenSSL的构建依赖性,某些系统可能会失败.在debian系统上,在上面的pip命令之前运行它应该足以使pyOpenSSL构建:
apt-get install python-dev libffi-dev libssl-dev
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 19
我不是在生产中使用它,只是一些测试跑步者.并重申urllib3文档
如果您知道自己在做什么,并希望禁用此警告和其他警告
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
Run Code Online (Sandbox Code Playgroud)
编辑/更新:
以下也应该有效:
import logging
import requests
# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)
如果您无法将Python版本升级到2.7.9,并且想要禁止警告,
您可以将"请求"版本降级到2.5.3:
sudo pip install requests==2.5.3
Run Code Online (Sandbox Code Playgroud)
关于版本:http: //fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html
事实上,你可以试试这个.
requests.post("https://www.google.com", verify=False)
你可以阅读请求的代码.
"C:\Python27\Lib\site-packages\requests\sessions.py"
class Session(SessionRedirectMixin):
......
def request(self, method, url,
params=None,
data=None,
headers=None,
cookies=None,
files=None,
auth=None,
timeout=None,
allow_redirects=True,
proxies=None,
hooks=None,
stream=None,
verify=None, # <========
cert=None):
"""
...
:param verify: (optional) if True, the SSL cert will be verified.
A CA_BUNDLE path can also be provided.
...
"""
Run Code Online (Sandbox Code Playgroud)
这里给出的所有解决方案都没有帮助(我受限于python 2.6.6).我在一个简单的开关中找到答案传递给pip:
$ sudo pip install --trusted-host pypi.python.org <module_name>
Run Code Online (Sandbox Code Playgroud)
这告诉pip从pypi.python.org获取模块是可以的.
对我来说,问题是我公司的防火墙背后的代理,使它看起来像某些服务器的恶意客户端.万岁安全.
| 归档时间: |
|
| 查看次数: |
179575 次 |
| 最近记录: |