1. 程式人生 > 實用技巧 >抖音爬蟲教程,一文講透原理

抖音爬蟲教程,一文講透原理

宣告: 本文只做技術研究,請勿用於任何非法用途。


最近有不少小夥伴投入短視訊賽道,也出現不少第三方資料商,為大家提供抖音爬蟲資料。
小夥伴們有沒有好奇過,這些資料是如何獲取的,普通技術小白能否也擁有自己的抖音爬蟲呢?
本文會全面解密抖音爬蟲的幕後原理,不需要任何程式設計知識,還請耐心閱讀。

1. 什麼是 HTTP 請求

在製作爬蟲前,首先需要了解,爬蟲資料是怎麼獲得的。
以抖音 APP 為例,我們從抖音上看視訊,和我們從瀏覽器上訪問網站原理是一樣的。 都是通過標準的 HTTP 請求來互動。
那麼什麼是 HTTP 請求呢?

HTTP 請求其實非常簡單,可以理解為規定好格式的一組文字訊息。請求訊息中一般包含三樣東西:

  1. 請求網址 (URL),例如抖音 APP 後臺網址
  2. 你要做的事情 (請求引數), 例如是瀏覽,點贊還是上傳視訊等
  3. 你的身份資訊 (Cookie) 和校驗資訊 (Token),表明你是誰,你請求合法嗎

抖音伺服器收到 HTTP 請求後,會先驗證合法性,然後按照你的要求,配合你的身份和地理位置等,給你回覆規定格式的文字訊息。

2. 抖音 HTTP 請求流程

我們以安卓 10.6 版首頁推薦視訊為例,來看一個真實的抖音請求流程:

上圖是通過抓包軟體抓取的首頁推薦視訊請求資料。可以看出,當你一開啟抖音,APP 就會自動向抖音伺服器傳送一條 HTTP 請求訊息。
圖中藍色箭頭可以看出,請求是向 aweme-hl.snssdk.com/aweme/v2/fe…

這個網址傳送的 (URL)。
黃色箭頭標出該 HTTP 請求包含了地理位置資訊 (請求引數),以及身份資訊 (Cookie)。
抖音伺服器收到請求後,就知道你是誰,你在哪裡,你要幹什麼。然後會將紅色箭頭中的視訊推薦資料回覆給你。
點開回複數據,可以看到其中包含了視訊 ID,標題,描述,點贊量,評論等多種資訊。

有的讀者可能注意到一串 \350\241\250\346\203\205 這樣奇怪的數字,這其實是一種叫 UTF-8 的編碼方式。
可以簡單理解為每三組 \xxx 組成一箇中文字元。比如上面這串數字翻譯過來就是 表情 兩個字。

抖音 APP 通過讀取回復訊息,就知道該給我們展示哪些視訊了。
但此時並沒有結束,APP 還要根據返回的視訊 ID,額外做兩次 HTTP 請求,以獲得需要展示的視訊資料和縮圖資訊,這樣才能真正給我們展示首頁推薦視訊。

3. HTTP 包到底長什麼樣?

小夥伴們讀到這裡,應該明白整個抖音資料的請求流程了。俗話說紙上得來終覺淺,我們就以抖音點贊為例,手把手教大家怎樣抓取和檢視一個真實的 HTTP 請求包。

1. 下載抓包軟體

首先,需要下載 HttpCanary 抓包軟體,可以從 Google Play 或者 Apkpure 裡下載。安裝完成後,重啟手機,就可以開始抓包了。

2. 抓取點贊請求包

先開啟抖音 APP,再開啟 HttpCanary,開始抓取抖音資料。如下圖所示:

隨便找個視訊點贊,可以看到 HttpCanary 在不停的抓包。點開 HttpCanary,找帶有 /aweme/v1/commit 字樣的請求包:

3. 檢視 HTTP 請求包

點開請求包,可以看到,這其實是一個普通 HTTP 報文,紅線部分表示需要點讚的視訊 ID。

請求資訊中除了包含視訊 ID 外,還包含了你的身份資訊,這樣抖音才知道這個視訊是誰在點贊。

然後 APP 通過查看回復訊息,判斷點贊請求是否成功,如果成功,就可以將視訊邊上的小紅心點亮了。

