先看演示,直接复制抖音视频到Dojitter水印小程序即可下载无水印视频。本示例界面主要是通过node开发的,但是分析思路是一样的。.如何获取无水印视频的下载地址?1.复制抖音5.15bAT的链接:/复制打开抖音看【程序员Jack的作品】世界上最反人类的设计,为什么键盘上的字母不符合AB...https://3,呼唤抖音获取视频信息的接口,将获取的字符串传给获取视频信息的接口https://www.iesdouyin.com/web...4.将返回的视频地址中的playwm改成播放即可得到无水印视频https把://aweme.snssdk.com/awem...改成https://aweme.snssdk.com/awem...5.修改后的url还是会被重定向,重定向的url就是最终的url。水印视频下载地址。那么开发过程中有哪些难点呢?一、Node如何模拟http请求获取信息通过request模拟http请求1.1安装和引入依赖npminstallrequest@2.88.2--saveconstrequest=require('request');1.2发起http请求staticgetNoWatermarkUrl(itemId){returnnewPromise((resolve,reject)=>{constapi=`${videoInfoApi}${itemId}`;request.get(api,async(err,res)=>{if(JSON.parse(res.body).item_list.length){constnoWatermarkUrl=JSON.parse(res.body).item_list[0].video.play_addr.url_list[0];constlinkStr=noWatermarkUrl.replace('playwm','play');constlink=awaitthis.getRealNoWatermarkLink(linkStr);resolve({link,originLink:linkStr});}else{解决('');}})});}2.Node如何获取重定向的url?使用puppeteer抓取最终无水印的重定向视频下载地址2.1安装和引入依赖npminstallpuppeteer@2.1.1--saveconstpuppeteer=require('puppeteer');2.2使用puppeteer获取urlgetNoWatermarkVideoLink(linkStr){returnnewPromise(async(resolve,reject)=>{constbrowser=awaitpuppeteer.launch({headless:false,//部署到服务器时需要设置为true//executablePath:'....',//部署到服务器时,需要配置chrome在服务器的安装位置slowMo:30,args:['--no-sandbox','--disable-setuid-sandbox']});constpage=awaitbrowser.newPage();awaitpage.goto(linkStr);constlink=page.url();awaitbrowser.close();resolve(link);});}3、如何配置合法域名微信小程序中的downloadFile。微信小程序的downloadFile合法域名配置不可能把所有域名都加进去。所以考虑是否可以使用自己的服务器作为中转站?方案是可行的,但是会增加个人开发的成本,所以pass就丢了。多次请求获取抖音视频信息界面发现获取到的无水印地址会发生变化,于是想到了一个解决方案,只需要配置一部分合法域名,通过多次请求直到匹配到合法域名配置中的域名,可以返回给前端下载代码实现:constlinkArr=['https://v26-cold.douyinvod.com','https://v83-016.douyinvod.com','https://v1-cold1.douyinvod.com','https://v5-g.douyinvod.com','https://v95-p.douyinvod.com','https://v95-p-cold.douyinvod.com','https://v5-coldb.douyinvod.com','https://v9.douyinvod.com','https://v6-cold.douyinvod.com','https://v3-cold1.douyinvod.com','https://v3-cold2.douyinvod.co','https://v27-cold.douyinvod.com','https://v95-zj-cold.douyinvod.com','https://v95-zj.douyinvod.com',...]这里我只配置了40多个二级域名//重置域名为合法域名do{linkResult=awaitDouyinDelWatermark.getNoWatermarkUrl(itemId);domainArr=linkResult.link.split('com/');域=domainArr.length?domainArr[0]+'com':'';结果=linkArr.indexOf(域)>-1;数数-;//控制循环次数以避免无限循环}while(count>0&&!result);如果(链接结果。链接&&结果){计数=15;thrownewglobal.errs.Success('成功移除水印',0,{link:linkResult.link,originLink:linkResult.originLink})}elseif(linkResult.link&&!result){count=15;thrownewglobal.errs.NotFound('此链接无法去除水印');}else{count=15;thrownewglobal.errs.NotFound('未获取有效资源');}以上就是视频去水印小程序开发的全过程,希望对大家有所帮助。
