首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从perl进行身份验证的https访问

如何从perl进行身份验证的https访问
EN

Stack Overflow用户
提问于 2015-08-20 07:38:31
回答 2查看 67关注 0票数 0

访问需要用户名/密码的https地址并检查HTTP响应(如果是3xx/4xx/5xx)的最简单/最好的方法是什么?

不需要安装额外的模块就能做到这一点吗?

这背后的想法就是对内部服务器进行健康检查(自动)。该页面需要我拥有的用户名/密码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-20 12:31:21

如果您想要打开它,只需使用LWP::UserAgent并创建您自己的HTTP::请求对象,该对象具有一个方法。在文档中很难找到。它来自HTTP::Message说它委托了一些方法HTTP::Header

HTTP::Message本身所不知道的所有方法都委托给作为每条消息的一部分的HTTP::Header对象。这允许方便地访问这些方法。有关这些方法的详细信息,请参阅HTTP::Header

为了达成协议,你可以使用请求::公共

代码语言:javascript
复制
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;

输出:

代码语言:javascript
复制
200

如果您对内容不感兴趣,也许只需要一个头部请求就足够了。这将节省一些时间,因为没有人通过网络发送。

代码语言:javascript
复制
my $req = HEAD 'https://www.example.org';
票数 2
EN

Stack Overflow用户

发布于 2015-08-20 08:13:52

尝试使用WWW:机械化

代码语言:javascript
复制
#!/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";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32112252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档