2010-12-19 200 views
2

我想使用WGET從某個網站的會員區下載一些圖片。此網站受密碼保護。我已成功登錄並保存cookie。但是,我仍然不能下載圖片,因爲302重定向。有誰能幫我看看嗎?非常感謝。WGET,Cookies和302重定向

wget --load-cookies=examplecookies http://members.example.com/membersarea/0004.jpg 
--2010-12-18 18:58:50-- http://members.example.com/membersarea/0004.jpg 
Resolving members.example.com... 12.34.56.78 
Connecting to members.example.com|12.34.56.78|:80... connected. 
HTTP request sent, awaiting response... 302 Found 
Location: /login.aspx?ReturnUrl=%2fmembersarea%2f0004.jpg [following] 
--2010-12-18 18:58:50-- http://members.example.com/login.aspx?ReturnUrl=%2fmembersarea%2f0004.jpg 
Reusing existing connection to members.example.com:80. 
HTTP request sent, awaiting response... 302 Found 
Location: /membersarea/default.aspx [following] 
--2010-12-18 18:58:50-- http://members.example.com/membersarea/default.aspx 
Reusing existing connection to members.example.com:80. 
HTTP request sent, awaiting response... 200 OK 
Length: 61898 (60K) [text/html] 
Saving to: `default.aspx' 

100%[===================================================================================>] 61,898  --.-K/s in 0.1s 

2010-12-18 18:58:51 (572 KB/s) - `default.aspx' saved [61898/61898] 

default.aspx是membersarea的頭版,這意味着我已經成功登錄。

我做了一些谷歌搜索,我添加--user-agent="Mozilla/4.0",但它仍然不會工作:

wget --user-agent="Mozilla/4.0" --load-cookies=examplecookies http://members.example.com/membersarea/0004.jpg 

的結果是一樣的。

非常感謝!

回答

3

我以前總是遇到wget和cookies(試圖讓wget使用我的Mozilla cookie等),所以我轉而使用Perl庫WWW::Mechanize。它爲您處理cookies以及您期望的所有瀏覽器常用功能,如302處理和歷史記錄。

一個簡單的例子,登錄到一個網站,抓住所有的JPG文件,點擊「下一個」鏈接分頁:(一個Firefox插件)用的FlashGot的幫助

use warnings; 
use strict; 
use WWW::Mechanize; 
use File::Slurp; 

my $mech = WWW::Mechanize->new; 
$mech->get('http://example.com/login') || die; 
$mech->submit_form(form_name => 'login_form', 
        fields => { username => 'me', 
           password => 'secret' }) || die; 

while (1) { 
    for my $link ($mech->links) { 
     my $url = $link->url; 
     if ($url =~ /(image_\d+\.jpg)\z/) { 
     my $file = $1; 
     $mech->get($url); 
     File::Slurp::write_file($file, $mech->content); 
     $mech->back; # like the browser back button         
     } 
    } 
    # look at next page, if any              
    my $result = $mech->follow_link(text_regex => qr/Next/); 
    if (!$result) { 
     last; 
    } 
} 
+1

您好我已經解決了我的問題操作方法如下:右鍵單擊圖片的URL並選擇「Flash獲取鏈接」,然後您可以成功下載圖片。然後查看Flashgot的日誌,並將Cookie信息複製到一個txt文件中。那是wget需要的cookies。然後使用wget與該cookie併成功下載文件。非常感謝你的幫助。我稍後可能會使用Perl。 :) – DocWiki 2010-12-19 05:45:49