Las solicitudes de Python no funcionan para el proxy https

Intento usar el proxy https en python como este:

proxiesDict ={ 'http': 'http://' + proxy_line, 'https': 'https://' + proxy_line } response = requests.get('https://api.ipify.org/?format=json', proxies=proxiesDict, allow_redirects=False) 

proxy_line es un proxy que se lee desde un archivo en el formato de ip: port. He comprobado este proxy https en el navegador y funciona. Pero en Python este código se cuelga por unos segundos y luego obtengo una excepción:

 HTTPSConnectionPool(host='api.ipify.org', port=443): Max retries exceeded with url: /?format=json (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [WinError 10060] 

Intenté usar el proxy socks5, y funciona en proxies socks5 con un PySocks instalado. Pero para https tengo esta excepción, ¿puede alguien ayudarme?

Al especificar una lista de proxy para las requests , la clave es el protocolo y el valor es el dominio / ip. No es necesario que especifique http:// o https:// nuevamente, para el valor real.

Entonces, tus proxiesDict serán:

 proxiesDict = { 'http': proxy_line, 'https': proxy_line } 

También puede configurar proxies configurando las variables de entorno:

 $ export HTTP_PROXY="http://proxyIP:PORT" $ export HTTPS_PROXY="http://proxyIP:PORT" 

Entonces, solo necesita ejecutar su script de Python sin solicitud de proxy.

Además, puede configurar su proxy con http: // usuario: contraseña @ host

Para obtener más información, consulte esta documentación: http://docs.python-requests.org/en/master/user/advanced/

Trate de usar pycurl esta función puede ayudar:

 import pycurl def pycurl_downloader(url, proxy_url, proxy_usr): """ Download files with pycurl the proxy configuration: proxy_url = 'http://10.0.0.0:3128' proxy_usr = 'user:password' """ c = pycurl.Curl() c.setopt(pycurl.FOLLOWLOCATION, 1) c.setopt(pycurl.MAXREDIRS, 5) c.setopt(pycurl.CONNECTTIMEOUT, 30) c.setopt(pycurl.AUTOREFERER, 1) if proxy: c.setopt(pycurl.PROXY, proxy_url) if proxy_usr: c.setopt(pycurl.PROXYUSERPWD, proxy_usr) content = StringIO() c.setopt(pycurl.URL, url) c.setopt(c.WRITEFUNCTION, conten.write) try: c.perform() c.close() except pycurl.error, error: errno, errstr = error print 'An error occurred: ', errstr return content.getvalue()