11import time
22
33import requests
4+ from requests .adapters import HTTPAdapter
5+ from requests .packages .urllib3 .util .ssl_ import create_urllib3_context
46
57from morphapi .utils .data_io import connected_to_internet
68
79mouselight_base_url = "https://ml-neuronbrowser.janelia.org/"
10+ CIPHERS = ":HIGH:!DH:!aNULL"
11+
12+
13+ class NoDhAdapter (HTTPAdapter ):
14+ """A TransportAdapter that disables DH cipher in Requests."""
15+
16+ def init_poolmanager (self , * args , ** kwargs ):
17+ context = create_urllib3_context (ciphers = CIPHERS )
18+ kwargs ["ssl_context" ] = context
19+ return super (NoDhAdapter , self ).init_poolmanager (* args , ** kwargs )
820
921
1022def request (url , verify = True ):
@@ -19,14 +31,9 @@ def request(url, verify=True):
1931 "You need to have an internet connection to send requests."
2032 )
2133
22- try :
23- _DEFAULT_CIPHERS = requests .packages .urllib3 .util .ssl_ .DEFAULT_CIPHERS
24- requests .packages .urllib3 .util .ssl_ .DEFAULT_CIPHERS = (
25- _DEFAULT_CIPHERS + ":HIGH:!DH:!aNULL"
26- )
27- response = requests .get (url , verify = verify )
28- finally :
29- requests .packages .urllib3 .util .ssl_ .DEFAULT_CIPHERS = _DEFAULT_CIPHERS
34+ session = requests .Session ()
35+ session .mount ("https://" , NoDhAdapter ())
36+ response = session .get (url )
3037
3138 if response .ok :
3239 return response
0 commit comments