本帖最后由 jingyigg 于 2023-8-8 23:19 编辑
纯易语言源码实现,只用了精易模块
起源
有时候在抖音看到一些有趣的视频,想分享到VX好友或者群里,可以通过两个方式分享,一个是分享口令,比如
1.58 zGV:/ # 2021粤语好声音 # 乐队风暴 @布志綸Alan Po 你熟悉的歌来了!还是你记忆里的样子吗?# 乐队 # 广东dou知道 # 森林 # 粤语歌 https://v.douyin.com/iJrLpgSu/ 复制此链接,打开Dou音搜索,直接观看视频!
可是这种地址VX里面经常打不开,还要复制地址在浏览器或者抖音里面打开
如果想让别人直接看到视频,还要下载,麻烦的要死,而且还有水印,于是便在网上找到了一些去水印的接口,可是别人的接口又总时失效,于是在论坛搜了一圈,看看有没有办法自己写一个
可是搜到的几个,要不就是分享的python代码,要不就是分享php代码
找到一个是用易语言的(抖音去水印,非接口请求,直接获取下载)可是这个要引用webview2模块,会在运行目录释放一个22m的文件夹。
还找到一个(抖音去原创源码),不过看到评论说缺少dll,我就没有下载去试了。
自己做
既然找不到现成的,那就自己抓。
通过抓包工具,发现其实视频的播放地址,音乐,封面,包括评论等很多信息的网址都放在下面这个地址的https://www.douyin.com/video/7045581659911032072?previous_page=app_code_link
本来因为很简单写个取出中间文本就能快速达到目的的,可是写进易语言里,发现总是失败,经过多次测试,发现原来请求cookies中一定要有__ac_nonce和__ac_signature才能正确返回内容的,不然会返回一个reload结尾的页面window.location.reload();</script></html>
__ac_nonce还是挺容易获得的,第一次访问抖音网站就会返回
Set-Cookie: __ac_nonce=064d24ddd003b1db84816; Path=/; Max-Age=1800
可是__ac_signature是第一次访问网站,返回的js生成的
[JavaScript] 纯文本查看 复制代码 <script>function _f1(e,t){if("string"!=typeof t)return;var o,n=e+"=",r=t.split(/[;&]/);for(var e=0;e<r.length;e++){for(o=r[e];" "===o.charAt(0);)o=o.substring(1,o.length);if(0===o.indexOf(n))return o.substring(n.length,o.length)}return""}function _f2(e){return _f1(e,document.cookie)}function _f3(e,t,o){try{o&&(window.sessionStorage&&window.sessionStorage.setItem(e,t),window.localStorage&&window.localStorage.setItem(e,t));var n=31536e6;document.cookie=e+"=; expires=Mon, 20 Sep 1970 00:00:00 UTC; path=/;",document.cookie=e+"="+t+"; expires="+new Date((new Date).getTime()+n).toGMTString()+"; path=/;"}catch(e){}}window.byted_acrawler.init({aid:99999999,dfp:0});var __ac_nonce=_f2("__ac_nonce"),__ac_signature=window.byted_acrawler.sign("",__ac_nonce);_f3("__ac_signature",__ac_signature),_f3("__ac_referer",document.referrer||"__ac_blank",!0);try{sessionStorage.setItem("__ac_ns",performance.timing.navigationStart)}catch(e){};window.location.reload();</script></
猜测应该是下面这条语句生成的,
__ac_signature=window.byted_acrawler.sign("",__ac_nonce);
但是我真的不会在易语言里面引用js,用精易网页助手测试也是出错的,又取搜了很多教程,也是看不到,本来想放弃,投降用其他方法实现,放在服务器里也安装了php,最多请求一下,
然后回去下载
PHP抖音去水印接口开源
这个php源码,发现他里面的__ac_nonce和__ac_signature两个cookies竟然是写死的
测试了一下,在我的服务器也是能用的,就不知道有效期是多久,他的帖子是四天前发的,怕到时候这个cookies失效又用不了,然后继续去找寻__ac_signature的生成方法
在GitHub上找到一个分享,发现他里面的也是写死的,而且代码是半年前提交的,我把他的cookies拿去测试,发现现在还能用
那这样就不管了,直接用浏览器抓包生成一个新的cookies,然后很快就达成了自己的目的,顺利获取视频的直连地址,封面和音乐
其实这里面有很多地址的,我就选取1080p这个分辨率的地址,大家可以各取所需,里面还有评论人员,评论内容各种信息
不过我还是会担心cookies会失效,希望有懂js的人研究下怎么生成ac_signature,我在论坛也搜到一篇抖音__ac_signature值怎么取?,希望有人能分享一下
运用
虽然获取了视频的实际地址,而且这个地址分享到VX是可以直接播放的,甚至安卓手机还可以直接下载,可是这个网址太长了,别人看到会不会不敢点
这时候可以分享口令丢给我之前建的公众号和企业VX机qi人,
通过推送图文信息的功能,可以生成一个带标题,简介的缩略图的链接,不点进去,直接转发,去掉别的聊天界面也是能保持这样的
转到群也是可以正常显示的
播放也是可以正常播放的
完成
精易论坛真是个宝藏,在这学到很多东西,第一次分享源码和教程,对今天的研究做个记录
获取抖音去水印视频地址、音乐、封面、标题.e
(941.73 KB, 下载次数: 369)
|