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

我在过去使用过很多次请求,从来没有遇到过这个问题,但似乎当使用请求进行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.

知道我为什么会收到这个吗?我已经检查了文档,正如在错误消息中指定的那样,但是文档说要导入urllib3,要么禁用警告,要么提供证书。


当前回答

事实上,你可以试试这个。

requests.post(“https://www.google.com”, verify=False)

您可以阅读请求代码。

“C: \ Python27李勃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.
    ...
    """

其他回答

事实上,你可以试试这个。

requests.post(“https://www.google.com”, verify=False)

您可以阅读请求代码。

“C: \ Python27李勃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.
    ...
    """

下面是我在Python 3.6上的工作方式:

import requests
import urllib3

# Suppress InsecureRequestWarning: Unverified HTTPS
urllib3.disable_warnings()

不要安装pyOpenSSL,因为它很快就会被弃用。目前最好的方法是-

import requests
requests.packages.urllib3.disable_warnings()

如果您无法将Python版本升级到2.7.9,并希望消除警告,

你可以把你的“请求”版本降级到2.5.3:

sudo pip install requests==2.5.3

关于版本: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html

Requests 2.6为2.7.9以前版本的python用户引入了此警告,只有现有的SSL模块可用。

假设你不能升级到较新的python版本,这将安装最新的python SSL库:

pip install --upgrade ndg-httpsclient 

然而,在一些没有pyOpenSSL的构建依赖的系统上,这可能会失败。在debian系统上,在上面的pip命令之前运行这个命令应该足以让pyOpenSSL构建:

apt-get install python-dev libffi-dev libssl-dev