Как использовать двухуровневую настройку прокси в Python? - PullRequest
5 голосов
/ 19 апреля 2011

Я работаю над веб-сканером [с использованием python].

Ситуация, например, я нахожусь за сервером-1, и я использую настройки прокси для подключения к внешнему миру.Таким образом, в Python, используя прокси-обработчик, я могу получить URL-адреса.Теперь я создаю сканер, поэтому не могу использовать только один IP-адрес [в противном случае я буду заблокирован].Чтобы решить эту проблему, у меня есть куча прокси, я хочу перетасовать.

Мой вопрос: это двухуровневый прокси-сервер, один для подключения к главному серверу-1, я использую прокси, а затем, чтобы перебирать прокси, я хочу использовать прокси.Как мне этого добиться?

Ответы [ 2 ]

6 голосов
/ 20 апреля 2011

Обновление Звучит так, будто вы хотите подключиться к прокси-серверу A и оттуда инициировать HTTP-соединения через прокси-серверы B, C, D, находящиеся за пределами A. Вы можете заглянуть в проект proxychains, в котором говорится, что он может "туннелировать любой протокол через определенную пользователем цепочку TOR, SOCKS 4/5 и HTTP прокси".

Версия 3.1 доступна в виде пакета в Ubuntu Lucid.Если он не работает напрямую для вас, исходный код прокси-цепочки может дать некоторое представление о том, как эта возможность может быть реализована для вашего приложения.

Orig answer :Проверьте urllib2.ProxyHandler .Вот пример того, как вы можете использовать несколько разных прокси для открытия URL:

import random
import urllib2

# put the urls for all of your proxies in a list
proxies = ['http://localhost:8080/']

# construct your list of url openers which each use a different proxy
openers = []
for proxy in proxies:
    opener = urllib2.build_opener(urllib2.ProxyHandler({'http': proxy}))
    openers.append(opener)

# select a url opener randomly, round-robin, or with some other scheme
opener = random.choice(openers)
req = urllib2.Request(url)
res = opener.open(req)
1 голос
/ 04 декабря 2011

Я рекомендую вам взглянуть на CherryProxy.Он позволяет отправить запрос прокси на промежуточный сервер (где работает CherryProxy), а затем перенаправить ваш HTTP-запрос на прокси на компьютере второго уровня (например, прокси-сервер squid на другом сервере) для обработки.Виола!Двухуровневая цепочка прокси.

http://www.decalage.info/python/cherryproxy

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