sironekotoroの日記

Perl で楽をしたい

HTTP::TinyでBasic認証を超える

昨日今日とやっていた「AWSをはじめよう」ではWordPressのサイトを立てて、そこの管理者ページにApacheBasic認証をかけます。

で、読み終えた後にBasic認証越しの情報ってPerlは取れるんかなー?と思って、ググったら既にやってた方がいて、コードまで載ってた。ありがたい。

サンプルのコードのURLと認証情報書き換えただけでいけた。

HTTP::Tinyでやってみる

同じことを標準モジュールのHTTP::Tinyでもできるんかなー?と思ってやってみたらできたのであげる。

ちょっとだけ詰まったのは、base64エンコードするときに、第2引数に空文字を入れないと改行が入っちゃうということ。

HTTP::TinyMIME::Base64もコアモジュールなので大体は大丈夫なはず。

文字列連結にsprintfとか使っちゃってるのは明らかにお仕事の影響ですね・・・

追記

・・・!?できた。

これだとbase64エンコード云々もいらないじゃーん

#! /usr/bin/env perl
use strict;
use warnings;
use HTTP::Tiny;

my $user = 'user';
my $pass = 'pass';
my $url
    = sprintf( 'https://%s:%s' . '@認証後のURL',
    $user, $pass );

my $res = HTTP::Tiny->new->get($url);

print $res->{content} if $res->{success};