欢迎光临
我们一直在努力

这两天开发抖音去水印小程序遇到的坑以及心得总结

我每天刷抖音几小时,平时看到喜欢的视频会下载到手机分享或者收藏。下载视频再分享微信,别人打开也方便。

但是有时会发现某些视频不让下载,以前通过抓包下载,最近抓包也抓不到(可能我技术比较菜)。

前几天在掘金看到一篇分析抖音去水印原理的文章,试了一下,不仅能下载无水印,抖音默认无法下载的视频也可以通过这个方法下载。

大体原理是:
1.抖音 App 里获取分享的短链接
2.浏览器打开短链接会 302 跳转长链接,长链接参数含有视频 id
3.抖音网页会根据这个 id 通过 api 请求得到一个 json 串,视频文件的地址就在 json 里,但是这个播放依然是有水印的,需要把链接里的 playwm 改成 play,得到无水印的视频链接 url 。

通过上面 3 个步骤,就可以做出下载抖音无水印的小程序。

于是开干,敲代码。

第一步要从抖音分享的短连接获取 302 后的长链接,研究了一遍小程序的 api,没有任何一个 api 支持获取 302 跳转链接的功能,于是只好通过服务器端获取(大家如果知道小程序前端如何获取 302 链接请指点一下),用户在小程序输入短链接,前端把短连接给服务器,服务器走一遍上述 123 步骤,返回最终的无水印链接 url 给小程序前端。

这里第一个坑来了,调用小程序的 downloadFile 接口去下载视频文件,直接报错说后台没有配置安全域名无法下载,仔细研究了一下这个播放链接,它是抖音公司的一个二级域名,而且二级域名一直在变,或许有几百种变化,小程序后台不可能把所有子域名都添加进去,那只好下载文件的链接也从自己服务器中转了。

于是在我的香港服务器又做了个接口 /?url=视频链接 ,其实就是单个 php 文件,代码如下:

<?php header('Content-Type: application/force-download;'); header("Content-Type: video/mp4"); header('Content-Disposition: attachment; filename="'.date('YmdHis').'.mp4"'); $url = urldecode($_GET['url']); if ($url) { header('Content-Length: ' . get_headers($url, true)['Content-Length']); readfile($url); } ?>

这个接口暂时只有 url 参数,没做加密,改天有空我得把加密补上,不然暴露出去变成公开的中转站了。。

至此,该采的坑都踩了,小程序调试功能完美。接下去是上线。提交前我一直担心这类功能审核不通过,但是良心的腾讯竟然让它上线了。。

同时我还做了个网页版,跟小程序的区别是,小程序直接下载视频到相册,网页版是给出无水印链接供用户自己下载。

这里要感谢华为云。。中转用到的香港服务器是之前参加华为云活动免费得到的。。8 核 16G,300M 带宽,8T 流量包。。很良心

文章里我就不放小程序的二维码和网页版链接了,以免被说广告。如果回帖里有人说要体验,我再 append 二维码出来。。

赞(3) 打赏
未经允许不得转载:砸漏网 » 这两天开发抖音去水印小程序遇到的坑以及心得总结
Excel教程 | 宝贝名 | 编程教程 | 如何养猫

评论 抢沙发

评论前必须登录!

 

APP开发 更专业 更方便

AD赞助联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