最近幾天抖音有點(diǎn)火,火到新榜大號(hào)上周(3.20-3.25)7天發(fā)布了5篇關(guān)于抖音的報(bào)道,今天還專門建了個(gè)“微微一抖”的群。
作為一個(gè)數(shù)據(jù)狗,也該從數(shù)據(jù)層面研究一下這“一抖”了。
通過(guò)分享視頻網(wǎng)頁(yè)源代碼獲取數(shù)據(jù)
所有互聯(lián)網(wǎng)能看到的數(shù)據(jù)都是可以采集的,抖音肯定也不例外。
普通情況下,我們使用爬蟲采集網(wǎng)絡(luò)信息的時(shí)候是基于其網(wǎng)站的前端代碼,也就是你在任意位置鼠標(biāo)右鍵—查看網(wǎng)頁(yè)源代碼看到的那些。
抖音的視頻都在APP上,我們沒(méi)法查看他的源代碼。好在抖音可以分享到微信然后使用瀏覽器打開查看。
我們右鍵查看頁(yè)面源代碼,是可以看到該視頻數(shù)據(jù)的:
源代碼中我們可以很清楚的看到視頻名稱和作者的信息。
有趣的是,本來(lái)其他人不可見(jiàn)的視頻播放數(shù)據(jù),前端代碼中也做了展示。截圖中"play_count":138、"aweme_id":"6536834751905402116"、"comment_count":1和"share_count":1分別代表了該視頻的播放數(shù)、視頻ID、評(píng)論數(shù)和分享數(shù)。
查看該分享視頻的url構(gòu)造可以發(fā)現(xiàn)非常的簡(jiǎn)單,僅由www.douyin.com、share、video?和6536834751905402116四個(gè)部分組成,其中前三部分是固定的,唯一變化的是最后一部分視頻ID。按照正常的爬蟲邏輯,我們只需要使用腳本不斷遞增該ID,即可實(shí)現(xiàn)遍歷所有的視頻。
實(shí)操發(fā)現(xiàn),簡(jiǎn)單遞增視頻ID構(gòu)造的URL視頻并不存在??磥?lái)抖音對(duì)視頻的ID是做了加密處理的。嘗試分享了幾個(gè)視頻發(fā)現(xiàn),ID有一定的規(guī)律,但數(shù)據(jù)量較小,無(wú)法做到解密。時(shí)間有限,我們下次再研究視頻ID的遞增邏輯。
抓包獲取視頻數(shù)據(jù)
除了通過(guò)網(wǎng)頁(yè)的源代碼采集網(wǎng)絡(luò)數(shù)據(jù)外,對(duì)于APP信息的采集多通過(guò)抓包實(shí)現(xiàn)。所謂“抓包”,就是截獲手機(jī)與服務(wù)器之間通信的數(shù)據(jù),進(jìn)行解析獲取通信間傳遞的數(shù)據(jù)。
我們使用常用的抓包工具Fiddler,獲取手機(jī)上抖音APP獲取視頻過(guò)程的數(shù)據(jù)進(jìn)行分析。
抓包軟件截獲了手機(jī)與aweme.snssdk.com通信的過(guò)程,百度該鏈接確認(rèn)其為今日頭條產(chǎn)品:
開始的幾個(gè)視頻請(qǐng)求地址是相同的,多劃幾次后發(fā)現(xiàn)增加了一個(gè)https://aweme.snssdk.com/aweme/v1/feed/?XXXXX的請(qǐng)求地址。這就好玩了,我們都知道feed是流的意思,百度的信息流新聞地址也是feed.baidu.com,可以初步判定,從這個(gè)地址請(qǐng)求的數(shù)據(jù)應(yīng)該是“流”式的,也就是說(shuō)至少包含多個(gè)視頻信息!
解包后發(fā)現(xiàn)果然不出所料!
json中包含了作者、視頻和背景音樂(lè)等多種信息。
高級(jí)的是,一次請(qǐng)求,服務(wù)器返回了6個(gè)視頻信息!
和請(qǐng)求規(guī)律相同,每下劃5次會(huì)向feed地址發(fā)起一次請(qǐng)求。
剩下的,就可以交給腳本,“躺在床上”無(wú)限下劃了。
加一些PS:
大量數(shù)據(jù)背后,理論上我們可以分析抖音的推薦邏輯,畢竟每6個(gè)視頻一組打包下載,肯定存在某種規(guī)律;
采集的信息中包含了作者的性別、年齡、地理位置、學(xué)校等信息,用戶畫像也是可以分析出來(lái)的;
追蹤作者信息,可以深層次挖掘作者的作品數(shù)、獲贊數(shù)、粉絲數(shù)等數(shù)據(jù),榜單也可以來(lái)一發(fā)了;
最開始網(wǎng)頁(yè)源代碼采集的時(shí)候我們知道,視頻的實(shí)際閱讀量也是可以采集的,那么視頻曝光量也就知道了,曝光量=廣告價(jià)值;
抖音應(yīng)該快采取措施封停這種粗暴的采集了,要上車的趕緊……