我想为安装了 Python 2.7.5 的客户端创建一个例程,该例程必须使用更新的 API,但出现以下错误:
“requests.exceptions.SSLError:[Errno 1] _ssl.c:504:错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败”
与SSL/TLS兼容性问题有关,但我不知道如何跳过它。虽然问题是你是否可以跳进那个版本的Python?
class http_Factory:
def __init__(self):
# Lee la configuración desde appsettings.json
self.app_settings= AppConfig.get_proxy_config()
self.proxy_url = self.app_settings.get('Url')
self.proxy_user = self.app_settings.get('Username')
self.proxy_password = self.app_settings.get('Password')
# Configura las cabeceras (headers) comunes
def make_request(self, url, method=None, params=None, data=None, headers=None):
if data is not None:
# Convierte el diccionario a JSON si hay datos
data = json.dumps(data)
if self.proxy_url and self.proxy_user and self.proxy_password:
# Usa un proxy si se proporcionan las configuraciones
proxies = {
'http': 'http://{}'.format(self.proxy_url),
'https': 'https://{}'.format(self.proxy_url),
}
auth = HTTPProxyAuth(self.proxy_user, self.proxy_password)
response = requests.request(method, url, params=params, data=data, proxies=proxies, auth=auth, headers=headers)
else:
# Sin proxy
response = requests.request(method, url, params=params, data=data, headers=headers, verify= False)
return response
SSL 连接的成功取决于 OpenSSL 版本和 Python 版本(即与 Python 捆绑的
_ssl
扩展模块)。尝试升级其中任何一个都可以解决该问题。或者,更改某些配置选项(例如允许的协议和密码)可能会解决问题。
如果您的客户坚持使用 Python 2.7,以下是我看到的升级选项:
升级到Python 2.7.18,这是2.7系列的最新Python版本。根据发行版的不同,它可能包含比您的客户端当前使用的 Python 2.7.5 更新版本的 OpenSSL 1.0 或 1.1。此外,捆绑的
_ssl
扩展模块肯定是较新的,这也有帮助。
将OpenSSL升级到最新的1.1.1(当前为1.1.1w)。这还涉及从源代码构建 Python,因为它的
_ssl
扩展模块需要链接到升级后的 OpenSSL。这仍然可以与 Python 2.7.5(从源代码重建时)以及 Python 2.7.18 一起使用。我会尝试两者。前几个搜索结果可能有用: