Anfragen verwendet die Python-Standardbibliothek ssl Modul unter der Haube - das unterstützt verschiedene Versionen von SSL und TLS. Sie können Anforderungen zur Verwendung eines bestimmten Protokolls (wie TLSv1) mitteilen, indem Sie eine HTTPAdapter
erstellen, die die PoolManager-Instanz anpasst, die erstellt wird.
Ich musste so etwas tun, aber wurde von der Tatsache gebissen, dass wir auch über einen Proxy gingen - in diesem Fall wird die init_poolmanager
Methode nicht aufgerufen, weil sie stattdessen eine ProxyManager
verwendet. Ich benutzte dieses:
class ForceTLSV1Adapter(adapters.HTTPAdapter):
"""Require TLSv1 for the connection"""
def init_poolmanager(self, connections, maxsize, block=False):
# This method gets called when there's no proxy.
self.poolmanager = poolmanager.PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
ssl_version=ssl.PROTOCOL_TLSv1,
)
def proxy_manager_for(self, proxy, **proxy_kwargs):
# This method is called when there is a proxy.
proxy_kwargs['ssl_version'] = ssl.PROTOCOL_TLSv1
return super(ForceTLSV1Adapter, self).proxy_manager_for(proxy, **proxy_kwargs)
Was ist Ihre Version von Python? Diese [SO Frage & Antwort] (http://stackoverflow.com/questions/18578439/using-requests-with-tls-doesnt-give-sni-support) kann Ihnen einige Einsichten geben. – Anzel
... und welche ssl Bibliothek in welcher Version verwenden Sie? –