好奇心過重的一個朋友問我這個動漫網(wǎng)站的播放源地址是什么,剛開始的時候我覺得那不簡單嗎,F(xiàn)12直接看network情況就可以了,不過當打開F12的時候會自動跳轉(zhuǎn)到首頁,這時我就想估計是某段js監(jiān)控著開發(fā)者工具。

沒關(guān)系,這不影響我們后面的操作,我們打開源代碼看看是什么原因?qū)е碌摹?/p>
這個禁用原理是利用console打印日志的異步策略。
當使用console打印對象的時候(RegExp/Date/Array/Dom)輸出的是引用,也就是說,顯示到控制臺上的是最新的值,而不是執(zhí)行輸出那一刻的值。所以每次顯示的時候都會重新獲取信息,如果不一致就會跳到首頁。

不過這不是我們研究的目的,還需要知道他的視頻播放地址,我們繼續(xù)看源碼找到對應的HTML。

首先我們看到一堆播放器的參數(shù),其中播放地址是加密的,初步的想法應該是用js生成iframe嵌套進去生成的頁面。
那現(xiàn)在接下來要怎么做?既然開發(fā)者工具看不到network,我們就打開花瓶等其他捉包工具看網(wǎng)站的訪問情況。這里要說明一下為什么不一開始不用花瓶,主要是因為禁用開發(fā)者工具想說一下。
好了,我們看花瓶的捉包情況。
首先有我們第一次訪問的地址,其次還有一個帶參數(shù)的地址,這個就是我們所需要的視頻頁面,里面也有我們需要的播放地址了。

到這里已經(jīng)解決那個好奇心過重朋友的問題了,不過既然到這一步了,繼續(xù)研究這個地址的生成。
上面我們看到播放器的一些參數(shù),其中兩個url地址是這樣的。
第十集
原文 http://www.zzzfun.com/static/danmu/ksyun.php?kdoc?key=56418158389
密文 JTZCJTY0JTZGJTYzJTNGJTZCJTY1JTc5JTNEJTM1JTM2JTM0JTMxJTM4JTMxJTM1JTM4JTMzJTM4JTM5
第十一集
原文 http://www.zzzfun.com/static/danmu/ksyun.php?kdoc?key=56418243634
密文 JTZCJTY0JTZGJTYzJTNGJTZCJTY1JTc5JTNEJTM1JTM2JTM0JTMxJTM4JTMyJTM0JTMzJTM2JTMzJTM0
經(jīng)過對比了解發(fā)現(xiàn),密文前大半都是相同的而后面不同都是JTM?,所以可以推斷應該是key是根據(jù)這個來生成的,然后把位置按這樣的順序?qū)Ρ劝l(fā)現(xiàn),JTM?的數(shù)字/字母跟原文的key剛好是相差4,由此可以的推出key的生成規(guī)則,整個url就可以得到了。

其實,到這里本以為要結(jié)束的,可是我手賤打開其他視頻看看是不是也一樣,發(fā)現(xiàn)尷尬的事情出來了,居然不一樣。


現(xiàn)在如果再按照上面的解密推斷就比較困難了,因為地址變了、參數(shù)內(nèi)容也包含有數(shù)字符號英文,這樣是不是沒有辦法呢?那當然不會,方法還是有很多的。
首先想到前端肯定是需要解析密文讓播放器識別地址的,所以可以通過瀏覽器調(diào)試腳本。由于這個網(wǎng)站禁用了開發(fā)者工具,需要把這個頁面保存到本地再把跳轉(zhuǎn)到首頁的js刪掉就可以進行調(diào)試了。
先看播放器id再去搜有用到的地方,定位到大概率是播放器初始化的函數(shù)。


逐步調(diào)試得到url解密方式,原來是用base64decode再unescape就可以得到需要的參數(shù)了。

好了,本文基本結(jié)束了,最后分析需要有耐心做任何事都需要一步一步來。
不積跬步,無以至千里;不積小流,無以成江海