5

Perl を使用して HTTPS 認証で html ドキュメントをリクエストしようとしています。過去に HTTPS 以外のコードで問題が発生したことはありません。私は現在 LWP::UserAgent を使用しています:

#! /usr/bin/perl
use LWP;
use HTTP::Request::Common;

my $browser = LWP::UserAgent->new;
my $baseurl = "https://xyz.url.com/directory";

my $ua = LWP::UserAgent->new(keep_alive=>1);
$ua->cookie_jar({});
$ua->credentials('xyz.url.com:80', '', 'login', 'password');

my $response = $ua->get($baseurl);
print  $response->content();

印刷される応答は、基本的に「401 Unauthorized」ページです。ブラウザ経由でログインできました。ブラウザは、「認証が必要です -- サーバー xyz.url.com:80 にはユーザー名とパスワードが必要です」というポップアップが表示されます。Crypt::SSLeayサーバーは次のように述べていますLWP::Protocol::https。これらがインストールされています。私は困惑しています。

また、Charles というプログラムをダウンロードして、要求/応答に注意すべき点があるかどうかを確認しましたが、どこを見ればよいかわかりません。レルムに「Blah Blah」を追加しようとしましたが、うまくいきませんでした。チャールズを使用してレルムを識別できますか?

4

2 に答える 2

0

おそらく、適切なエージェントを設定していないことが原因です。これを試して:

#! /usr/bin/perl
use LWP;
use HTTP::Request::Common;

my $baseurl = "https://xyz.url.com/directory";

my $ua = LWP::UserAgent->new(keep_alive=>1);
$ua->agent('Mozilla/5.0');
$ua->cookie_jar({});
$ua->credentials('xyz.url.com', '', 'login', 'password');

my $response = $ua->get($baseurl);
print  $response->content();

$browserまた、何にも使用していないように見えるため、コード内の変数を削除しました。

于 2014-01-03T00:47:15.360 に答える