python - ¿Cómo puedo usar un proxy SOCKS 4/5 con urllib2?
(3)
¿Cómo puedo usar un proxy SOCKS 4/5 con urllib2 para descargar una página web?
Agregar una alternativa a la respuesta de pan cuando necesite usar muchos proxies diferentes al mismo tiempo.
En ese caso, debe crear un abridor como lo hace con un proxy HTTP. Hay un código disponible en GitHub https://gist.github.com/869791
opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, ''localhost'', 9999))
print opener.open(''http://www.whatismyip.com/automation/n09230945.asp'').read()
Como SOCKS es un proxy de nivel de socket, debe reemplazar el objeto de socket utilizado por urllib2
. Por favor, eche un vistazo a this solución. Si el parche de mono no es lo suficientemente bueno para usted, puede intentar urllib2
una subclase o copiar o modificar el código de la biblioteca estándar urllib2
.
Puede usar el módulo SocksiPy . Simplemente copie el archivo "socks.py" en el directorio lib / site-packages de su Python y estará listo para comenzar.
Debes usar calcetines antes de urllib2. (Pruébalo pip install PySocks
)
Por ejemplo:
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen(''http://www.google.com'').read()
También puede probar pycurl lib y tsocks, para más detalles, haga clic here .