主頁 > 資料庫 > 抖音爬蟲教程,一文講透原理

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

2020-12-14 06:56:33 資料庫

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


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

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/234189.html

標籤:大數據

上一篇:小紅書資料采集教程,從0到1 APP采集,Airtest

下一篇:Hadoop框架:Yarn基本結構和運行原理

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more