C#抖音地址解析获取水印地址

源码下载:DEMO下载

首先我们可以看到手机上的APP播放的视频是没有水印的,如下:

这样我们可以用Charles之类的工具抓取该地址,主要观看他的前缀地址部分(由于配置比较麻烦,大家可以自行配置,参看https://www.jianshu.com/p/c422344798c5,手机上的应用都可以抓取)

会发现播放地址是这样的:https://aweme.snssdk.com/aweme/v1/play/........

第二步:点击分享,复制地址,得到链接 https://v.douyin.com/7SUFkb/

第三步:我们使用谷歌浏览器访问(方便调试)

第四步:我们右键查看源码,会发现下图的地址

第五步:我们切换浏览器为手机模式,然后在看源码变化(我们会拿到第一步播放地址的关键部分参数),这一步只是为了验证PC浏览器模式和手机浏览模式的源码是不一样的。

第六步:在一次验证,我们访问第四步拿到地址(https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc562f1d6ac08e2f68576e6a34ac31a6790e5502ca4913dc07a83eabc3d41484e8ac7f43878815a424e99ceca999c77d5265&line=0),是可以得到视频源的,但是有水印,如下:

第七步:对比第一步(手机)和第四步(PC)拿到的地址,发现其地址playwm和play的变化,然后替换一下访问 https://aweme.snssdk.com/aweme/v1/play/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc562f1d6ac08e2f68576e6a34ac31a6790e5502ca4913dc07a83eabc3d41484e8ac7f43878815a424e99ceca999c77d5265&line=0

得到无水印地址(提示:经验证这里得用浏览器的手机模式,pc模式无法访问)

经过上面几步,从第二步开始,抖音地址就经过了几次重定向才拿到真实的数据源地址

下面是C#实现的代码:

 /// <summary>
        /// 抖音
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public string DouYin(string url)
        {
            var webHtml = VideoHelper.GetWebContent(url, 0);
            var webArr1 = Regex.Split(webHtml, "playAddr: \"", RegexOptions.IgnoreCase);
            var webArr2 = Regex.Split(webArr1[1], "\",", RegexOptions.IgnoreCase);
            var playAddr = webArr2[0].Replace("playwm", "play");
            var payUrl = VideoHelper.GetMapUrl(playAddr, 1);
            return payUrl;
        }
/// <summary>
        /// 获取页面html
        /// </summary>
        /// <param name="Url">页面路径</param>
        /// <param name="type">浏览器类型(0PC/1手机)</param>
        /// <returns></returns>
        public static string GetWebContent(string Url, int type = 0)
        {
            string strResult = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                //声明一个HttpWebRequest请求
                request.Method = "POST";
                var UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2";
                if (type > 0)
                {//模拟手机浏览器
                    UserAgent = "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";
                }
                request.UserAgent = UserAgent;

                request.ContentType = "application/x-www-form-urlencoded";
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                strResult = sr.ReadToEnd();
                response.Close();
            }
            catch
            {
                Console.WriteLine("出错");
            }
            return strResult;
        }

        /// <summary>
        /// 获取重定向地址
        /// </summary>
        /// <param name="Url">原地址</param>
        /// <param name="type">浏览器类型(0PC/1手机)</param>
        /// <returns></returns>
        public static string GetMapUrl(string Url, int type = 0)
        {
            string strResult = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "POST";
                var UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2";
                if (type > 0)
                {//模拟手机浏览器
                    UserAgent = "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";
                }
                request.UserAgent = UserAgent;
                request.ContentType = "application/x-www-form-urlencoded";
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                using (WebResponse response = request.GetResponse())
                {
                    strResult = response.Headers["Location"];      //重定向地址
                }

            }
            catch
            {
                Console.WriteLine("出错");
            }
            return strResult;
        }

源码下载:DEMO下载

原文地址:https://www.cnblogs.com/boyzi/p/12560622.html

时间: 2024-11-13 09:00:38

C#抖音地址解析获取水印地址的相关文章

都说抖音是毒品软件?我用Python爬取了里面的小视频!

简介 抖音,是一款可以拍短视频的音乐创意短视频社交软件,该软件于2016年9月上线,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品.此APP已在Android各大应用商店和APP Store均有上线. 今天咱们就用Python爬取抖音视频 获得视频播放地址 查询的用户ID 视频名字列表 视频链接列表 用户昵称 获得带水印的视频播放地址 video_url:带水印的视频播放地址 download_url: 带水印的视频下载地址 视频下载

网页抖音去水印源码

源码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device

抖音群控,批量操作100个手机通讯录自动关注

欣之络抖音群控系统,可以一对多集中抖音账号批量群控管理,常见组合就是1台电脑搭配100个手机抖音APP操作.在欣之络抖音群控系统的脚本功能按钮作用下,输入营销指令点击后批量操作100个手机的抖音账号自动操作,节省人力.提高效率完成抖音营销任务,比如抖音营销引流涨粉.欣之络抖音群控系统的自动引流功能主要有:附近人(同城)关注.抖音账号搜索.好友推荐关注.通讯录好友关注等.今天主要来分析下欣之络抖音群控系统的「通讯录好友」自动关注引流的操作.抖音群控通讯录关注欣之络抖音群控系统,可一键批量操作100

如何下载无水印的快手 抖音 火山视频?

鸡哥今天就分享一个可以下载各大小视频平台的一个软件工具(快手 抖音 火山)并且高清无水印 ,有了这个的话  一些有想法的小伙伴 也能做个伪原创自媒体了  配合着我最近研究的便宜代刷网 刷点儿评论和双击啥的 应该能上个热门赚点粉丝啥的 也是一个不错的选择 ...没错 鸡哥放弃论坛了,改做代刷了...贫穷使我改行 . 没错,我也觉得这个女的太难看了,不过没办法,鸡哥随手一截而已.. 没办法放链接了,不然又认为我发广告了.想要下载去好基地. 原文地址:https://www.cnblogs.com/h

抖音无水印解析PHP源码

仅限学习使用 输出为标准的格式化json数据 ajax直接调用即可 原生的ajax的调用方法看底部 <?php $url = @$_GET['url']; if (strstr($url,"douyin.com")) { //获取301跳转真实地址 function getrealurl($url){ $header = get_headers($url,1); if (strpos($header[0],'301') || strpos($header[0],'302')) {

抖音获取视频点赞数、播放数、获取用户粉丝列表

一.配置 配置如图所示,非常简单!只要去抖音开放平台开通帐号,开通权限,即可获得图片所示的各项参数,填进去即可. 二.功能已实现 OAuth 2.0授权 获取用户公开信息 粉丝列表 关注列表 查询创作者粉丝数据 查询授权账号视频数据 查询指定视频数据 获取视频评论 三.调用方法 安装好插件,并在插件设置里设置了配置信息,即可使用插件 代码里调用插件方式如下: 1.2.3. $dyconfig = hook_one("get_douyin_config"); $AuthInfo = \D

最全的抖音数据信息获取

最近开发了一套抖音采集程序,目前提供如下接口. 1.抖音综合搜索数据信息接口 2.抖音视频搜索数据信息接口 3.抖音用户信息搜索数据信息接口 4.获取抖音首页推荐列表数据信息接口 5获取抖音对应城市的推荐列表数据信息接口 6.获取抖音用户信息数据信息接口 7.获取抖音用户作品(抖音用户视频)数据信息接口 8.获取抖音用户动态数据信息接口 9.获取抖音用户关注用户列表数据信息接口 注意:关注列表请求太频繁会导致不返回数据 10.获取抖音用户粉丝列表数据信息接口 11.获取抖音评论列表数据信息接口

抖音短视频去水印下载方法

前言 抖音短视频APP里虽然有保存视频的按钮,但这种方式保存的视频右下角有抖音的水印,并且这种方式不适用于电脑. 所以,写这篇文章来分享如何下载没有水印的抖音视频到本地,此方法适用于电脑和手机,且不需要安装任何软件和插件. 简单的下载方法 1. 去抖音APP里点开某个视频,点击分享按钮,在分享弹框中点击复制链接或通过分享到微信QQ等获取分享链接.如果是朋友分享给你的链接,直接复制那个分享链接即可. 2. 然后在浏览器(电脑和手机上都可以)中打开我们需要用到的在线抖音短视频解析下载工具:http:

百万点赞怎么来?Python批量制作抖音的卡点视频原来这么简单!

1 目 标 场 景 玩抖音的朋友都应该知道,最近「卡点视频」简直不要太火.抖音上很多大神也出了剪辑各种卡点视频的教程. 实际上,利用很多手机 APP 或者 PR.FCPX 软件也可以制作卡点视频,但是剪辑效率都太慢.如果想实现一篮子剪辑素材,通过运行一段代码,得到一个卡点视频,这种感觉不要太爽. 本篇文章的目的是利用 Python 从一篮子素材中快速地剪辑卡点小视频这一操作. 2 准 备 工 作 首先,对视频的剪辑需要用到「opencv」库,通过 pip3 安装到虚拟环境中. # opencv