![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
demoriz |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.11.2008 Где: г. Псков Репутация: нет Всего: нет |
На сервере (VPS debian) шесть IP адресов на шести интерфейсах venet0:0 venet0:1 venet0:2 и тд. Есть робот который выходит в интрернет для сбора информации с одного сайта. Для выхода использую urllib2.
Как можно заставить скрипт по очереди использовать все IP адреса? Как самому на программном уровне выбирать через какой интерфейс выходить в интернет? Это сообщение отредактировал(а) demoriz - 29.4.2009, 16:52 |
|||
|
||||
spSerg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 22.3.2007 Репутация: 4 Всего: 4 |
На сокетах делается просто:
Надеюсь подскажет, куда копать. |
|||
|
||||
spSerg |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 22.3.2007 Репутация: 4 Всего: 4 |
После небольших копаний нашел, как можно добраться к моменту подключения. Даю черновик, не более.
Нужно создать свой класс для обработки HTTP подключений таких как httplib.HTTPConnection
переопределяем еще один класс-обработчик, которым заменим стандартный в цепочке
#Создаем свой Opener со своим обработчиком, который заменит HTTPHandler:
Подменяем основной Opener из urllib2
Дальше пользуемся как обычно. и наслаждаемся. Надеюсь, это поможет. |
||||||||
|
|||||||||
demoriz |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.11.2008 Где: г. Псков Репутация: нет Всего: нет |
Всё великолепно за исключением пару моментов
![]() что за класс AbstractHTTPHandler и что обьявлять в конструкторе класса MyHTTPConnection |
|||
|
||||
spSerg |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 22.3.2007 Репутация: 4 Всего: 4 |
Как дети...
А как я нашел это все? ![]() Поиск по исходникам в стандартной библиотеке приводит к тому, что класс AbstractHTTPHandler находим внутри urllib2. Значит, исправляем AbstractHTTPHandler на urllib2.AbstractHTTPHandler. А если найти класс httplib.HTTPConnection, то обнаруживаем его конструктор:
Итого, в нашем классе будет такой конструктор:
Повторюсь еще раз - только в качестве черновика. (это не практический рабочий пример, а лишь его наброски) |
||||
|
|||||
demoriz |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.11.2008 Где: г. Псков Репутация: нет Всего: нет |
Сорри за глупость, только неделю как взялся python осваивать, и мне ещё сложно ориентироваться в модулях и библиотеках.
но проблема не решилась :(
для примера сделал так:
в итоге апач сайта зарегестрировал коннект с 77.221.155.141 хотя стоит self.sock.bind(('77.221.159.148', 80)) ![]() |
||||
|
|||||
spSerg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 22.3.2007 Репутация: 4 Всего: 4 |
Если ты можешь фиксировать коннекты апачем, то для начала стоит попробовать самый первый фрагмент с сокетами.
Он удобен тем, что его можно напрямую в интерпретаторе выполнять, и видеть, что получается. |
|||
|
||||
demoriz |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.11.2008 Где: г. Псков Репутация: нет Всего: нет |
ошибка
Добавлено через 10 минут и 31 секунду Виноват, это просто апачь порт занимал вышеописанный пример работает ![]() Добавлено через 12 минут и 53 секунды а возможно както сделать чтобы с апачем работало без конфликта? |
||||
|
|||||
spSerg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 22.3.2007 Репутация: 4 Всего: 4 |
Если обратил внимание и сравнил с рабочим последним семплом, то у меня в черновике ошибка.
Сначала нужно привязаться, а потом коннектиться. А не наоборот, как в черновике. ![]() |
|||
|
||||
demoriz |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.11.2008 Где: г. Псков Репутация: нет Всего: нет |
ага заметил это 15 и 17 строки
спасибо запомощь, жаль плюсануть немогу |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |