Perl - WWW::Mechanize не работает с прокси

Машина: Windows 7 Профессиональная 64 бит. Portable Perl (Strawberry Perl (64-разрядная версия) 5.22.0.1).
Настройки прокси-сервера в Internet Explorer.
– Автоматическое определение настроек
– Использование сценария автоматической настройки
– Адрес: http://url:portno/proxy.pac

С приведенным ниже кодом я не могу получить правильный ответ.

use strict;
use warnings;
use WWW::Mechanize;
use LWP::UserAgent;
use LWP::Protocol::https;

print LWP::UserAgent->VERSION, "\n";
print LWP::Protocol::https->VERSION, "\n";

#$ENV{HTTPS_PROXY} = 'http://url:portno/proxy.pac';
#$objMech->get("http://www.url.html");

my $objMech = WWW::Mechanize->new(autocheck => 0 );
$objMech->proxy(['https', 'http', 'ftp'], 'http://url:portno/proxy.pac');
$objMech->get("http://www.url.com");
print $objMech->content();

my @links = $objMech->links();
for my $link (@links) {
    printf $link->text, $link->url;
}

Его вывод выглядит следующим образом:

6.13
6.06
<HTML>
<Head>
<TITLE>400 Bad Request
</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF"><h1>
400 Bad Request
</h1>
</BODY>
</HTML>

person msinfo    schedule 09.09.2015    source источник
comment
metacpan.org/pod/HTTP::ProxyAutoConfig   -  person Quentin    schedule 09.09.2015


Ответы (1)


$objMech->proxy(['https', 'http', 'ftp'], 'http://url:portno/proxy.pac');

Вы должны указать URL-адрес самого прокси-сервера (например, http://ip:port), а не URL-адрес, по которому находится сценарий настройки прокси-сервера (например, файл PAC). Эти файлы PAC представляют собой код Javascript, который возвращает соответствующий URL-адрес прокси-сервера на основе целевого URL-адреса. LWP/WWW::Mechanize не поддерживает Javascript и не может самостоятельно работать с такими файлами конфигурации прокси.

person Steffen Ullrich    schedule 09.09.2015