作者deduce (http://punk.tw/ )
看板Python
标题Re: [范例] 用WebChuan抓取无名相簿的相片
时间Thu Oct 23 17:05:02 2008
: → StubbornLin:看来不只有我一个人遇到yahoo 999 = = 10/23 00:10
: → StubbornLin:我没预料到居然有那种鬼机制 XD 10/23 00:10
: → StubbornLin:抓了一阵子居然999 我没研究他判断999的方式 10/23 00:10
: → StubbornLin:还有它到底是禁止了什麽 我猜应该是ip 10/23 00:11
: → StubbornLin:我重新播号换个ip就好了 10/23 00:11
: → StubbornLin:我觉得应该是抓图的方式太密集 = = 10/23 00:11
: → StubbornLin:我想... 如果User-Agent用乱数决定 10/23 00:12
: → StubbornLin:不知道它会不会认定是不同电脑 10/23 00:12
: → StubbornLin:但如果只认ip 大概就只能延长抓的间格吧? 10/23 00:12
对不起...虽然这里是python板,但以下文章只有ruby and php code...orz 请见谅
换proxy是个方法、换IP也是方法,不过我上次在yahoo open hack day恶搞
无名小站2.0的时候有发现一些关键,至少那个晚上我爬了2,000+ 个网页没被挡:p
1. header要记得送 cookie
2. 换一本相簿还是换一个user的时候会收到response header送 set-cookie 回来
记得把里面提供的资讯换上去跟着送出去
BX=xxxxxxx ; PHPSESSID=xxxxxxx
我是用ruby写的,有一段程式如下
unless resp['Set-cookie'].blank?
@cookie = "#{cookie.scan(/BX=.+s=\w{1,3};/)[0]}
#{cookie.scan(/(PHPSESSID=\w+;)/)[0]} lang=zh-tw;
#{resp['Set-cookie']}"
end
(当时赶时间regular expression写得很丑.....到现在一直没改XD)
3. request不要送太快,基本上一秒一页应该没问题(?)
关键在於尽量模拟真人的浏览行为 :p
by the way, 要hack无名小站就是下列3点
1. HTML是最难破的,基本上就是上述模式去捞....
可能的防护方式是挡IP, 看header & cookie
捞到html後基本上就有缩图网址,缩图网址跟大图网址规则是固定的...
2. 缩图,只要有缩图的url就可以,等於是没有防护
3. 大图,基本上这些图应该是躲在firewall或proxy後面,只查referer
随便写一段PHP就可以捞到图了:
<?php
$p = $_GET['url'];
header('Content-type: image/jpeg');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $p);
curl_setopt ($ch, CURLOPT_REFERER, "
http://www.wretch.cc/album/");
curl_exec ($ch);
curl_close ($ch);
?>
使用方式例如
http://localhost/img.php?url=http://f7.yahoo...................
就会return一张图片回来.....
基本上我是满想开一个open source project专门写爬无名小站的程式.....
这样会有人有兴趣吗??
--
Cyberpunk
http://punk.tw/
--
华夫人:我们一日丧命散是用七种不同的毒虫,再加上了鹤顶红,
提炼了七七四十九日而成的,无色无味,杀人於无影无踪!
唐伯虎:哼!我们含笑半步癫是用蜂蜜、川贝、桔梗、加上天山雪莲配制而成,
不需冷藏,也没有防腐剂,除了毒性猛烈之外,味道还很好吃!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.179.98
1F:→ dogtsing:怎麽觉得有点贱 XD 但又觉得有点爽 XD 10/23 22:11
2F:推 zwai:酷!! 10/23 23:13
3F:推 StubbornLin:无名会因此被爬到倒站吗 XDDD? 10/23 23:47
4F:→ StubbornLin:以後要输入验证码才能浏览 XD 10/23 23:47
5F:推 bizkit:这样是无止境的战争 一边努力想新的防御 一边努力破 (fun!) 10/24 02:29