免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2588 | 回复: 4
打印 上一主题 下一主题

下载网易相册的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-16 02:36 |只看该作者 |倒序浏览
用法,复制下面代码到down.pl,然后执行“./down.pl 相册用户名 相册ID Password”

  1. #!/usr/bin/perl
  2. #
  3. # File: down.pl
  4. # Author: blueirver

  5. use strict;
  6. use warnings;

  7. use LWP::UserAgent;
  8. use HTTP::Request::Common;
  9. use Encode;
  10. use File::Path;

  11. sub lwp_get($;%)
  12. {
  13.         my ($url, %opt) = @_;

  14.         my $uri = URI->new($url);
  15.         my $referer = $uri->scheme."://".$uri->host.$uri->path unless (%opt || $opt{referer});
  16.         my $useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1' unless (%opt || $opt{useragent});

  17.         my $ua = LWP::UserAgent->new();

  18.         my $req = HTTP::Request->new(GET => $url);
  19.         $req->header('Host' => $uri->host);
  20.         $req->header('User-Agent' => $useragent);
  21.         $req->header('Referer' => $referer);
  22.         $req->header('Cookie' => $opt{cookie});

  23.         my $res = $ua->request($req);
  24.         warn "fetch_page error! perhaps you should try again.\n" unless $res->is_success;

  25.         if($opt{remote_charset} && $opt{local_charset} && ($opt{remote_charset} ne $opt{local_charset}))
  26.         {
  27.                 return encode($opt{local_charset}, decode($opt{remote_charset}, $res->as_string));
  28.         }

  29.         return $res->as_string;
  30. }

  31. sub lwp_post($$;%)
  32. {
  33.         my ($url, $form_ref, %opt) = @_;

  34.         my $uri = URI->new($url);
  35.         my $referer = $uri->scheme."://".$uri->host.$uri->path unless (%opt || $opt{referer});
  36.         my $useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1' unless (%opt || $opt{useragent});
  37.         my $cookie = ' ' unless (%opt || $opt{cookie});

  38.         my $ua = LWP::UserAgent->new();
  39.         $ua->default_headers->push_header('Host' => $uri->host,);
  40.         $ua->default_headers->push_header('User-Agent' => $useragent,);
  41.         $ua->default_headers->push_header('Referer' => $referer,);
  42.         $ua->default_headers->push_header('Cookie' => $cookie);

  43.         my $res = $ua->request(POST $url, Content => ${form_ref});

  44.         warn "lwp_post faild!perhaps you supply a right password.\n" unless $res->is_success;

  45.         return $res->as_string;
  46. }

  47. sub nease_split($)
  48. {
  49.         my ($html) = @_;
  50.         my (@hostids, @type, @name, @photoids);
  51.         @name = $html =~ /\[\d\d\d,\d,"\d+x\d+","(.*)","http:\/\/.*","http.*"\]/g;
  52.         my (@photos) = $html =~/\[\d\d\d,\d,"\d+x\d+",".*","http:\/\/.*","(http.*)"\]/g;

  53.         return (\@photos, \@name);
  54. }

  55. my ($user, $aid, $pwd) = @ARGV;
  56. die "usage: $0 \$user \$aid [\$password]\n" if((not defined($user)) || (not defined($aid)));

  57. my $aurl = "http://photo.163.com/photos/$user/$aid/";
  58. my $iurl = "http://photo.163.com/js/photosinfo.php?user=$user&aid=$aid";

  59. my ($html, $cookie);
  60. if($pwd) {
  61.         my %form = ('checking' => '1', 'pass' => $pwd);
  62.         $html = lwp_post($aurl, \%form);
  63.         ($cookie) = $html =~ /Set\-Cookie:(.*)/ig;
  64. }

  65. $html = lwp_get($iurl, (cookie => $cookie));
  66. my ($url_ref, $name_ref) = nease_split($html);

  67. #print $html;
  68. my $folder = "$user/$aid";
  69. mkpath($folder, 1, 0755);

  70. my $ret;
  71. foreach (0..$#${url_ref}) {
  72.         print "\n$_/$#${url_ref} downloaded. ".$name_ref->[$_]."\n";
  73.         next if(-f "$folder/".$name_ref->[$_+2]);
  74.         $ret = `wget -c --referer=http://photo.163.com/photos/ $url_ref->[$_] -O \"$folder/$name_ref->[$_]\"`;
  75. }
复制代码

[ 本帖最后由 蓝色多瑙河1 于 2007-6-16 23:18 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-06-16 02:39 |只看该作者
就不注释了,小脚本~看过163相册代码的都能明白

论坛徽章:
0
3 [报告]
发表于 2007-06-16 09:39 |只看该作者
多谢分享!

小脚本。。。我还是看不懂,比我写得脚本都大

我菜的,学习

论坛徽章:
0
4 [报告]
发表于 2007-06-16 22:37 |只看该作者
麻烦楼主加一下code标签 再贴一下好吗?
有些字符串给论坛程序给替换掉了

论坛徽章:
0
5 [报告]
发表于 2007-06-16 23:15 |只看该作者
原帖由 kaoruamene 于 2007-6-16 22:37 发表
麻烦楼主加一下code标签 再贴一下好吗?
有些字符串给论坛程序给替换掉了

呵呵,好的~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP