C# 短视频 无水印解析 原视频下载(超详细)
Posted 生产队的驴.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 短视频 无水印解析 原视频下载(超详细)相关的知识,希望对你有一定的参考价值。
效果图:
前言:
观看一些视频时,看见喜欢的想保存下来,但是又有一些烦人的水印,有一些还干脆不给保存,于是就有了本文章
接口:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids= 重定向到视频id
解析
分析链接:
3.30 ZZz:/ 艾特世界上最可爱的女孩子来看这束浪漫的玫瑰云。%治愈系风景 https://v.douyin.com/RvBhSpf/ 複制此链接,答開Dou音搜索,直接觀kan视pin!
提取其中的超链接
https://v.douyin.com/RvBhSpf/
很明显这是一个短链接,必会重定向
然后到浏览器访问分析
浏览器重定向:
什么是重定向:
就是就是一个链接的跳转,
例:访问a a带你跳到了b
就是一个简单的跳转链接
到浏览器访问后发现重定向到了一个长链接 然后又重定向到了一个 短链接 也就是 他的官网
显然这不是视频的地址
打开浏览器的开发者模式(F12) 然后重新打开
请求 URL: https://v.douyin.com/RvBhSpf/
请求方法: GET
状态代码: 302
远程地址:
183.61.241.231:443
引用站点策略: no-referrer-when-downgrade
可以看见状态码是 302 也就是链接被重定向过
重定向后链接:
这个才是视频的地址
https://www.iesdouyin.com/share/video/7037464280307879201/?region=CN&mid=6686486920349993735&u_code=0&did=MS4wLjABAAAA7VHXUN_GLEcQq9rPHBSE4KTW5OIytGIskoGOixzHi8C3gIXiWDdfthqbJKVfWB7v&iid=MS4wLjABAAAAuET8uthSOTT9S-qNNE1ymRKeemQk5yU9eINu1I9b-Uw&with_sec_did=1&titleType=title×tamp=1639190176&utm_campaign=client_share&app=aweme&utm_medium=ios&tt_from=copy&utm_source=copy
访问还是会跳到 他的官网
浏览器切换为 手机模式
然后重新访问
发现链接不在跳转
获取无水印地址:
这里发现了一个 可以直接保存的 无水印链接
经过几个视频的分析 发现是不规则链接 …分析不了 可能是我技术原因(新手)…
于是加放弃了这个方法
这里发现了一个接口 访问后 里就有一个无水印的链接
直接访问链接
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7037464280307879201
可以确定 里面包含了 视频作者的信息 和 使用的背景音乐 头像等…
但是数据 太乱了 使用JS解析
在线解析JS
一目了然
分析的数据:
作品信息:
发现 “item_list”: 里就是他的作品的信息
视频ID:
“aweme_id”:“7037464280307879201”,
视频文案:
“desc”:"艾特世界上最可爱的女孩子来看这束浪漫的玫瑰云。#治愈系风景 ",
还有其他信息等自行测试 …
无水印视频点地址:
发现这里是他的 背景音乐 打开就可以保存
这就是的无水印链接
这是视频封面链接
编写代码
重定向后地址:
HttpWebRequest beg = (HttpWebRequest)WebRequest.Create(richTextBox1.Text);
beg.Method = "GET";
beg.AllowAutoRedirect = false;
WebResponse response = beg.GetResponse();
string url = response.Headers["Location"];
重定向提取视频ID:
这就是视频的id 这个链接 就是短链接重定向后的
int n = url.IndexOf("video/");
url = url.Substring(n + 6, 19);
使用接口得到地址:
接口:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids= 重定向到视频id
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + url);
request.Method = "GET";
request.Timeout = 10000;
request.AllowAutoRedirect = false;
WebResponse begurl = (WebResponse)request.GetResponse();
StreamReader reader = new StreamReader(begurl.GetResponseStream(), Encoding.UTF8);
ss = reader.ReadToEnd();
分割视频地址:
ss = ss.Substring(ss.IndexOf("play_addr"), ss.Length - ss.IndexOf("play_addr"));
ss = ss.Substring(0, ss.IndexOf("]"));
ss = ss.Substring(ss.IndexOf("url_list"), ss.Length - ss.IndexOf("url_list"));
ss = ss.Substring(ss.IndexOf("["), ss.Length - ss.IndexOf("["));
ss = ss.Substring(2, ss.Length - 3);
ss = ss.Replace("playwm", "play");
预览视频:
DialogResult dr = MessageBox.Show("是否预览视频", "提示", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK)
try
Process.Start(ss);
catch
richTextBox1.Text = ss;
MessageBox.Show("调用浏览器失败,请手动查看");
保存视频:
try
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择要保存的路径";
sfd.InitialDirectory = @"C:\\Users\\SpringRain\\Desktop";
sfd.Filter = "视频文件|*.mp4|视频文件|*.avi|所有文件|*.*";
sfd.ShowDialog();
//获得保存文件的路径
string path = sfd.FileName;
HttpWebRequest beg = (HttpWebRequest)WebRequest.Create(ss);
HttpWebResponse fh = (HttpWebResponse)beg.GetResponse();
FileStream file = new FileStream(sfd.FileName, FileMode.Create);
fh.GetResponseStream().CopyTo(file);
catch
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 抖音下载
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
richTextBox1.Text = e.LinkText;
string ss;
private void button1_Click(object sender, EventArgs e)
try
HttpWebRequest beg = (HttpWebRequest)WebRequest.Create(richTextBox1.Text);
beg.Method = "GET";
beg.AllowAutoRedirect = false;
beg.Headers.Add("Cookie:");
beg.UserAgent = "ua";
WebResponse response = beg.GetResponse();
string url = response.Headers["Location"];
int n = url.IndexOf("video/");
url = url.Substring(n + 6, 19);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + url);
request.Method = "GET";
request.Accept = "*/*";
request.Timeout = 10000;
request.AllowAutoRedirect = false;
request.UserAgent = "ua";
WebResponse begurl = (WebResponse)request.GetResponse();
StreamReader reader = new StreamReader(begurl.GetResponseStream(), Encoding.UTF8);
ss = reader.ReadToEnd();
ss = ss.Substring(ss.IndexOf("play_addr"), ss.Length - ss.IndexOf("play_addr"));
ss = ss.Substring(0, ss.IndexOf("]"));
ss = ss.Substring(ss.IndexOf("url_list"), ss.Length - ss.IndexOf("url_list"));
ss = ss.Substring(ss.IndexOf("["), ss.Length - ss.IndexOf("["));
ss = ss.Substring(2, ss.Length - 3);
ss = ss.Replace("playwm", "play");
button2.Visible = true;
DialogResult dr = MessageBox.Show("是否预览视频", "提示", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK)
try
Process.Start(ss);
catch
richTextBox1.Text = ss;
MessageBox.Show("调用浏览器失败,请手动查看");
catch
MessageBox.Show("检测网络,或链接是否正确,不包含中文");
private void Form1_Load(object sender, EventArgs e)
private void button2_Click(object sender, EventArgs e)
try
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择要保存的路径";
sfd.InitialDirectory = @"C:\\Users\\SpringRain\\Desktop";
sfd.Filter = "视频文件|*.mp4|视频文件|*.avi|所有文件|*.*";
sfd.ShowDialog();
//获得保存文件的路径
string path = sfd.FileName;
HttpWebRequest beg = (HttpWebRequest)WebRequest.Create(ss);
HttpWebResponse fh = (HttpWebResponse)beg.GetResponse();
FileStream file = new FileStream(sfd.FileName, FileMode.Create);
fh.GetResponseStream().CopyTo(file);
catch
纯手打,点个赞呗~
以上是关于C# 短视频 无水印解析 原视频下载(超详细)的主要内容,如果未能解决你的问题,请参考以下文章