WGET, Cookies и 302 Redirect - PullRequest
       27

WGET, Cookies и 302 Redirect

2 голосов
/ 19 декабря 2010

Я хочу использовать WGET, чтобы загрузить некоторые фотографии с одного сайта.Этот сайт защищен паролем.Я успешно вошел в систему и сохранил файлы cookie.Тем не менее, я до сих пор не могу скачать фото из-за 302 Redirect.Может ли кто-нибудь оказать мне услугу и взглянуть на это?Большое спасибо.

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 - это первая страница на сайте members, что означает, что я успешно вошел в систему.

Я выполнил поиск в Google и добавил--user-agent="Mozilla/4.0", но он все равно не будет работать:

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

Результат тот же.

Большое спасибо!

1 Ответ

3 голосов
/ 19 декабря 2010

У меня всегда были проблемы с wget и cookie-файлами (пытаясь заставить wget использовать мои cookie-файлы Mozilla и т. Д.), Поэтому я переключился на использование библиотеки Perl WWW :: Mechanize .Он обрабатывает файлы cookie для вас, а также все обычные вещи, которые вы ожидаете от браузера, такие как обработка и история 302.

Простой пример, который входит на сайт, захватывает все JPG и нажимает кнопку "Следующая »ссылка для нумерации страниц:

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;
   }
}
...