Как я могу использовать прокси SOCKS 4/5 с urllib2 для загрузки веб-страницы?
Как я могу использовать прокси SOCKS 4/5 с urllib2?
Ответ 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
.