- - PR -
perlからSSLでのform認証ページのコンテンツを取得したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-26 18:38
keiと申します。
以下のようなページに対して、ブラウザからID、PWを入力して得られるWEBページを、 perlスクリプトからリクエストを出して、ページデータを取得したいと思っているの ですが、やり方が分からず困っています。 (ID,PW認証用cgiとの通信はSSLになります。) LWPとかを使えば出来そうなことがNETには書かれていたりするのですが、 イマイチ方法が分かっていません。 どなたか、教えてもらえないでしょうか。 <html> <head> <title>検証用ページ</title> <meta http-equiv="Content-Type" content="text/html";charset=EUC-JP"> </head> <center> <b><font size="4">ログイン認証(form認証)</font></b> <p> <table border="1" cellpadding="2" bgcolor="#dddddd"> <tr><td> <form method="POST" action="https://hogehoge.jp/~test/cgi-bin/login.cgi" target="main"> <input type="hidden" name="type" value="login"> ID:<input type="text" size="20" maxlength="20" name="ID" value=""><br> PW:<input type="password" size="20" maxlength="20" name="PW" value=""> <input type="submit" value="ログイン"> </td></form><td>form認証でのログインを行い、正しいID、PWであれば、認証成功ページを返します。 </td></tr> </body> </html> |
|
投稿日時: 2006-07-26 18:58
何がわからないんでしょうか?
|
|
投稿日時: 2006-07-26 19:18
言葉足らずですいませんでした。
分からないのは、 「認証フォームに相当するHTTPリクエストの作り方」 になります。 |
|
投稿日時: 2006-07-27 10:11
「17.13 Form submission」を読んでください。とくに「17.13.4 Form content types」のあたり。
|
|
投稿日時: 2006-07-27 10:51
スフレ様
回答ありがとうございました。 LWPを使って、SSL通信でform認証を行わせて、ページのコンテンツを取得する ことができました。 もう一つやりたいことがありまして、ヘッダーを追加したいのですが、 どのようにしたらいいんでしょう? 以下のようなヘッダーを送信データに追加したいです。 ヘッダー名:HOGE 値:HOGEHOGE コード use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common qw(POST); # リクエストの生成 my $url = 'https://hoge.jp/~test/cgi-bin/login.cgi'; my %formdata = ('type' => 'login','ID' => 'ID', 'PW' => 'PW'); my $request = POST($url,[%formdata]); # UserAgentを生成して処理 my $ua = LWP::UserAgent->new; my $res = $ua->request($request); print $res->as_string; |
|
投稿日時: 2006-07-27 13:25
マニュアルを読みましょう。ちゃんとインストールされていれば、「perldoc HTTP::Request」で読めます。
|
|
投稿日時: 2006-07-27 13:50
スフレ様
回答ありがとうございます。 perldoc HTTP::Request を読んで、解決することができました。 $request->init_header('HOGE' => 'HOGEHOGE'); この1行をmy $request = POST($url,[%formdata]); の後に追加することにより、うまくヘッダーを追加することが できました。 ありがとうございました。 コード use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common qw(POST); # リクエストの生成 my $url = 'https://hoge.jp/~test/cgi-bin/login.cgi'; my %formdata = ('type' => 'login','ID' => 'ID', 'PW' => 'PW'); my $request = POST($url,[%formdata]); $request->init_header('HOGE' => 'HOGEHOGE'); # UserAgentを生成して処理 my $ua = LWP::UserAgent->new; my $res = $ua->request($request); print $res->as_string; |
1