MM最近迷上了韩剧,每天过来在我的网通信息港看点播。但随着天气越来越冷了,每次来回奔波也颇有不便,而MM装的电信宽带无法观看,因此我想下载这些电视剧拷过去。
; S! t; G- `! ?) k# g! O
3 c: E/ R7 b$ x7 S 但是,新的问题来了:这些影视节目限制了单线程,也就是说,下载一本45分钟的电视剧需要耗时45分钟,面对着韩剧动辄40集、60集、甚至100多集的庞大规模,这可不是个简单工程。
# l. v" S6 v. M5 `/ A& w+ m5 C; q0 y3 }+ k
有什么办法能够突破限制,高速完成下载呢?
7 A) k& g0 @' i( p0 z' r
- I+ Y% K$ }9 e9 O 分析篇3 s; Z4 R" D2 B
0 @, v/ [, l# k6 S9 C1 g y8 @
知己知彼,方百战不殆,我们先来看一下信息港采用什么方法来限制下载。
; D" z* S( g4 b7 z
$ r8 T- ~* `9 j3 ` 大多数在线影院都会采取各种方法来限制下载。比如常用的IP限制。对于IP限制的情况,快车(FlashGet)、影音传送带等下载软件都提供了代理功能,可以突破,这方面已经有很多的教程,这里不赘言了。
' Q! A$ \' j1 {; A6 N$ t/ L, J
1 k: s# R, Q7 Y" P, Z
但是本地网通信息港采用的并不是这种限制方法。由于采用的是FTTB+LAN方式,整幢楼多用户共用同一IP,单纯的IP限制显然无法实现。事实上,它采用的是一种奇怪的限制方法:我们可以在一台电脑上同时打开同一部影视节目的多个窗口,但是使用下载工具,却永远只能打开一个线程。
: f/ U! x, X+ c5 n" N2 g+ T
# e/ g) {8 ^% U
这是以前没有遇到过的现象。后来问了一些朋友,居然很多地方的在线影院都采用了这种限制方法。看来有必要研究一下它的机关所在。
2 r$ L% N, a$ j, b7 k2 r1 A) f9 J5 M1 |! }
在网页上,是通过点击一个paly.aspx文件链接,然后被跳转到真实的地址。秘密也应该藏在这里。那么,我们先把这个aspx文件下载下来看看。
% i2 e9 m5 I1 i6 \3 T& K) T+ k1 |7 E
3 z, C. { a& O 用记事本打开,是这样的一段跳转控制:
" L4 c) O! E( x- j( Z# Y, ~
) A3 p2 [* L$ }& ~
<ASX VERSION = "3.0">
, N0 V7 \3 P/ R; r+ k. w( O2 f' { <ENTRY>
0 a3 f: d7 Q( N5 {- c" z! J
<REF HREF = "mms://***.***.***.**/19386.wmv?SessionID=Guest228FF76F520842D2A60696125CE572DC&ProgCode=19386"/>
3 D% a3 L" x" L& `
<STARTTIME VALUE="00:00:00" />
( A2 k8 b. T0 Y* j: \/ ~. C
</ENTRY>
; h+ a3 q7 `( S/ A$ b </ASX>
5 J4 H; V3 @$ @. R' v5 i$ l0 J+ [$ N4 q% K
(注:IP地址用*号代替,下同)
3 ?6 X0 A, h1 p$ T* n
2 I0 V* j: T2 H$ d) o) G- \
ASP即Active Server Page的缩写,是一种使用了VB Script或Jscript脚本程序代码的活动页面,当浏览器点击网页的时候,服务器就会根据请求即时生成一个相应的HTML代码,因此浏览器获得的是一个动态生成的网页。
0 V3 O/ ~8 z3 U* a( Z* r. s6 A! `6 E; w% H: u! U* v) n1 t
这本影视节目的真实链接就是“mms://***.***.***.**/19386.wmv”,而“228FF76F520842D2A60696125CE572DC”是一个随机生成的密钥,也是线程限制的关键所在。
" l( q8 u( M6 K. N; y" ^! d" Z
. n' h4 `4 J. H% t& J w
同样操作,第二次下载同一个节目的paly.aspx文件,我们可以发现,“mms://***.***.***.**/19386.wmv”这个地址保持不变,而随后的密钥却改变了。
6 D; V$ v+ w( J: {% z# E/ _
' ]8 J* x$ R/ m3 |& K 到了这里,我们可以确定信息港采用的限制思路了。通过ASP技术,当点击相关链接的时候,会自动生成一个包含唯一密钥的链接地址;只有包含正确密钥的地址才可以被浏览器以及下载工具获取;但是每一个包含密钥的新地址,被限制了单程;将这些地址填入下载工具,虽然都可以同时进行下载,但是并不能合并数据,而是将一个文件下载多遍。
7 g. i% k2 D( v
! c9 n/ |1 w% S1 }' X6 Z, C0 k z 这个思路虽然简单,但是显然是卓尔有效的,目前的各种下载方法,似乎都没有突破的办法。
" f7 c! E @9 O3 E3 G' V破解篇
, S; j/ V3 k% g0 h: P
! {4 H# o$ F6 U% `7 Q 当一条路走不通的时候,或许,换一个角度,我们就可以找到新的解决办法。
& c) w+ q" Z5 ?& A9 b2 t4 I2 c+ L& E
在前面的分析过程中,我们发现,多次点击同一电影,是可以同时打开多个窗口的。也就是说,它在实质上是可以被多个线程同时打开的,只是需要突破密钥的限制。
- `, {* f! h9 @ v: ?
) Q1 u, I1 |; N8 O% q
突然想起,快车(FlashGet)的多站点超线程技术(MHT),可以跨越站点之间的限制,如果这本影视节目同时有多个可供下载点,便可以同时从这几个站点一起下载,速度当然也成倍增长了。而且更妙的是,快车(FlashGet)本身就支持MMS等大多数协议。
0 v- t4 X( \ L" D. f# ]: E, e* E2 r. k% W; z; [' ?
“但是,”你或许会跳出来,“这本节目不是只有这里才有吗?哪里来得多站点同时提供呢?”这倒也是,如果有其他地方可以打开,我也不用费那么大功夫来下载了。^-^但是,没有多个源,为什么我们不能自己制造呢?在前面我们已经知道,这种限制方式,由于使得每个新的打开链接都是“不同”的,造成我们无法用下载工具多线程下载,或者只是下载了多个副本。那么,如果把这些副本分别作为“镜像文件”来看呢?
5 F2 q b8 r5 D+ G' n/ Z
% Z. H* A$ X/ Y. u( ~ 思路于是被打开了,现在简单了。多次下载同一节目的play.aspx,用记事本打开,分别获取那个包含了SessionID的地址。
; v. m+ P1 j5 k7 K
I7 J( ]' a9 v0 w( L9 |
(图1):只需要利用快车(FlashGet)的“重新下载”功能,就可以轻松获得多个同源play.aspx文件,免却重复添加的麻烦。
' ^* l* i1 N0 u$ _ f
/ M. Z0 D$ O4 i+ \' W
o2 {6 ]* o* J a; }6 W3 I) ?9 K运行快车(FlashGet),新建下载任务,然后在“设置替代网址”中分别添加多个“镜像地址”。
2 D( p$ r( D& N6 Y' I* m8 I0 t( \7 d* X6 B: z: ^
(图2):在下载任务上点击右键,在“属性”中可以打开高级设置。
" f( o. `% |1 ]+ c! @5 y! `% I5 s. _3 d3 S3 `: J+ C( @
! z- ]& I' g0 d (图3):在“设置替代网址”中,添加新的镜像地址。
# l: f: P! O1 v/ G, r5 \- I$ x* Y# e' Z
, Y4 n" l8 Z1 }$ t根据镜像地址数目,设置相应的线程数,然后点击开始。
3 I& x/ A8 X+ `
) E: m+ J7 h& C* t9 T7 g 激动人心的奇迹,在这一瞬间发生了。只见突破了限制的快车(FlashGet),如同快马加鞭,几个线程齐头并进。再看一下时间,原本45分钟的一本片子,如果使用了5个线程,那就只需9分钟即可完成;如果开100个线程呢?那估计还是你找镜像地址的时间多,呵呵……