办公设备维修网
资讯中心 您所在的位置:网站首页 资讯中心 如何下载无水印的抖音视频?

如何下载无水印的抖音视频?

2024-06-30 00:27:17| 来源: 网络整理

各大短视频平台的做法几乎都是一样,有两个接口或两类型播放视频地址,就是无水印、带水印的视频,我们的目的很清楚,就是分析平台的页面源码,找出没有带水印的视频地址,然后下载保存下来,就这么直接,下面说说我是如何拿到无水印的视频地址的。

1、复制抖音“分享链接”。

随便打开一个抖音视频,例如:

2、将复制的地址在浏览器(我用的是谷歌)打开,你会看到一个重定向跳转地址。 3、按F12打开调试窗口,切换到“NETWORK”=》“Preview”标签栏,按F5刷新页面,点击我框框的这个地址。 4、展开请求的响应数据(json格式的),找到url_list节点,这个就是视频地址。 5、复制视频地址,然后将playwm修改为play,其他不变。

为什么要改为play呢?怎么知道的呢?这个大家可以复制抖音创作者的链接按照统一的方法,可以看到作品列表的地址,里面就是没有水印的地址,这里就不展开详细操作步骤了。

6、将修改后的地址再次打开,这个视频就是没有水印的视频,可以鼠标保存到本地。

注意,这样同样也做了一次重定向跳转,重定向地址才是最终的无水印视频地址。

整个流程就完了。

这样在PC上通过手工方式分析获取的视频,如果直接在手机上操作就做不到了。那么,程序上如何实现自动化获取并且保存呢?我想是程序员都应该知道这么实现,下面说说我的实现(简要代码C#):

1、输入分享链接,获取重定向地址。 /// /// 获取重定向URL/// /// private string GetRedirectUrl(string url){ HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.UserAgent = UserAgent; myRequest.Referer = referer; myRequest.AllowAutoRedirect = false; HttpWebResponse myResponse = null; try { myResponse = (HttpWebResponse)myRequest.GetResponse(); } catch (WebException ex) { if (ex.Message.Contains("302")) { myResponse = (HttpWebResponse)ex.Response; } } if (myResponse == null) { return null; } var redirectUrl = string.Empty; if (myResponse.Headers["Location"] != null) { redirectUrl = myResponse.Headers["Location"]; } return redirectUrl;} 2、从页面提取视频ID。 /// /// 获取无水印视频路径/// /// public override Result GetResult(){ if (!Uri.IsWellFormedUriString(this.Url, UriKind.Absolute)) return new Result("参数有误"); var redirectUrl = GetRedirectUrl(Url); if (string.IsNullOrWhiteSpace(redirectUrl)) return new Result("地址有误"); Regex regex = new Regex("share/video/(?.+?)/", RegexOptions.IgnoreCase); if (regex.IsMatch(redirectUrl)) { var itemId = regex.Match(redirectUrl).Groups["ItemID"].Value; var itemUrl = $"https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={itemId}"; WebClient client = new WebClient(); client.Headers[HttpRequestHeader.UserAgent] = UserAgent; client.Headers[HttpRequestHeader.Referer] = referer; var content = client.DownloadString(itemUrl); var json = (JObject)JsonConvert.DeserializeObject(content); var status = json["status_code"].Value(); if (status != 0) { return new Result("获取数据失败"); } else { var videoUrl = json.SelectToken("item_list[0].video.play_addr.url_list[0]"); if (videoUrl != null && !string.IsNullOrWhiteSpace((string)videoUrl)) { var playUrl = ((string)videoUrl).Replace("playwm", "play"); Result result = new Result(); result.Success = true; result.Message = "解析成功"; result.Data = $"{GetRedirectUrl(playUrl)}"; var resultUrl = GetRedirectUrl(playUrl); resultUrl = resultUrl.Replace("http:", "https:"); result.Data = $"{resultUrl}"; return result; } } } return new Result("解析失败");} 3、下载播放视频的页面内容(JSON)。 var itemId = regex.Match(redirectUrl).Groups["ItemID"].Value;var itemUrl = $"https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={itemId}";WebClient client = new WebClient();client.Headers[HttpRequestHeader.UserAgent] = UserAgent;client.Headers[HttpRequestHeader.Referer] = referer;var content = client.DownloadString(itemUrl); 4、分析提取视频播放链接,将有水印的地址转为无水印的地址。 var videoUrl = json.SelectToken("item_list[0].video.play_addr.url_list[0]");if (videoUrl != null && !string.IsNullOrWhiteSpace((string)videoUrl)){ var playUrl = ((string)videoUrl).Replace("playwm", "play");} 5、程序实现保存视频文件。

我这里是在小程序里面实现的,用到小程序的API函数:wx.saveVideoToPhotosAlbum,代码我就不贴了。

大家不一定用微信小程序实现客户端下载,因为小程序有很多限制,很不方便,可以自己写APP实现,这样下载就规避很多限制(主要是域名)。

如果大家有兴趣学习研究的可以联系我,或者搜索小程序“短视频去水印解析器工具”查看效果。



【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备16040606号-1