web-dev-qa-db-fra.com

Comment puis-je utiliser un proxy SOCKS 4/5 avec urllib2?

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

48
Mike

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 .

66
panweizeng

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()
21
sw.

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

4
fviktor