Подтвердить что ты не робот

Как я могу использовать прокси SOCKS 4/5 с urllib2?

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

4b9b3361

Ответ 1

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

Вы должны использовать носки перед 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, для более подробной информации нажмите здесь.

Ответ 2

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

В этом случае вам нужно создать открыватель, как и с прокси-сервером 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()

Ответ 3

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