抖音 Web 版簽名算法 _signature 解密

抖音用戶(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ì)象,及其 definerequire 函數(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ì)象不存在

相關(guān)資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容