27 января 2015 г., 13:27 пользователь Денис Ильиных
<[email protected]> написал:
> Здравствуйте.
> Есть сервер с кучей айпи, Пытаюсь на 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
> [email protected] | http://moscow.pm.org
>



-- 
Best regards,
Ilya Chesnokov
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить