2011-11-22 43 views
1

以下是正常工作:但現在我試圖從需要驗證的網站下載文件(並且可能會保存一個cookie,該cookie會在24小時後過期)訪問內容。Perl腳本只能下載某些URL(https:// ...)

如何向網站提供此身份驗證?如果聯合國認證的用戶訪問URL(或網站),他/他將被重定向到認證頁面,您必須放置用戶名和密碼,然後按回車鍵(登錄按鈕)。認證控制返回到您最初自動請求的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. 你得到一個登錄頁面(網址仍在尋找相同)
  3. 輸入字段名稱:用戶名/密碼
  4. 按下 '確定' 按鈕(字段名btnSubmit按鈕)

    全成登錄後:

  5. 你得到新的一頁:https://newurl/pagSuccess/
  6. 你必須點擊「OK」此頁面上(到回去的地方,你想去...)
  7. 然後你一個瀏覽器對話框:你必須:

    選擇(單選按鈕)「保存文件」 按OK

  8. 你做!文件保存在本地。

回答

5

我會建議使用一些諸如Mechanize來照顧這。它將爲您處理會話cookie,並提供有用的工具來識別和填寫登錄表單。