def get_handlers(self): handlers = [] if self._verify_cert == False: ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE handler = request.HTTPSHandler(context=ctx) handlers.append(handler) from urllib.request import HTTPRedirectHandler redirect_handler = HTTPRedirectHandler() redirect_handler.max_redirections = 30 redirect_handler.max_repeats = 30 handlers.append(redirect_handler) if self._username and self._password: passman = request.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, self._parsed_org_url, self._username, self._password) handlers.append(request.HTTPBasicAuthHandler(passman)) passman = request.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, self._parsed_org_url, self._username, self._password) handlers.append(request.HTTPDigestAuthHandler(passman)) if os.name == 'nt': try: from arcgis._impl.common._iwa import NtlmSspiAuthHandler, KerberosSspiAuthHandler auth_krb = KerberosSspiAuthHandler() handlers.append(auth_krb) try: auth_NTLM = NtlmSspiAuthHandler() handlers.append(auth_NTLM) except: pass except Error as err: _log.error( "winkerberos packages is required for IWA authentication (NTLM and Kerberos)." ) _log.error( "Please install it:\n\tconda install winkerberos") _log.error(str(err)) else: _log.error( 'The GIS uses Integrated Windows Authentication which is currently only supported on the Windows platform' ) if self._auth == "PKI" or \ (self.cert_file is not None and self.key_file is not None): handlers.append( HTTPSClientAuthHandler(self.key_file, self.cert_file)) elif self._portal_connection and \ self._portal_connection.cert_file is not None and \ self._portal_connection.key_file is not None: handlers.append( HTTPSClientAuthHandler(self._portal_connection.key_file, self._portal_connection.cert_file)) cj = cookiejar.CookieJar() if self.proxy_host: # Simple Proxy Support from urllib.request import ProxyHandler if self.proxy_port is None: self.proxy_port = 80 proxies = { "http": "http://%s:%s" % (self.proxy_host, self.proxy_port), "https": "https://%s:%s" % (self.proxy_host, self.proxy_port) } proxy_support = ProxyHandler(proxies) handlers.append(proxy_support) handlers.append(request.HTTPCookieProcessor(cj)) return handlers