libreria - urllib.urlencode python 3
Proxy con urllib2 (7)
Abro las URL con:
site = urllib2.urlopen(''http://google.com'')
Y lo que quiero hacer es conectar de la misma manera con un proxy que obtuve en algún lado diciéndome:
site = urllib2.urlopen(''http://google.com'', proxies={''http'':''127.0.0.1''})
pero eso tampoco funcionó.
Sé que urllib2 tiene algo así como un controlador de proxy, pero no recuerdo esa función.
Además de la respuesta aceptada: mi scipt me dio un error
File "c:/Python23/lib/urllib2.py", line 580, in proxy_open
if ''@'' in host:
TypeError: iterable argument required
La solución era agregar http: // al frente de la cadena proxy:
proxy = urllib2.ProxyHandler({''http'': ''http://proxy.xy.z:8080''})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen(''http://www.google.com'')
Además, establezca el proxy para la sesión de línea de comando Abra una línea de comando donde desee ejecutar su script
netsh winhttp set proxy YourProxySERVER:yourProxyPORT
ejecuta tu script en esa terminal.
Para usar los proxys del sistema por defecto (por ejemplo, desde la variable de entorno http_support), lo siguiente funciona para la solicitud actual (sin instalarlo en urllib2 globalmente):
url = ''http://www.example.com/''
proxy = urllib2.ProxyHandler()
opener = urllib2.build_opener(proxy)
in_ = opener.open(url)
in_.read()
Puede establecer proxies utilizando variables de entorno.
import os
os.environ[''http_proxy''] = ''127.0.0.1''
os.environ[''https_proxy''] = ''127.0.0.1''
urllib2
agregará controladores de proxy automáticamente de esta manera. Es necesario establecer proxies para diferentes protocolos por separado, de lo contrario, fallarán (en términos de no pasar por el proxy), ver a continuación.
Por ejemplo:
proxy = urllib2.ProxyHandler({''http'': ''127.0.0.1''})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen(''http://www.google.com'')
# next line will fail (will not go through the proxy) (https)
urllib2.urlopen(''https://www.google.com'')
En lugar
proxy = urllib2.ProxyHandler({
''http'': ''127.0.0.1'',
''https'': ''127.0.0.1''
})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
# this way both http and https requests go through the proxy
urllib2.urlopen(''http://www.google.com'')
urllib2.urlopen(''https://www.google.com'')
También se pueden usar solicitudes si queremos acceder a una página web utilizando proxies. Código de Python 3:
>>> import requests
>>> url = ''http://www.google.com''
>>> proxy = ''169.50.87.252:80''
>>> requests.get(url, proxies={"http":proxy})
<Response [200]>
Se pueden agregar más de un proxies.
>>> proxy1 = ''169.50.87.252:80''
>>> proxy2 = ''89.34.97.132:8080''
>>> requests.get(url, proxies={"http":proxy1,"http":proxy2})
<Response [200]>
Tienes que instalar un ProxyHandler
urllib2.install_opener(
urllib2.build_opener(
urllib2.ProxyHandler({''http'': ''127.0.0.1''})
)
)
urllib2.urlopen(''http://www.google.com'')
proxy = urllib2.ProxyHandler({''http'': ''127.0.0.1''})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen(''http://www.google.com'')