読者です 読者をやめる 読者になる 読者になる

perlでNTLM

Win32 Perl

perlで、LWPを使ってウェブのサイトをさっくりダウンロードなスクリプトを書こうとしていて、サーバーがNTLMで保護されていることに気づく・・・。
で、いろいろと調べたところ、Authen::NTLMというモジュールを発見。ActivePerlだと、Perl Package Manager(スタートメニューのプログラム一覧のActivePerl下にショートカットあり)で、NTLMというモジュールを検索してインストールする。なんちゃらNTMLっていうパッケージ群は古いのでちゃんと動かない様子。

そして、

use LWP::UserAgent;

# keep-aliveにしないといけません
my $ua = new LWP::UserAgent(keep_alive=>1);
# 最初のホスト名:ポートは、アクセスするURLと同じ物
# ドメイン名\\ユーザー名は、Windowsドメインにログオンする場合と同じ物。
$ua->credentials("ホスト名:ポート", "", "ドメイン名\\ユーザー名", "パスワード");
my $req = HTTP::Request->new(GET => "http://ホスト名/somewhere/...");
my $content = $ua->request($req)->content;

というコードで動作するということらしい・・・。
手元では動かず・・・。認証がちゃんと出来てない。原因が分からない。こういうときは、

use LWP::Debug qw(+);

という行を追加すべしと書いてあるので、追加してみる。
ログが表示されるが、やっぱり原因が分からず・・・。