Как я могу использовать SOCKS 4/5 прокси с urllib2?
Как я могу использовать прокси SOCKS 4/5 с urllib2 для загрузки веб-страницы?
3 ответа
Вы можете использовать модуль 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, для более подробной информации нажмите здесь.
Добавление альтернативы ответу панорамы, когда вам нужно использовать много разных прокси одновременно.
В этом случае вам нужно создать открывашку, как вы делаете с 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()
Так как SOCKS является прокси уровня сокета, вы должны заменить объект сокета, используемый urllib2
, Пожалуйста, посмотрите это решение. Если исправление обезьяны недостаточно хорошо для вас, вы можете попытаться создать подкласс или скопировать-модифицировать код из urllib2
стандартная библиотека.