访问需要用户名/密码的https地址并检查HTTP响应(如果是3xx/4xx/5xx)的最简单/最好的方法是什么?
不需要安装额外的模块就能做到这一点吗?
这背后的想法就是对内部服务器进行健康检查(自动)。该页面需要我拥有的用户名/密码。
发布于 2015-08-20 12:31:21
如果您想要打开它,只需使用LWP::UserAgent并创建您自己的HTTP::请求对象,该对象具有一个方法。在文档中很难找到。它来自HTTP::Message,说它委托了一些方法到HTTP::Header。
HTTP::Message本身所不知道的所有方法都委托给作为每条消息的一部分的HTTP::Header对象。这允许方便地访问这些方法。有关这些方法的详细信息,请参阅HTTP::Header
为了达成协议,你可以使用请求::公共。
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;
my $req = GET 'https://www.example.org';
$req->authorization_basic('user', 'password');
my $ua = LWP::UserAgent->new;
my $res = $ua->request($req);
print $res->code;输出:
200如果您对内容不感兴趣,也许只需要一个头部请求就足够了。这将节省一些时间,因为没有人通过网络发送。
my $req = HEAD 'https://www.example.org';发布于 2015-08-20 08:13:52
尝试使用WWW:机械化
#!/usr/bin/env perl
use strict;
use warnings;
use IO::Socket::SSL;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(
# Need ssl_opts if trying to get past an invalid certificate...
ssl_opts => {
SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
verify_hostname => 0,
},
# Do not die if the page fetch fails
autocheck => 0,
);
# user, password
$mech->credentials( 'robot_user', 'r0B07_U$3r_p4$$\/\/0rD' );
$mech->get("https://foo.bar.baz.com/secret_url.html");
if ($mech->success) {
print "==> SUCCESS\n";
print $mech->content();
} else {
print "==> FAILURE\n";
print "HTTP STATUS [ " . $mech->status . " ]\n";
}https://stackoverflow.com/questions/32112252
复制相似问题