requests libreria example python proxy urllib2

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'')