抖音网页签名遇到的坑

爱必应

最近朋友需要采集抖音的无水印视频,就研究了下。
首先搜到的是抖音的去水印,其实原理就是利用抖音的生成的设备信息,加上调用接口(6.24目前在用的‘https://aweme.snssdk.com/aweme/v1/aweme/detail/’)和视频的资源ID(aweme_id)拼接后获取到视频的详细信息,包含作者,长视频等!这里的关键是生成设备信息,笨的方法是批量新建模拟器用fiddle抓取任意的一条信息,截取设备信息,此设备信息解析一定的数量后会当天失效(第二条又可以用了)

抖音网页签名遇到的坑-图1

截取拼接后:https://aweme.snssdk.com/aweme/v1/aweme/detail/?os_api=22&device_type=oppo+r7&device_platform=android&ssmix=a&iid=75725572739&manifest_version_code=251&dpi=320&uuid=865166028835372&version_code=251&app_name=aweme&version_name=2.5.1&openudid=b6c64a4f6ca0c92c&device_id=68336181433&resolution=720*1280&os_version=5.1.1&language=zh&device_brand=oppo&ac=mobile&update_version_code=2512&aid=1128&channel=wandoujia&_rticket=1561348580000&ts=1561348580&as=a18554d1fc8c7df7904355&cp=49c3d25ec1011275e1IcQg&mas=018f692153f0b3b38b6e8c6c7dcc489c6aacaccc2c0c9cec6626ec&aweme_id=
其中ts为当前时间戳(10位),_rticket为13位的时间戳(我用ts+随机3位!),aweme_id为视频的资源ID。至于资源ID如何获取,访问分享的链接就会获取到,这里的坑是必须要加协议头的,不加返回错误!
这样就可以获取到视频的详细信息,至于怎么用,就看自己需要什么了!(请忽略本人用易开发的,虽然我现在主用go开发,习惯写界面用这个了)

抖音网页签名遇到的坑-图2

下面说下获取主页所有的视频:
这里其实卡了好几天,可能是我学艺不精吧!
刚开始时,我找到了一个别人的接口,可以直接用UID进行获取,但是我担心用软件批量采集,接口会承受不了,果然软件写好后有一天正在调试,发现接口不返回了,心想着靠人不如靠自己,就在网上找网页的签名,看了许多,发现代码都差不多,于是把js自己处理下直接生成签名,写入html浏览器加载调用。经测试,签名大概只有五分之一的成功率,然后我又查资料(至于自己分析,我前端比较菜,知道自己的水平就略过了),对比发现我目前在用js头部缺少tac的参数,抱着试试的想法,截取了tac放入js,果然,生成的签名好用了。
这时我想把js抽出,放入易调用,一开始想直接调用js传参的方式,试了很久发现js下面那段加密后比较坑,不能识别,放弃了此想法!
又想直接写出html,加载浏览器执行后输入,测试了n多的浏览器,最终没有成功!
这时之久继续查资料,看到别人用nodejs加载,就看看node的语法,加载成功了,但是tac没法进行辅助,自动赋值后字符串用的双引号和tac内的数据冲突,不加tac又不好使,忙活了许久,放弃了node(可能本人水平菜,不会用node,大佬勿介意)
最后想到了python,想起了之前好看的python自动化文章,就尝试用python获取tac,生成了html,然后调用谷歌进行加载,最终获取到了签名
这里的大坑是他喵的,生成签名的浏览器和你用签名获取主页信息的ua必须一致,不一致最终签名也会无效,一开始没发现这问题,生成签名后复制走怎么都不对,用浏览器正常,后来怀疑是ua的鬼,果然,固定了ua后一切OK,返回正常!
以上是我个人分析抖音首页视频的教程,踩过些许坑,分享给有需要的朋友,如有违规请删除!

抖音网页签名遇到的坑-图3

原文链接:,转发请注明来源!

发表评论