前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10行代码完成抖音视频去水印

10行代码完成抖音视频去水印

作者头像
Snine
发布2022-02-11 09:19:06
2.6K0
发布2022-02-11 09:19:06
举报
文章被收录于专栏:前端开发笔录前端开发笔录

工具地址

工具地址 博客 = 百宝箱 = 抖音去水印

写在前面

关于为什么要写这个工具呢、不难发现、在我的不少博客后面出现了一个播放按钮、就是配乐了、个人一直比较喜欢一些好听语录或者、励志的、正能量的、语句优美的、我都想收藏下来、但是呢日常刷抖音刷到的我只能点击放入收藏、并不能拿到其真正的视频、或者背景音乐。于是我想能不能拿到他的真实地址、这样就能方便自己管理了、于是就有了这个小工具。

实现思路

这一类的东西呢实际都很简单、大多通过抓包拿到接口就可以做一个二次封装就可以实现了、所以我们要做的就是实现以下几步。

  • 首先我们先看看如何访问他的视频、在分享的有下家、有一个复制链接功能、复制后我们发现这是一个短链接、例如https://v.douyin.com/L2VvNXV/、很明显我们还没有什么有用的信息、再把这个地址放在地址栏打开、我们就发现这个地址变了、变成了https://www.douyin.com/video/7054761673470594318、这么一看一下就清晰了、通常后面的这一串数字ID不出意外就是视频Id、那么很好、我们轻松拿到了视频ID。
  • 但是呢、这个地址打开是一个html、很明显从这里我们得不到什么有用的信息、但是它既然可以渲染html、那么他一定有接口去请求到了真实数据、由于是网页就可以看到、我们都可以不用抓包、直接打开控制台就可以看到所有请求、我们只需要依次去查找是哪条接口使用了这个ID即可、在通过几次测试后、找到了https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7054761673470594318这条接口、很明显、这个id就是接口所需要的id、然后我们直接访问看看

我们拿到了非常多的信息、这里就不一一概括了、有兴趣点击上面地址就可以查看了、所以现在我们完成了第二步、通过id拿到接口的信息。

  • 第三步就很简单了、我们只需要组装数据拿到我们所需要的那几个数据就好、通常我们需要、无水印的视频地址、音频地址、文案地址、我只需要这三不、经过测试、很快找到了音频地址和文案地址、下面代码里可以看出在什么位置、但是我拿到的视频地址依然是有水印的、例如上面的这个https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fg10000c7jom8rc77u2fqt1r4a0&ratio=720p&line=0、通过新窗口打开我发现 依然是有水印的、一般不管是图片呢还是视频呢或者文件呢、其实大多都是命名有一定变化也就是路径稍有不同、例如图片的一般缩略图和真实图片的地址很多都是一点点路径的区别、我们这里发现这个视频地址貌似没什么很大的异常、只能慢慢测试、这里呢发现里面有个wm、wm呢就是watermark 水印的缩写、我们去掉之后发现果然这就是没有水印的视频、到此我们就统计出来了我们所需要的全部信息。

NodeJs代码实现

代码语言:javascript
复制
/**
     * @desc 抖音视频去水印 拿无水印视频 音频
     * @param params {url: 视频地址}
     * @returns
     */
    async douyin(params) {
        const { url } = params;
        const longUrl: any = await axios.get(url);
        const videoId = longUrl.request.path.substr(13, 19);
        const api = `https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=${videoId}`;
        const res = await axios.get(api);
        const { music, video, share_info } = res.data.item_list[0];
        const mp3 = music.play_url.uri;
        const mp4 = video.play_addr.url_list[0].replace('playwm', 'play');
        const title = share_info.share_title;
        return { mp3, mp4, title };
    }

实现步骤

  • 通过短链接重定向到长链接到真实的视频地址拿到视频的唯一标识ID
  • 通过网页抓包拿到请求视频信息的接口、通过ID拿到完整视频信息
  • 通过去掉wm拿到无水印视频地址
  • 把所有数据进行组装拿到所有我们需要的信息
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 01 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具地址
  • 写在前面
  • 实现思路
  • NodeJs代码实现
  • 实现步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档