3

私のコース サイトにログインし、すべてのコンテンツ (講義の宿題など) をダウンロードするプログラムを作成しようとしている、やや経験の浅いプログラマーです。明らかにパスワードで保護されたサイトなので、それを与える必要があります. LWP::UserAgent などを十分に理解しており、資格情報を使用する必要があることも理解しています。私が理解できないのは、次のページに到達する方法です。ログインに進むことはできますが、perl はどのようにしてログインの結果を取得するのでしょうか?

コード例(明らかにログ情報を取り出しました):

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $url = 'login URL';
$ua -> credentials(
  $url,
  '',
  'user',
  'pass'
);
my $response = $ua ->get($url);
print $response->content; 

応答のコンテンツは、資格情報を渡さなかった場合と同じコンテンツです。明らかに、ここで何かが欠けています....

もう 1 つ、私の知る限り、私のコース サイトには固有の URL がありません。

4

3 に答える 3

5

ブラウザのように動作するように設計された LWP::UserAgent のサブクラスであるWWW::Mechanizeを使用して、Cookie ストレージがすでに処理されている Web サイトのページをナビゲートできるようにすることをお勧めします。

于 2011-05-20T15:43:23.780 に答える
2

credentialsサイトが HTTP 基本認証を使用している場合にのみ使用します。その場合、「ログイン」せず、すべてのリクエストで資格情報を渡すだけです。

サイトにフォーム ベースのログイン システムがある場合はcookie_jar、フォームのアクション URI を使用し、必要なデータを含むフォームを要求する必要があります。

于 2011-05-20T15:32:54.347 に答える
0
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Cookies;

my  $ua=LWP::UserAgent->new(timeout => 20);
    $ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.8) Gecko/20100202 MRA 5.5 (build 02842) Firefox/3.5.8');
    $ua->requests_redirectable(0);

my  $cook = HTTP::Cookies->new;
    $ua->cookie_jar($cook);

print = requester('http://urlexample/login.php', 'login=yourlogin&password=pass' )->as_string;

sub requester
{
    my $type = 'GET';
    if($_[1]){$type = 'POST'}   
    my $req = HTTP::Request->new($type => $_[0]);
    $req->content_type('application/x-www-form-urlencoded; charset=UTF-8');
    if($_[1]){$req->content($_[1])}
    my $res = $ua->request($req);
    return $res;
}
于 2015-01-09T11:43:59.593 に答える