48 votes

Comment utiliser un proxy SOCKS 4/5 avec urllib2?

Comment utiliser un proxy SOCKS 4/5 avec urllib2 pour télécharger une page Web?

67voto

panweizeng Points 396

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 des chaussettes avant urllib2.

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 ici .

21voto

sw. Points 1927

Ajouter une alternative à la réponse de pan lorsque vous devez utiliser plusieurs mandataires différents en même temps.

Dans ce cas, vous devez créer un programme d'ouverture, comme vous le faites avec un proxy http. Un code est 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()
 

4voto

fviktor Points 1534

SOCKS étant un proxy de niveau de socket, vous devez remplacer l'objet socket utilisé par urllib2 . S'il vous plaît jeter un oeil à cette solution. Si les correctifs monkey ne vous suffisent pas, vous pouvez essayer de sous-classer ou de copier-modifier le code à partir de la bibliothèque standard urllib2 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X