[Moscow.pm] Парcер на mojo с несколькими IP

Ilya Chesnokov chesnokov.ilya на gmail.com
Вт Янв 27 02:37:04 PST 2015


27 января 2015 г., 13:27 пользователь Денис Ильиных
<greyhard на gmail.com> написал:
> Здравствуйте.
> Есть сервер с кучей айпи, Пытаюсь на mojo написать парсер что бы на каждый
> запрос использовался разный айпи.
>
> my $max_conn = 4;
> Mojo::IOLoop->recurring(
>     0 => sub {
>         for ($active + 1 .. $max_conn) {
>             return ($active or Mojo::IOLoop->stop)
>                 unless my $ip = shift @ips;
>             ++$active;
>             $ua->local_address($ip);
>             $ua->get('http://myip.ru/?ip='.$ip => \&get_ip);
>         }
>     }
> );
>
>
> Вывод
>
> http://myip.ru/?ip=193.124.18.205 > remote_ip: 193.124.18.205
>
> http://myip.ru/?ip=193.124.44.44 > remote_ip: 193.124.44.44
>
> http://myip.ru/?ip=151.248.125.194 > remote_ip: 151.248.125.194
>
> http://myip.ru/?ip=193.124.16.139 > remote_ip: 193.124.16.139
>
> ----- а вот отсюда начинаются несовпадения между тем что я хочу и тем что
> получаю
>
> http://myip.ru/?ip=194.58.61.231 > remote_ip: 193.124.18.205
>
> http://myip.ru/?ip=193.124.44.45 > remote_ip: 193.124.16.139
>
> http://myip.ru/?ip=193.124.18.206 > remote_ip: 151.248.125.194
>
> http://myip.ru/?ip=194.58.61.232 > remote_ip: 193.124.18.205
>
> http://myip.ru/?ip=193.124.16.184 > remote_ip: 193.124.16.139
>
> В итоге идет разброд и шатание между айпи через который я хочу сделать
> запрос и айпи через который этот запрос реально проходит.

Похоже, что переопределение local_address() не работает для уже
соединившегося с хостом Mojo::UserAgent.
Попробуйте создать отдельного агента на каждый IP и выбирать
определенного агента для каждого запроса.

> Не могли бы подсказать как это правильно реализовать ?
>
> --
> С уважением.
> Ильиных Денис
> Программист
> Компания "GT-Shop.ru"
> Телефон: +7(963) 995-7616
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards,
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm