【问题标题】:Perl HTTP request skips proxy server and connects to target directlyPerl HTTP 请求跳过代理服务器并直接连接到目标
【发布时间】: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


    【解决方案1】:
    $ua->proxy('http', 'http://localhost:3128/');
    my $req = HTTP::Request->new('GET', 'https://stackoverflow.com');
    

    鉴于您访问的是https:// URL,您需要为协议https 设置代理,而不是像您那样设置http

    $ENV{'HTTP_PROXY'} = 'http://localhost:3128/';
    

    仅当您通过环境显式启用代理设置时才使用此设置,即$ua->env_proxy。此外,这里的设置也应该是HTTPS_PROXY 而不是HTTP_PROXY

    【讨论】:

    • 那么,要明确一点,您是说代理本身需要为 SSL 配置,还是只是需要在代理声明中更改协议?如果我只是将代理声明更改为 $ua->proxy('https', 'http://localhost:3128/'); 我会得到 500 并在日志中看到 1560959645.942 0 ::1 TCP_DENIED/407 4127 CONNECT stackoverflow.com:443 - HIER_NONE/- text/html。我写的早期版本是打印出500 establishing SSL tunnel failed: 407 Proxy Authentication Required,但我不记得我是怎么打印出来的。
    • @DougieO:您引用的行显示来自代理的 407 响应,即代理所需的身份验证。要为代理指定凭据,请使用 http://user:pass@localhost:3128/ 语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2016-12-31
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2023-03-29
    • 2014-06-27
    相关资源
    最近更新 更多