以抖音作者页为例: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的生成位置。
验证找到的地方是否正确:
在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字段。