[英]How do I access a SQL Server database from a Perl script in Linux?
[英]How to do authenticated https access from perl
訪問需要用戶名/密碼的https地址並檢查HTTP響應(如果是3xx / 4xx / 5xx)的最簡單/最佳方法是什么?
是否可以在不安裝額外模塊的情況下做到這一點?
其背后的想法只是對內部服務器進行健康檢查(自動)。 該頁面需要我擁有的用戶名/密碼
嘗試使用WWW :: Mechanize
#!/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";
}
如果您想開箱即用,則可以使用LWP :: UserAgent並創建自己的HTTP :: Request對象,該對象具有authorization_basic
方法 。 在文檔中很難找到。 它來自HTTP :: Message ,它說它將一些方法委托給HTTP :: Headers 。
HTTP :: Message本身未知的所有方法都委托給每個消息的一部分的HTTP :: Headers對象。 這樣可以方便地訪問這些方法。 有關這些方法的詳細信息,請參見HTTP :: Headers。
為了方便起見,您可以使用HTTP:Request :: Common 。
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
如果您對內容不感興趣,那么HEAD請求就足夠了。 由於沒有主體通過網絡發送,因此可以節省一些時間。
my $req = HEAD 'https://www.example.org';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.