1
+ import ssl
2
+ import requests
3
+
4
+ class BypassTLSv1_3 (requests .adapters .HTTPAdapter ):
5
+ SUPPORTED_CIPHERS = [
6
+ "ECDHE-ECDSA-AES128-GCM-SHA256" , "ECDHE-RSA-AES128-GCM-SHA256" ,
7
+ "ECDHE-ECDSA-AES256-GCM-SHA384" , "ECDHE-RSA-AES256-GCM-SHA384" ,
8
+ "ECDHE-ECDSA-CHACHA20-POLY1305" , "ECDHE-RSA-CHACHA20-POLY1305" ,
9
+ "ECDHE-RSA-AES128-SHA" , "ECDHE-RSA-AES256-SHA" ,
10
+ "AES128-GCM-SHA256" , "AES256-GCM-SHA384" , "AES128-SHA" , "AES256-SHA" , "DES-CBC3-SHA" ,
11
+ "TLS_AES_128_GCM_SHA256" , "TLS_AES_256_GCM_SHA384" , "TLS_CHACHA20_POLY1305_SHA256" ,
12
+ "TLS_AES_128_CCM_SHA256" , "TLS_AES_256_CCM_8_SHA256"
13
+ ]
14
+
15
+ def __init__ (self , * args , ** kwargs ):
16
+ self .ssl_context = ssl .create_default_context (ssl .Purpose .SERVER_AUTH )
17
+ self .ssl_context .set_ciphers (':' .join (BypassTLSv1_3 .SUPPORTED_CIPHERS ))
18
+ self .ssl_context .set_ecdh_curve ("prime256v1" )
19
+ self .ssl_context .minimum_version = ssl .TLSVersion .TLSv1_3
20
+ self .ssl_context .maximum_version = ssl .TLSVersion .TLSv1_3
21
+ super ().__init__ (* args , ** kwargs )
22
+
23
+ def init_poolmanager (self , * args , ** kwargs ):
24
+ kwargs ["ssl_context" ] = self .ssl_context
25
+ kwargs ["source_address" ] = None
26
+ return super ().init_poolmanager (* args , ** kwargs )
27
+
28
+ def proxy_manager_for (self , * args , ** kwargs ):
29
+ kwargs ["ssl_context" ] = self .ssl_context
30
+ kwargs ["source_address" ] = None
31
+ return super ().proxy_manager_for (* args , ** kwargs )
0 commit comments