
抖音用戶(hù)視頻列表接口分析
1、從抖音 APP 分享個(gè)人信息,復(fù)制鏈接,獲得個(gè)人主頁(yè)地址,示例:
2、使用 Chrome 抓包,獲取視頻列表接口的請(qǐng)求信息

用戶(hù)視頻列表

接口請(qǐng)求詳情
參數(shù)分析:
- user_id: 用戶(hù)ID,可從 HTML 中提取
- sec_uid: 空
- count: 視頻數(shù)量
- max_cursor: 視頻索引位置,用于翻頁(yè)
- aid: 固定值
1128 - _signature: 實(shí)時(shí)簽名值,由簽名算法計(jì)算
- dytk: 用戶(hù) token,可從 HTML 中提取
3、定位 _signature 簽名算法

定位 signature

定位 _bytedAcrawler

定位 douyin_falcon:node_modules/byted-acrawler/dist/runtime

定位 __M
4、分析簽名算法的執(zhí)行邏輯
- ① 定義
__M對(duì)象,及其define和require函數(shù) - ② 執(zhí)行
__M.define("douyin_falcon:node_modules/byted-acrawler/dist/runtime......"這段代碼 - ③ 執(zhí)行
_bytedAcrawler = require("douyin_falcon:node_modules/byted-acrawler/dist/runtime") - ④ 計(jì)算簽名值
_signature = _bytedAcrawler.sign(user_id)
使用 NodeJS 提供簽名計(jì)算服務(wù)
分析完簽名算法的調(diào)用過(guò)程,就可以搭建 NodeJS 工程來(lái)生成簽名了,快去試試吧!
中途遇到的問(wèn)題
1、userAgent 屬性不存在
Debug 分析抖音 API 請(qǐng)求流程,userAgent 屬性在 navigator 對(duì)象中,所以需要定義全局對(duì)象:
global.navigator = {
userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
};

2、document 對(duì)象不存在
- 解決方式一:刪除 document 相關(guān)代碼
- 解決方式二:https://stackoverflow.com/questions/32126003/node-js-document-is-not-defined