Geek Gao

Geek Gao的博客

他的个人主页  他的博客

Python 突破防盗链下载FLASHGET资源

Geek Gao  2010年06月12日 星期六 15:28 | 2651次浏览 | 0条评论

  今天,群里一位童鞋碰到的一个问题,本着互帮互助的无私精神,帮他研究了下,现总结如下:

 Q: 采集网站资源,但网站采用的防盗链,不能直接访问下载页 如何解决?
 A: 一般的防盗链采用的是识别访问者的Referer 来判断访问者是否直接通过站外链接下载的资源。所以,在下载时伪造个合法的Referer就能  达到欺骗的目的,Python代码实例:

1 url = 'http://www.qcfans.cn/soft/download.asp?softid=3317&downid=9&id=3321'
2 opener = urllib2 . build_opener ( urllib2 . HTTPHandler )
3 opener . addheaders = [( 'User-agent' , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3' )]
4 opener . addheaders = [( 'Referer' , ' http://www.qcfans.cn/soft/download.asp?softid=3317' )]
5 urllib2 . install_opener ( opener )
6 response = urllib2 . urlopen ( url )
7 the_page = response . read ()
8 print the_page


打印出的结果:

< script src = "http://ufile.7pk.com/Flashget_union.php?fg_uid=17826" >< /script>
< script > function ConvertURL2FG ( url , fUrl , uid ){ try { FlashgetDown ( url , uid ); } catch ( e ){ location . href = fUrl ; }}
function Flashget_SetHref ( obj ){ obj . href = obj . fg ;} < /script>
< script > ConvertURL2FG ( 'Flashget://W0ZMQVNIR0VUXWh0dHA6Ly9sb3ZlLnFjZmFucy5jbi9kb3duL3BwdC/G+7O1t6K2r7v6ubnU7NPr0N7A7S+12rDL1cIgt6K2r7v6tcTXsMXkoaK199X70+vEpbrPLnBwdFtGTEFTSEdFVF0=&17826' , 'http://www.qcfans.cn' , 17826 ) < /script>


Ok,第二个问题出来了,瞧:

Q: 我不想使用FLASHGET进行下载,如何得到真实的资源地址呢?
A: 这里涉及到FlashGet专用地址与统一资源定位符转换的问题,具体的算法很简单(就文章发布前而言):
首先,我们提取flashget的地 址
Flashget://W0ZMQVNIR0VUXWh0dHA6Ly9sb3ZlLnFjZmFucy5jbi9kb3duL3BwdC/G+7O1t6K2r7v6ubnU7NPr0N7A7S+12rDL1cIgt6K2r7v6tcTXsMXkoaK199X70+vEpbrPLnBwdFtGTEFTSEdFVF0=&17826

然 后将其地址的协议前缀 Flashget:// 和等号 后的 &17826 去掉。
将处理过的地址字符串进行Base64解码,看Python 实例:

1 print base64 . decodestring( "W0ZMQVNIR0VUXWh0dHA6Ly9sb3ZlLnFjZmFucy5jb \
2 i9kb3duL3BwdC/G+7O1t6K2r7v6ubnU7NPr0N7A7S+12rDL1cIgt6K2r7v6tcTXsMXko \
3 aK199X70+vEpbrPLnBwdFtGTEFTSEdFVF0=" ) )


见print输出的结果如下:

[ FLASHGET ] http : // love . qcfans . cn / down / ppt / 汽车 发动机构造与修理 / 第八章 发动机的装配、调整与磨合 . ppt [ FLASHGET ]


ok,现在显而易见了吧,取 [FLASHGET] 标记内的地址 就是真实的资源地址!
关键代码在此,其余的代码就 不浪费篇幅陈述了。

到此,玩弹弹堂去了。。。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号