Comment puis-je utiliser un proxy SOCKS 4/5 avec urllib2 pour télécharger une page Web?
Vous pouvez utiliser le module SocksiPy . Copiez simplement le fichier "socks.py" dans le répertoire lib/site-packages de votre Python, et vous êtes prêt à partir.
Vous devez utiliser chaussettes avant urllib2. (Essayez-le pip install PySocks
)
Par exemple:
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()
Vous pouvez également essayer pycurl lib et tsocks, pour plus de détails, cliquez sur ici .
Ajout d'une alternative à la réponse de pan lorsque vous devez utiliser plusieurs procurations différentes en même temps.
Dans ce cas, vous devez créer un ouvreur comme vous le faites avec un proxy http. Il y a un code disponible dans 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()
Étant donné que SOCKS est un proxy de niveau socket, vous devez remplacer l'objet socket utilisé par urllib2
. Veuillez jeter un oeil à une solution this . Si le patch de singe ne vous convient pas, vous pouvez essayer de sous-classer ou de copier-modifier le code à partir de urllib2
bibliothèque standard.