2525
2626
2727class AppiumConnection (RemoteConnection ):
28+ _proxy_url : Optional [str ]
29+
2830 def __init__ (
2931 self ,
3032 remote_server_addr : str ,
@@ -39,7 +41,7 @@ def __init__(
3941
4042 def _get_connection_manager (self ) -> Union [urllib3 .PoolManager , urllib3 .ProxyManager ]:
4143 # https://github.com/SeleniumHQ/selenium/blob/0e0194b0e52a34e7df4b841f1ed74506beea5c3e/py/selenium/webdriver/remote/remote_connection.py#L134
42- pool_manager_init_args = {'timeout' : self ._timeout }
44+ pool_manager_init_args = {'timeout' : self .get_timeout () }
4345
4446 if self ._ca_certs :
4547 pool_manager_init_args ['cert_reqs' ] = 'CERT_REQUIRED'
@@ -50,11 +52,17 @@ def _get_connection_manager(self) -> Union[urllib3.PoolManager, urllib3.ProxyMan
5052
5153 pool_manager_init_args .update (self ._init_args_for_pool_manager )
5254
53- return (
54- urllib3 .PoolManager (** pool_manager_init_args )
55- if self ._proxy_url is None
56- else urllib3 .ProxyManager (self ._proxy_url , ** pool_manager_init_args )
57- )
55+ if self ._proxy_url :
56+ if self ._proxy_url .lower ().startswith ('sock' ):
57+ from urllib3 .contrib .socks import SOCKSProxyManager
58+
59+ return SOCKSProxyManager (self ._proxy_url , ** pool_manager_init_args )
60+ if self ._identify_http_proxy_auth ():
61+ self ._proxy_url , self ._basic_proxy_auth = self ._separate_http_proxy_auth ()
62+ pool_manager_init_args ['proxy_headers' ] = urllib3 .make_headers (proxy_basic_auth = self ._basic_proxy_auth )
63+ return urllib3 .ProxyManager (self ._proxy_url , ** pool_manager_init_args )
64+
65+ return urllib3 .PoolManager (** pool_manager_init_args )
5866
5967 @classmethod
6068 def get_remote_connection_headers (cls , parsed_url : 'ParseResult' , keep_alive : bool = True ) -> Dict [str , Any ]:
0 commit comments