当前位置: 首页 > 知识库问答 >
问题:

Python请求Requests.exceptions.sslerror:[Errno 8]_ssl.c:504:发生违反协议的EOF

傅阿苏
2023-03-14
def SendInitialRequest(xmlmessage, redirecturl):
    url = 'https://centineltest.cardinalcommerce.com/maps/txns.asp'

    payload = 'cmpi_msg=' + ET.tostring(xmlmessage)
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
    }
    r = requests.post(url, data=payload, headers=headers, verify=None)
    print r.text
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "clams/libs/centinel/thinclient.py", line 134, in SendInitialRequest
    r = requests.post(url, data=payload, headers=headers, verify=None)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 87, in post
    return request('post', url, data=data, **kwargs)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/sessions.py", line 269, in request
    resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/sessions.py", line 364, in send
    r = adapter.send(request, **kwargs)
  File "/home/jasonamyers/.virtualenv/clams/lib/python2.7/site-packages/requests/adapters.py", line 163, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
$ openssl s_client -connect centineltest.cardinalcommerce.com:443
CONNECTED(00000003)
140019346777760:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 226 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
$ openssl s_client -tls1 -connect centineltest.cardinalcommerce.com:443
CONNECTED(00000003)
depth=2 C = US, O = "thawte, Inc.", OU = Certification Services Division, OU
verify error:num=20:unable to get local issuer certificate
verify return:0
---

共有1个答案

姬欣怡
2023-03-14

从“请求问题”页面为其他人在此处重新发布此内容:

Requests'不支持在版本1之前执行此操作。在版本1之后,您需要对HTTPAdapter进行子类化,如下所示:

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

class MyAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(num_pools=connections,
                                       maxsize=maxsize,
                                       block=block,
                                       ssl_version=ssl.PROTOCOL_TLSv1)

这样做之后,就可以这样做了:

import requests
s = requests.Session()
s.mount('https://', MyAdapter())
 类似资料:
  • 我使用Django芹菜任务连接到Facebook Graph API,并使用Gevent请求库。我经常遇到的问题是,偶尔我会发现EOF违反了协议异常。我四处搜索,各种来源提供了不同的修复方法,但似乎都不起作用。 我尝试过用monkey修补ssl模块(gevent.monkey.patch_all())和其他一些模块,但没有成功。 我甚至不确定这是否是openssl问题,因为在应用Gevent优化之

  • 我使用ArchLinux,python 3.4,openSSL 1.0.2d。当我请求https://www.supercash.cz/我得到这个错误。无论我使用请求还是在urllib中构建,总是会有相同的错误。此网站的SSL证书接缝在浏览器Chrome。 我试过这个,但它只在python2中有效。7错误-urlopen错误[Errno 8]\u ssl。c:504:EOF违反了协议,需要帮助 这

  • 我正在尝试连接Neo4j,但我一直收到这个错误。我试过了 但当我尝试连接时,会出现这个错误 SecurityError:无法建立到“EOF违反协议(_ssl.c:841)”的安全连接 我可以在打字时连接到浏览器http://localhost:7474/browser/ 以下是完整的错误日志: ----------------------------------------------------

  • 我正在使用gevent为游泳池运行许多芹菜任务(20000个)(也包括猴子修补所有)。这些任务中的每一项都会通过第三方服务(如adwords)来获取数据。 由于潜在的SSL错误,我一直有任务失败。下面是一些异常的堆栈跟踪(没有特定的顺序,这些是单独任务的失败)。我偶尔也会遇到WantWriteError和ZeroReturnError,但EOF错误似乎最多。 这些错误发生在使用不同的客户端库时,如

  • WebSocket提供了一种像人类对话一样的双向通信。客户端可以向服务器发送数据,服务器可以随时向客户端发送数据。但是请求-响应行为呢?客户端可以向服务器询问一些内容并等待响应。看来Websocket并没有提供任何东西来将客户端数据(请求)链接到服务器数据(响应)。 这可能是子协议的工作,我对如何做到这一点有一些想法(发送一个ID和请求,并在超时期间内等待一个具有相同ID的响应)。 为了不推倒重来

  • 问题内容: 我得到以下称呼: Oracle系统在Solaris 5.10上运行10.2.0.3.0。jdbc驱动程序在JDK 1.6.0_21上运行(如果已导入,则Java也在Solaris 5.10机器上运行)。我尝试了几种不同的oracle瘦驱动程序,包括最新的和看起来与oracle版本完全匹配的驱动程序。 我正在运行的查询非常简单:“按key1,key2,key3从some_table中选择