【发布时间】:2019-06-18 21:53:10
【问题描述】:
我正在尝试编写一个 perl 脚本来通过 Squid 代理服务器从网址中提取数据。我在 CentOS7 上运行 Squid 服务器,侦听端口 3128 并使用/usr/lib64/squid/basic_ncsa_auth 进行身份验证。但是,我不断收到 perl 似乎完全绕过代理并直接连接到目标。
我可以通过 curl 做到这一点,但不能使用 perl。
我已经用几种方法重写了我的 perl 脚本。我已经更新了 perl 版本(目前是 5.28)。
use LWP::UserAgent;
$ENV{'HTTP_PROXY'} = 'http://localhost:3128/';
$ENV{'HTTP_PROXY_USERNAME'} = 'user1';
$ENV{'HTTP_PROXY_PASSWORD'} = 'password1';
$ua = LWP::UserAgent->new();
$ua->proxy('http', 'http://localhost:3128/');
my $req = HTTP::Request->new('GET', 'https://stackoverflow.com');
$req->proxy_authorization_basic("user1", "password1");
my $res = $ua->request($req);
print $res->code ."\n";
所以,上面的代码产生了一个“200”,但是,我在我的 squid 访问日志中没有看到任何条目。当我尝试在 curl 中进行操作时
curl --proxy-user user1:password1 -x http://localhost:3128 https://stackoverflow.com)
我明白了
1560893906.291 513 ::1 TCP_TUNNEL/200 270148 CONNECT stackoverflow.com:443 user1 HIER_DIRECT/151.101.65.69 -
在访问日志中。
显然,我遗漏了一些步骤,但我从 perl 文档中复制了示例,但无法使其正常工作。
【问题讨论】:
标签: perl http http-proxy