使出 perl 大戰 無名小站
錯過了高中同學的婚禮,我們班上的第一對,還是兩年都坐在一塊兒的,拼成績的傢伙。好運的是,他放上了婚禮照片到無名小站,裏頭有些高中同學露面照。可惡的是,無名不歡迎你把照片存回家,鎖右鍵…
於是我索性寫了個 perl script,讓它可以幫我完成抓圖這件事,而且只要抓圖,其它的廣告或是網頁什麼的都不要了。
想法是這樣的:
輸入是一個網址,然後 script 會從中取出有用的 link 來,就存同一個相簿下,其它圖片的網頁的 link,然後再一一去拜訪這些網頁,把裏頭的照片 .jpg 存下來,接著就是反覆地做,反覆地找下去……
接著遇到一個問題了,無名的照片是存在另一台 server 上的,但是當我自己用 firefox 想去抓那些照片時,就是抓不下來,怎麼試都不成。
想了很久,才想到它可能是檢查 referer 這個資訊的,一試,果然成功了 :D:D
#!/usr/bin/perl -w
use strict;
my (
@urls,
@results,
@index,
$url
);
push (@urls, $ARGV[0]);
/^\s+\d+\. (http:\/\/www\.wretch\.cc\/album\/show.*)p=(\d+)$/;
$index[$2] = 1;
while (@urls > 0) {
$url = pop (@urls);
@results = `lynx -accept_all_cookies -dump -image_links "$url"`;
foreach (@results) {
if (/^\s+\d+\. (http:\/\/www\.wretch\.cc\/album\/show.*)p=(\d+)$/) {
if (!$index[$2]) {
$index[$2] = 1;
push (@urls, $1."p=".$2);
}
}
elsif (/^\s+\d+\. (http:\/\/pic.+)$/) {
if (!/thumbs/) {
system ("wget -U \"Mozilla/5.0\" -nH -nc --referer=\"$url\" $1");
}
}
}
}
./wretcher "http://www.wretch.cc/album/show.php?i=opseries2&b=9&f=1116746419&p=0"
怎麼看,除了那行 /ooxx/ 以外,其它地方還是寫得好像 c 語言 :o

2 Comments:
perl看起來像是外星語言.....頭好昏
哈~~
Post a Comment
<< Home