【问题标题】:WGET, Cookies and 302 RedirectWGET、Cookie 和 302 重定向
【发布时间】:2010-12-19 11:54:57
【问题描述】:

我想使用 WGET 从某个站点的会员区下载一些图片。本网站受密码保护。我已成功登录并保存 cookie。但是,由于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是会员区的首页,表示我已经登录成功了。

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

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

结果是一样的。

非常感谢!

【问题讨论】:

    标签: command-line cookies centos wget


    【解决方案1】:

    我以前总是在使用 wget 和 cookie 时遇到问题(试图让 wget 使用我的 Mozilla cookie 等...),所以我转而使用 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;
       }
    }
    

    【讨论】:

    • 您好,我已经在 Flashgot(一个 firefox 插件)的帮助下解决了我的问题。方法如下:右键单击图片的 url 并选择“Flash 获取链接”,然后您可以下载图片成功地。然后查看Flashgot的日志,将cookies信息复制到一个txt文件中。这就是 wget 需要的 cookie。然后将 wget 与该 cookie 一起使用,我成功下载了文件。非常感谢你的帮助。我以后可能会使用 Perl。 :)
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2020-06-27
    • 2011-01-18
    • 2017-09-20
    相关资源
    最近更新 更多