好奇心過重的一個(gè)朋友問我這個(gè)動(dòng)漫網(wǎng)站的播放源地址是什么馁蒂,剛開始的時(shí)候我覺得那不簡(jiǎn)單嗎镜廉,F(xiàn)12直接看network情況就可以了贿堰,不過當(dāng)打開F12的時(shí)候會(huì)自動(dòng)跳轉(zhuǎn)到首頁,這時(shí)我就想估計(jì)是某段js監(jiān)控著開發(fā)者工具瞻想。
沒關(guān)系,這不影響我們后面的操作娩嚼,我們打開源代碼看看是什么原因?qū)е碌摹?/p>
這個(gè)禁用原理是利用console打印日志的異步策略蘑险。
當(dāng)使用console打印對(duì)象的時(shí)候(RegExp/Date/Array/Dom)輸出的是引用,也就是說岳悟,顯示到控制臺(tái)上的是最新的值佃迄,而不是執(zhí)行輸出那一刻的值泼差。所以每次顯示的時(shí)候都會(huì)重新獲取信息,如果不一致就會(huì)跳到首頁呵俏。
不過這不是我們研究的目的堆缘,還需要知道他的視頻播放地址,我們繼續(xù)看源碼找到對(duì)應(yīng)的HTML普碎。
首先我們看到一堆播放器的參數(shù)吼肥,其中播放地址是加密的,初步的想法應(yīng)該是用js生成iframe嵌套進(jìn)去生成的頁面麻车。
那現(xiàn)在接下來要怎么做缀皱?既然開發(fā)者工具看不到network,我們就打開花瓶等其他捉包工具看網(wǎng)站的訪問情況动猬。這里要說明一下為什么不一開始不用花瓶啤斗,主要是因?yàn)榻瞄_發(fā)者工具想說一下。
好了枣察,我們看花瓶的捉包情況争占。
首先有我們第一次訪問的地址,其次還有一個(gè)帶參數(shù)的地址序目,這個(gè)就是我們所需要的視頻頁面臂痕,里面也有我們需要的播放地址了。
到這里已經(jīng)解決那個(gè)好奇心過重朋友的問題了猿涨,不過既然到這一步了握童,繼續(xù)研究這個(gè)地址的生成。
上面我們看到播放器的一些參數(shù)叛赚,其中兩個(gè)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)過對(duì)比了解發(fā)現(xiàn),密文前大半都是相同的而后面不同都是JTM?俺附,所以可以推斷應(yīng)該是key是根據(jù)這個(gè)來生成的肥卡,然后把位置按這樣的順序?qū)Ρ劝l(fā)現(xiàn),JTM?的數(shù)字/字母跟原文的key剛好是相差4事镣,由此可以的推出key的生成規(guī)則步鉴,整個(gè)url就可以得到了。
其實(shí)璃哟,到這里本以為要結(jié)束的氛琢,可是我手賤打開其他視頻看看是不是也一樣,發(fā)現(xiàn)尷尬的事情出來了随闪,居然不一樣阳似。
現(xiàn)在如果再按照上面的解密推斷就比較困難了,因?yàn)榈刂纷兞祟戆椤?shù)內(nèi)容也包含有數(shù)字符號(hào)英文撮奏,這樣是不是沒有辦法呢俏讹?那當(dāng)然不會(huì),方法還是有很多的挽荡。
首先想到前端肯定是需要解析密文讓播放器識(shí)別地址的藐石,所以可以通過瀏覽器調(diào)試腳本。由于這個(gè)網(wǎng)站禁用了開發(fā)者工具定拟,需要把這個(gè)頁面保存到本地再把跳轉(zhuǎn)到首頁的js刪掉就可以進(jìn)行調(diào)試了于微。
先看播放器id再去搜有用到的地方,定位到大概率是播放器初始化的函數(shù)青自。
逐步調(diào)試得到url解密方式株依,原來是用base64decode再unescape就可以得到需要的參數(shù)了。
好了延窜,本文基本結(jié)束了恋腕,最后分析需要有耐心做任何事都需要一步一步來。
不積跬步逆瑞,無以至千里荠藤;不積小流,無以成江海