Как я могу использовать 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 стандартная библиотека.

Другие вопросы по тегам