Perl - WWW::Mechanize 无法使用代理

Perl - WWW::Mechanize not working with proxy

机器:Windows7 Professional 64 位。便携式 Perl(草莓 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>
$objMech->proxy(['https', 'http', 'ftp'], 'http://url:portno/proxy.pac');

您必须提供代理本身的 URL(即 http://ip:port),而不是代理配置脚本所在的 URL(即 PAC 文件)。这些 PAC 文件是 Javascript 代码,returns 基于目标 URL 的适当代理 URL。 LWP/WWW::Mechanize 不支持Javascript,无法自行处理此类代理配置文件