Perl脚本只能下载某些URL(https:// ...)

时间:2011-11-22 17:35:05

标签: perl lwp

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

如何为网站提供此身份验证?如果经过UN身份验证的用户访问URL(或网站),则他/她将被重定向到身份验证页面,您必须在其中输入用户ID和密码并按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;

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

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

  1. 在浏览器中发布您的网址:https://myurl/files/file.doc
  2. 您获得了登录页面(网址仍然相同)
  3. 输入字段名称:用户名/密码
  4. 按'确定'按钮(字段名称btnSubmit)

    成功登录后

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

      

    选择(单选按钮)'保存文件'   按ok

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)