Как я могу использовать SOCKS 4/5 прокси с urllib2? - PullRequest
48 голосов
/ 23 февраля 2010

Как я могу использовать прокси SOCKS 4/5 с urllib2 для загрузки веб-страницы?

Ответы [ 3 ]

66 голосов
/ 26 февраля 2010

Вы можете использовать SocksiPy модуль. Просто скопируйте файл «socks.py» в каталог lib / site-packages вашего Python, и все готово.

Вы должны использовать носки до urllib2. (Попробуйте pip install PySocks)

Например:

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

Вы также можете попробовать pycurl lib и tsocks, для более подробной информации, нажмите здесь .

21 голосов
/ 12 ноября 2011

Добавление альтернативы ответу панорамы, когда вам нужно использовать много разных прокси одновременно.

В этом случае вам нужно создать открывашку, как вы делаете с http прокси. Есть код, доступный в 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()
4 голосов
/ 23 февраля 2010

Поскольку SOCKS является прокси уровня сокета, вам необходимо заменить объект сокета, используемый urllib2. Пожалуйста, посмотрите это решение. Если исправление обезьяны недостаточно для вас, вы можете попытаться создать подкласс или скопировать-изменить код из стандартной библиотеки urllib2.

...