通過點贊資料包,我們可以清楚看到,抖音所有瀏覽,點贊,評論,釋出視訊等,其實都是通過一個個 HTTP 完成的。

4. 親手做一個自動點贊爬蟲

講了那麼多 HTTP 請求原理,對於普通小白來說,我們怎樣才能做一個屬於自己的爬蟲呢?
其實很簡單,只要照貓畫虎,複製抖音 HTTP 請求,再原樣傳送就可以。
比如我想獲取推薦視訊,只要複製抖音推薦視訊的 HTTP 請求,再原樣傳送就可以拿到推薦資料了。
本節我們就以上文中的點贊資料為例,請大家親手做一個自動點讚的爬蟲。
讓我們先回到抖音,把剛才那個視訊的點贊取消,這樣才能看到爬蟲的最終效果。

複製資料包

進入 HttpCanary,找到剛才的點贊包,點選右上角分享按鈕,並選擇分享 cURL,如下圖所示:

貼上資料包

複製完成後,HttpCanary 會提示檢測到一個 cURL 請求,選擇執行即可。

第一個自動點贊爬蟲

可以看到,HttpCanary 傳送了一模一樣的點贊請求給抖音。點開查看回複數據,如果和上文的返回值一樣,就表明你的點贊爬蟲完成啦。

此時回到抖音 APP,檢視我喜歡的視訊,就可以看到剛才取消點讚的視訊又回來了。

5. 做一個更全能的爬蟲

通過剛才的練習,可以看到,只要我們能原樣複製抖音資料包,就可以拿到所有想要的資料。
例如,複製首頁視訊請求,我們就能拿到推薦視訊的標題,說明,點贊數量,評論數量等各種各樣的資料。
小夥伴們也許有疑問,我們怎樣才能蒐集全部抖音資料呢?鑑於目前抖音的火爆程度,想要全部收集完其實不太可能,也沒有必要。
聰明的小夥伴一定想到了,我們只要向抖音不停傳送上劃請求,就可以蒐集很多首頁推薦資料了。
如果你想做的更全能一些,還可以複製檢視單使用者視訊的請求,把所有熱門賬號的視訊資料都採集下來,就基本能替代第三方資料商了。
此外,你還可以修改 HTTP 請求,比如在首頁請求中修改不同的地理位置,就可以看到不同地區的推薦視訊和同城視訊了。

6. 抖音守護神

看到這裡,相信很多小夥伴已經躍躍欲試,準備大幹一番了。但是別急,程式設計師小哥哥們可不會輕易讓你們得逞。如果大家能隨意點贊評論的話,抖音生態系統早就被玩壞了。
那麼難點在哪裡呢?我們還是回到剛才的請求包上,仔細看下圖:

其實抖音每一次 HTTP 請求,都會帶上 x-khronos 和 x-gorgon 這兩個引數。抖音會在每次請求中校驗這兩個引數,如果校驗不通過,那麼請求就無效啦。
這兩個引數都幹了什麼呢?
第一個 x-khronos,是標識請求時間,採用 Unix 時間格式。比如 1586446631,表示離 1970 年 1 月 1 日 0 點 0 分過去 1586446631 秒,也就是 2020 年 4 月 9 日 23 點 37 分。如果抖音收到的請求時間離實際時間太遠,就知道這個請求已經失效。
第二個 x-gorgon,用來校驗請求合法性。如果你在請求中篡改了任何資料,比如篡改了點贊 ID,或者身份資訊 (Cookie),這個請求都會被抖音查出是偽造的,就能有效防止使用者亂刷資料了。
好奇寶寶們一定會問,這個 x-gorgon 是怎麼算出來的呢?理論上和法律上來說,只有抖音小哥哥們才知道。不過一般情況,都是通過請求時間,請求 URL 和 Cookie 等資訊綜合計算得出的(以上純屬瞎猜,請遵守當地法律)。

7. 總結

簡單一句話概括,只需要複製抖音 HTTP 請求,並完成 x-gorgon 校驗,理論上你就可以做一個全能的抖音爬蟲。不過再次提醒小夥伴們,一定要謹遵當地法律,也不要濫用爬蟲給平臺造成負擔。


TiToData:專業的短視訊、直播資料介面服務平臺,網址: TiToData

覆蓋主流平臺:抖音,快手,小紅書,TikTok,YouTube