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

4

我正在尝试使用Python Request包登录并抓取一个航空公司网站。但是,我仅仅尝试加载主网站就遇到了以下错误。这段代码去年还能用,但现在我使用新的Requests 2.2.1版本时就不行了。有什么想法吗?

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:547)

我正在使用Requests 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 错误。

1个回答

1

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

这是'中间人攻击'的迹象。

可能你正在运行像Fiddler或Wireshark这样的网络嗅探工具。

关于此更详细的信息,请参见相关问题 在这里建议这就是SSL应该如何工作的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接