1

以下是有效的:但现在我正在尝试从需要身份验证的网站下载一个文件(并且可能保存一个 cookie,该 cookie 在 24 小时内到期)以访问内容。

如何向网站提供此身份验证?如果未经联合国身份验证的用户访问 URL(或网站),他/她将被重定向到身份验证页面,您必须在其中输入用户名和密码并按 Enter(登录按钮)。身份验证控制后自动返回您最初询问的 URL。

这是我到目前为止所拥有的,适用于不需要身份验证的网站:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use LWP;
    use Data::Dumper;

    my $ua = LWP::UserAgent->new;
    my $agent = "my-lwp agent";
    $ua->agent($agent);
    $ENV{HTTPS_PROXY} = 'http://myproxy:8080';

    my $req = HTTP::Request->new(GET => 'https://mail.yahoo.com');
    $req->content_type('text/html');
    $req->protocol('HTTP/1.0');

    my $response = $ua->request($req);
     if ($response->is_success) {
         print "1 success\n";
     }
     else {
        print "1 error\n";
     }
    print Dumper $response;

现在我需要从 URL 下载此文件:https ://myurl.com/file.doc 需要身份验证:用户名/密码。

添加问题定义:以下是在我的情况下如何使用普通浏览器:...

  1. 在浏览器中发布您的网址:https://myurl/files/file.doc
  2. 你会得到一个登录页面(URL 看起来还是一样)
  3. 输入字段名称:用户名/密码
  4. 按“确定”按钮(字段名称 btnSubmit)

    登录成功后:

  5. 你得到新页面: https://newurl/pagSuccess/
  6. 您必须在此页面上单击“确定”(返回您想去的地方......)
  7. 然后你会得到一个浏览器对话框:你必须:

    选择(单选按钮)“保存文件”按确定

  8. 你完成了!文件保存在本地。

4

2 回答 2

5

我建议使用诸如Mechanize之类的东西来解决这个问题。它将为您处理会话 cookie,并提供有用的工具来识别和填写登录表格。

于 2011-11-22T17:40:07.927 回答
1

看看credentials你的LWP::UserAgent对象的方法。

于 2011-11-22T17:51:42.540 回答