Мне нужно изменить прокси-сервер в одном прогоне Perl (process). Но LWP::UserAgent
всегда запоминает первое значение прокси.LWP :: Прокси-сервер UserAgent в Perl-сеансе
Когда я запускаю свою программу с прокси x.x.x.2
, этот адрес всегда используется как прокси-сервер.
Что не так?
Простая программа Пример:
getHTTP('http://my.com/', "http://x.x.x.1:3128");
getHTTP('http://my.com/', "http://x.x.x.2:3128");
getHTTP('http://my.com/', "");
getHTTP('http://my.com/', "http://x.x.x.3:3128");
sub getHTTP {
my ($url, $proxy) = @_;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->proxy(http => $proxy);
my $req = HTTP::Request->new(GET => $url);
return $ua->request($req)->as_string;
}
Выход из журнала HTTP:
x.x.x.1 - - [09/Feb/2015:15:28:06 +0100] "GET/HTTP/1.0" 200 3467
x.x.x.1 - - [09/Feb/2015:15:29:07 +0100] "GET/HTTP/1.0" 200 3467
y.y.y.y - - [09/Feb/2015:15:29:08 +0100] "GET/HTTP/1.0" 200 3467
x.x.x.1 - - [09/Feb/2015:15:29:09 +0100] "GET/HTTP/1.0" 200 3467
(гггг не мой не адрес прокси-сервера)
ОС: Debian GNU/Linux 7
Новые результаты: Когда я запускаю следующие сценарии perl или shell. Тот же результат, что и выше.
proxy.sh:
curl -x "http://x.x.x.1:3128" http://my.com/
curl -x "http://x.x.x.2:3128" http://my.com/
curl -x "http://x.x.x.3:3128" http://my.com/
Результат: всегда xxx1 прокси
proxy.pl:
`curl -x "http://x.x.x.4:3128" http://my.com/`;
`curl -x "http://x.x.x.5:3128" http://my.com/`;
`curl -x "http://x.x.x.6:3128" http://my.com/`;
Результат: всегда xxx4 прокси
Смотрится l поскольку настройки прокси-сервера не могут изменяться в одном режиме оболочки.
Это выглядит отлично. Отличается ли он от фактического кода, который вы используете? – Borodin
(Мой исходный код намного сложнее.) Но когда я запускаю этот простой пример, вывод тот же. Другими словами, эта простая программа вызывает описанное поведение. – perLHawk
Возможно ли это из-за конфигурации прокси-сервера? Связаны ли прокси-серверы с балансировкой нагрузки или могут ли они выбрать, какой интерфейс используется? –