以抖音作者頁爲例:https://www.iesdouyin.com/share/user/xxx
從接口可以得到作者發佈的視頻列表:
https://www.iesdouyin.com/web/api/v2/aweme/post/?user_id=xxx&sec_uid=&count=21&max_cursor=0&aid=1128&_signature=etVQHxATJIUJI1pwOqp2dnrVUA&dytk=dd51884f959fa649020e74cbd09044e0
參數裏dytk從作者頁抽取得到,_signature參數爲js生成,打斷點找到_signature的生成位置
nonce就是作者id,找到_bytedAcrawler的生成位置。
再找__M的生成位置
驗證找到的地方是否正確:
在console中調用對應的生成方法
dycs = __M.require("douyin_falcon:node_modules/byted-acrawler/dist/runtime") ;
signc = dycs.sign(作者id)
這時候會發現signc與接口中的_signature字段一致。
因此講__M生成部分的代碼define sign那一塊的代碼都貼到一個html裏。並預先寫入一個作者id打印出對應的signature。如果直接打開html會發現與實際的_signature有出入,因此可以好好看看有沒有哪塊js給window對象賦值了。
最後html加入該參數就能拿到正確的_signature字段。