【问题标题】:Python Requests: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:547)Python 请求:[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:547)
【发布时间】:2014-03-28 01:00:10
【问题描述】:

我正在尝试使用 python 请求包登录并抓取航空公司网站。仅通过尝试加载主网站,我就收到了以下错误。该代码去年可以使用,但直到现在我还没有尝试使用新的 Requests 2.2.1。有什么想法吗?

[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:547)

我正在使用请求 2.2.1。

ssladapter.py

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager

from ssl import PROTOCOL_TLSv1


class SSLAdapter(HTTPAdapter):
    '''An HTTPS Transport Adapter that uses an arbitrary SSL version.'''

    __attrs__ = ['max_retries', 'config', '_pool_connections', '_pool_maxsize', '_pool_block', 'ssl_version']

def __init__(self, ssl_version=None, **kwargs):
    self.ssl_version = ssl_version

    super(SSLAdapter, self).__init__(**kwargs)


def init_poolmanager(self, connections, maxsize, block=False):
    self.poolmanager = PoolManager(num_pools=connections,
        maxsize=maxsize, block = block,
        ssl_version=self.ssl_version)

scrape.py

import requests
import ssladapter
from ssl import PROTOCOL_TLSv1

session = requests.Session()
session.mount('https://', ssladapter.SSLAdapter(ssl_version=PROTOCOL_TLSv1))

request = session.get("www.delta.com")

!!!此处引发 SSLERROR。

【问题讨论】:

    标签: python-requests


    【解决方案1】:

    这个错误不是Requests库的问题,因为它已经过严格测试。

    这是'Man-in-the-middle' attack的指示。

    您可能正在运行诸如 Fiddler 或 Wireshark 之类的网络嗅探工具。

    更多详细信息related Question 这里建议 SSL 应该是这样工作的。

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2015-12-21
      • 2018-07-29
      • 2017-06-01
      • 2017-02-05
      • 2023-03-03
      • 1970-01-01
      • 2020-01-14
      • 2017-06-25
      相关资源
      最近更新 更多