亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3886 | 回復: 8
打印 上一主題 下一主題

一個帶cookie 的下載 請求問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-06-19 21:30 |只看該作者 |倒序瀏覽
初學者的疑問
我想用perl 來批量下載和訊音樂,音樂的url已經(jīng)得到。不過和訊的音樂下載必須要在get請求中帶有cookie?戳藀erl&lwp 的相關(guān)內(nèi)容,于是照著寫了下?墒莄ookie并沒有提交成功啊。望高人給點撥一下。
  1. use LWP::UserAgent;
  2. use HTTP::Cookies::Netscape;
  3. my $url=$ARGV[0];
  4. open(FH,">c:/a.mp3");
  5. $cookie=HTTP::Cookies::Netscape->new('file'=>'C:/Documents and Settings/Administrator/Cookies/administrator@hexun[1].txt');
  6. my $browser=LWP::UserAgent->new;
  7. $browser->agent("mozilla/4.76");
  8. $browser->cookie_jar($cookie);
  9. my $ua=$browser->get($url);
  10. my $resp=$ua->content;
  11. print FH $resp;
  12. close($file);
復制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2010-07-03 22:23 |只看該作者
經(jīng)過分析和訊的網(wǎng)頁信息,和訊是通過COOKIE防止非法外鏈,而真正影響音樂文件下載的COOLIE是由SetPlayState.js腳本生成的,原代碼如下:
  1. //設(shè)置播放狀態(tài)Cookie值。
  2. function SetPlayState()
  3. {
  4.         var cookieName = "HEXUN_COM_MEDIA_PLAYSTATE";
  5.         var curCookie = cookieName + "=1;path=/;domain=hexun.com";
  6.         document.cookie = curCookie;
  7. }
  8. SetPlayState();
復制代碼
那么在下載音樂文件的時候,需要在HTTP請求中加入這個COOKIE。

以ID號為5692541音樂為例:
它的播放網(wǎng)頁為:
http://fangchuanqian.music.hexun.com/M5692541.html

經(jīng)分析網(wǎng)頁代碼,它的網(wǎng)頁播放器鏈接為:
http://music.hexun.com/PlayMedia ... 692541&FileUrl=

再分析能發(fā)現(xiàn),真正生成MP3實際下載地址的鏈接為:
http://homemusic.tool.hexun.com/ ... 692541&FileUrl=

向“http://homemusic.tool.hexun.com/ ... 692541&FileUrl=”發(fā)送請求,并在請求中加入COOKIE信息,即可正常下載音樂文件。

寫了一個簡單的按音樂的ID號下載的代碼:
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. use LWP::UserAgent;
  5. use LWP::ConnCache;
  6. local $| =1;

  7. my @mp3_ID = ('5692541','5597643');

  8. my $ua = LWP::UserAgent->new;
  9. my $conncache = new LWP::ConnCache;
  10. $ua->conn_cache($conncache);
  11. my @head = ('Cookie'=>'HEXUN_COM_MEDIA_PLAYSTATE=1'); #將COOLIE加入GET請求頭

  12. print "\n Download begin ...\n\n";
  13. foreach my $id (@mp3_ID) {
  14.         my $res1 = $ua->get("http://homemusic.tool.hexun.com/PM.aspx?CID=1&MID=$id&FileUrl=");
  15.         my $html = $res1->as_string;
  16.         if ($html =~ /歡迎訪問.*?和訊音樂個人門戶/) {
  17.                 print "ID $id is error!\n";
  18.         }
  19.         else {
  20.                  my ($mp3_url) = ($html =~ /A HREF="(.*?)"/i);
  21.                  print " Downloading $id.mp3 ... ";
  22.                  my $res2 = $ua->get($mp3_url,@head);
  23.                  if ($res2->is_success) {
  24.                           open(my $fp, ">:raw", "$id.mp3");
  25.                           print $fp $res2->content;
  26.                           close $fp;
  27.                           print "OK\n";
  28.                  }
  29.                  else { print "Failed!\n"; }
  30.         }
  31. }
  32. print "\n All downloaded!\7";
  33. <STDIN>;
復制代碼
可以通過從和訊的網(wǎng)頁中批量提取音樂ID,加入@mp3_ID中,以實現(xiàn)批量下載。

論壇徽章:
0
3 [報告]
發(fā)表于 2010-07-04 00:14 |只看該作者
回復 2# iamlimeng


    學習,感覺樓上對網(wǎng)頁抓取很有經(jīng)驗~

論壇徽章:
0
4 [報告]
發(fā)表于 2010-07-04 09:33 |只看該作者
回復 3# x9x9


    以前經(jīng)常寫CGI,所以比較熟悉。

論壇徽章:
0
5 [報告]
發(fā)表于 2010-07-04 13:03 |只看該作者
遇到高人了, 學習經(jīng)驗了。

論壇徽章:
0
6 [報告]
發(fā)表于 2010-07-04 19:33 |只看該作者
回復 2# iamlimeng


    非常感謝啊,剛用perl不久,之前用來批量抓取頁面提取音樂ID的時候,也不知道用個LWP::conncache。5000多個URL,用來一個多小時,而且失敗的情況也占四分之一。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-07-04 19:36 |只看該作者
回復 2# iamlimeng


    還有一個問題,我下載音樂的時候,可以使用什么辦法來同時下載多個音樂呢,用Threads模塊可以實現(xiàn)么?

論壇徽章:
0
8 [報告]
發(fā)表于 2010-07-04 23:30 |只看該作者

論壇徽章:
0
9 [報告]
發(fā)表于 2010-07-06 20:03 |只看該作者
回復 8# iamlimeng


    再次感謝iamlimeng 的幫助,音樂可以全部下載了,正在downlloading,目前已經(jīng)2個多G了,呵呵。有喜歡輕音樂和懷舊影視配樂的可以找我要啊。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP