昨日今日とやっていた「AWSをはじめよう」ではWordPressのサイトを立てて、そこの管理者ページにApacheでBasic認証をかけます。
で、読み終えた後にBasic認証越しの情報ってPerlは取れるんかなー?と思って、ググったら既にやってた方がいて、コードまで載ってた。ありがたい。
PerlでBasic認証で保護されたページ内容を取得する | work.log https://t.co/rMVcg34SnX
— sironekotoro (@sironekotoro) 2019年9月16日
サンプルのコードのURLと認証情報書き換えただけでいけた。
HTTP::Tinyでやってみる
同じことを標準モジュールのHTTP::Tiny
でもできるんかなー?と思ってやってみたらできたのであげる。
ちょっとだけ詰まったのは、base64でエンコードするときに、第2引数に空文字を入れないと改行が入っちゃうということ。
HTTP::Tiny
もMIME::Base64
もコアモジュールなので大体は大丈夫なはず。
文字列連結にsprintf
とか使っちゃってるのは明らかにお仕事の影響ですね・・・
追記
URLの部分を$ua->get(http://username:password@anatofuz\.net) みたいにしてもBasicできますよ!(謎情報)
— 八雲アナグラ (@AnaTofuZ) 2019年9月16日
・・・!?できた。
#! /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};