博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[搜片神器]迅雷云播视频地址获取代码分享[自己动手丰衣足食]
阅读量:5064 次
发布时间:2019-06-12

本文共 11528 字,大约阅读时间需要 38 分钟。

 DHT抓取程序开源地址:

数据处理程序开源地址:

.

--------------------------------------------------------------------------------------------------------------------

 在DHT网络获取的网络数据后,需要进行播放功能,目前只有迅雷云播放功能比较强大,其它各类小网站都是从迅雷网站进行数据的抓取分析功能,

接下来我们就主要介绍如果从迅雷网站简单的抓取视频播放地址来进行播放功能.

1.先看软件功能实现界面:                                                                                                                                              

 在获取网址后我们可以用播放器来进行播放,百度影音和VLC播放器可以查看,也可以进行拖放,比起网上很多网站都不支持拖放功能好了很多,

测试了迅雷看看不行,QQ影音也不行,其它的播放器没有测试.

 可以进行拖动播放.

VLC media player播放界面:

 2.介绍如何进行迅雷网站登录抓取视频流程:                                                                                                                   

 1)主要先通过抓包来分析登录流程,第一包主要分析是否有验证码的问题http://login.xunlei.com/check?u= 

通过分析返回的Header数据,如果里面有check_result=1说明需要进行验证码的处理工作.

///         /// 输入用户名后就需要检测是否输入验证码        ///         private void txtName_Leave(object sender, EventArgs e)        {            string url = "http://login.xunlei.com/check?u=" + txtName.Text + "&t=" + Convert.ToString(DateTime.Now.ToUniversalTime());            string hash1 = Http.GetHtmlHeader(url, cookie);            int temp1 = hash1.IndexOf("check_result=");            string logintype = hash1.Substring(temp1 + 13, 1);            if (logintype == "1")            {                labelVery.Visible = true;                vefycodTxt.Visible = true;                vefycodpicbox.Visible = true;                vefycodTxt.Text = "";                string codeimageurl = string.Format("http://verify2.xunlei.com/image?cachetime={0}", Convert.ToString(UNIX_TIMESTAMP(DateTime.Now)));                Stream getStream = Http.GetStream(codeimageurl, cookie);                vefycodpicbox.Image = Image.FromStream(getStream);            }            else            {                vefycodTxt.Text = GetBetween(hash1, "check_result=0:", ";");                labelVery.Visible = false;                vefycodTxt.Visible = false;                vefycodpicbox.Visible = false;            }        }
输入用户名后就需要检测是否输入验证码

 

2)如果有验证码,处理

string codeimageurl = string.Format("http://verify2.xunlei.com/image?cachetime={0}", Convert.ToString(UNIX_TIMESTAMP(DateTime.Now)));                Stream getStream = Http.GetStream(codeimageurl, cookie);                vefycodpicbox.Image = Image.FromStream(getStream);
显示验证码

3)进行密码加密

//生成密码字串                string password = getMd5Hash2(getMd5Hash2(getMd5Hash2(txtPass.Text)) + vefycodTxt.Text.ToUpper());          ///          /// md5加密         ///          ///          /// 
public static string getMd5Hash2(string input) { byte[] buffer = MD5.Create().ComputeHash(Encoding.Default.GetBytes(input)); StringBuilder builder = new StringBuilder(); for (int i = 0; i < buffer.Length; i++) { builder.Append(buffer[i].ToString("x2")); } return builder.ToString(); }
生成密码字串

4)进行登录验证

string postData = "u=" + txtName.Text + "&p=" + password + "&verifycode=" + vefycodTxt.Text + "&login_enable=1&login_hour=720";                string res1 = Http.GetHtmlPostHeader("http://login.xunlei.com/sec2login/", postData, cookie);                m_userid = GetBetween(res1, "userid=", ";");                m_sessionid = GetBetween(res1, "sessionid=", ";");                m_isvip = GetBetween(res1, "isvip=", ";");                string blog = GetBetween(res1, "blogresult=", ";");                if (m_userid.Length > 0)                {                    this.Text = "H31DHT迅雷视频地址搜索软件UserID:" + m_userid + " VIP:" + m_isvip;                    button1.Text = "退出";                    txtName.Enabled = false;                    txtPass.Enabled = false;                    labelVery.Visible = false;                    vefycodTxt.Visible = false;                    vefycodpicbox.Visible = false;                    SaveSetting();                }
登录验证
#region 公用函数        ///          /// md5加密         ///          ///          /// 
public static string getMd5Hash2(string input) { byte[] buffer = MD5.Create().ComputeHash(Encoding.Default.GetBytes(input)); StringBuilder builder = new StringBuilder(); for (int i = 0; i < buffer.Length; i++) { builder.Append(buffer[i].ToString("x2")); } return builder.ToString(); } /// /// 获取字符串 /// public static string GetBetween(string s, string s1, string s2) { int n1, n2; n1 = s.IndexOf(s1, 0); if (n1 == -1) return ""; n1=n1+s1.Length; //开始位置 n2 = s.IndexOf(s2, n1); //结束位置 if (n2 == -1) return ""; return s.Substring(n1, n2 - n1); //取搜索的条数,用结束的位置-开始的位置,并返回 } /// /// 时间转成Unix时间戳 /// /// ///
public static long UNIX_TIMESTAMP(DateTime dateTime) { return (dateTime.Ticks - DateTime.Parse("1970-01-01 00:00:00").Ticks) / 10000000; } #endregion
公用函数

 

如果登录成功会有一些userid,sessionid等信息返回需要使用.

5)去查询一个磁连接复制回来进行分析视频地址:

主要针对http://i.vod.xunlei.com/req_try_vod?url={0}&cache={1}&userid={2}&sessionid={3}&vip={4}&platform=0&from=vlist&jsonp=XL_CLOUD_FX_INSTANCEqueryBack

来构造数据分析;

///         /// 获取磁连接播放地址        ///         private void buttonGetResult_Click(object sender, EventArgs e)        {            string sha = txtUrl.Text;            string url4 = string.Format("http://i.vod.xunlei.com/req_try_vod?url={0}&cache={1}&userid={2}&sessionid={3}&vip={4}&platform=0&from=vlist&jsonp=XL_CLOUD_FX_INSTANCEqueryBack", sha, UNIX_TIMESTAMP(DateTime.Now), m_userid, m_sessionid, m_isvip);            string res5 = Http.GetHtmlPostMsg(url4, cookie);            res5 = res5.Replace("dt=16", "dt=17");            txtRusult.Text = res5;            string pattern = string.Format("vod_url\": \"(.*?)\",");            MatchCollection usermatch = Regex.Matches(res5, pattern, RegexOptions.IgnoreCase);            if (usermatch.Count >= 2 && usermatch[0].Groups[0].Value.Length >= 1)            {                txtVideo1.Text = usermatch[0].Groups[1].Value;                txtVideo2.Text = usermatch[1].Groups[1].Value;            }        }
获取视频地址

 

6)整个流程代码主要通过HttpWebRequest来完成,相关类的代码如下:

public static Stream GetStream(string URL, CookieContainer cookieContainer)        {            HttpWebRequest httpWebRequest;            HttpWebResponse webResponse;            Stream getStream;            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);            httpWebRequest.CookieContainer = cookieContainer;            httpWebRequest.Accept = "*/*";            //httpWebRequest.ContentType = "application/x-www-form-urlencoded";            httpWebRequest.UserAgent = "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2";            httpWebRequest.Method = "GET";            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();            string header = webResponse.Headers.ToString();            getStream = webResponse.GetResponseStream();            return getStream;        }        public static string GetHtmlHeader(string URL, CookieContainer cookieContainer)        {            HttpWebRequest httpWebRequest;            HttpWebResponse webResponse;            Stream getStream;            StreamReader streamReader;            string getString = "";            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);            httpWebRequest.CookieContainer = cookieContainer;            httpWebRequest.Accept = "*/*";            httpWebRequest.ContentType = "application/x-www-form-urlencoded";            httpWebRequest.UserAgent = "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2";            httpWebRequest.Method = "GET";            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();            string header = webResponse.Headers.ToString();            getStream = webResponse.GetResponseStream();            streamReader = new StreamReader(getStream, Encoding.UTF8);            getString = streamReader.ReadToEnd();            streamReader.Close();            getStream.Close();            httpWebRequest.Abort();            webResponse.Close();            return header;        }        public static string GetHtmlPostHeader(string URL, string postData, CookieContainer cookieContainer)        {            HttpWebRequest httpWebRequest;            HttpWebResponse webResponse;            Stream getStream;            StreamReader streamReader;            string getString = "";            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);            httpWebRequest.CookieContainer = cookieContainer;            httpWebRequest.Accept = "*/*";            httpWebRequest.ContentType = "application/x-www-form-urlencoded";            httpWebRequest.Referer = "http://i.xunlei.com/login.html";            httpWebRequest.UserAgent = "User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2";            httpWebRequest.Method = "Post";            byte[] byteRequest = Encoding.Default.GetBytes(postData);            httpWebRequest.ContentLength = byteRequest.Length;            Stream stream;            stream = httpWebRequest.GetRequestStream();            stream.Write(byteRequest, 0, byteRequest.Length);            stream.Close();            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();            string header = webResponse.Headers.ToString();            getStream = webResponse.GetResponseStream();            streamReader = new StreamReader(getStream, Encoding.UTF8);            getString = streamReader.ReadToEnd();            streamReader.Close();            getStream.Close();            httpWebRequest.Abort();            webResponse.Close();            return header;        }        public static string GetHtmlPostMsg(string URL, CookieContainer cookieContainer)        {            HttpWebRequest httpWebRequest;            HttpWebResponse webResponse;            Stream getStream;            StreamReader streamReader;            string getString = "";            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);            httpWebRequest.CookieContainer = cookieContainer;            httpWebRequest.Accept = "*/*";            httpWebRequest.ContentType = "application/x-www-form-urlencoded";            //httpWebRequest.Referer = "http://vod.xunlei.com/iplay.html?uvs=26792633_4_166BF1D2FD43C79F8605A78BFE0E65CD8FE775E494F79F64FB63CA6C692D71156FB80795D39CB79BC4DA348AFE399ECE96856BEAFAB89C9D7598D1AFBEAAFD5E&from=vlist&url=bt%3A%2F%2F0C8F6F3292F7049E4E76716C242A4BA0944D1466%2F2&list=all";            httpWebRequest.Referer = "http://vod.xunlei.com/iplay.html";            httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17";            httpWebRequest.Method = "Get";            webResponse = (HttpWebResponse)httpWebRequest.GetResponse();            string header = webResponse.Headers.ToString();            getStream = webResponse.GetResponseStream();            streamReader = new StreamReader(getStream, Encoding.UTF8);            getString = streamReader.ReadToEnd();            streamReader.Close();            getStream.Close();            httpWebRequest.Abort();            webResponse.Close();            return getString;        }
初步没有合并但能用的类代码

 

3.使用过程中的发现问题:                                                                                                           

1)查询出来的播放地址,如果在播放几次后,那个地址会失效,还需要进一步分析如何避免的问题;

2)有的播放器测试进行播放不成功,然后这个地址也会失效;

3)有些参数不明白,有些不对的地方,希望大家指教下; 

希望有兴趣朋友一起讨论分析迅雷云播放视频地址的获取问题,现提供第一版本程序下载,希望大家多多提意见!

下载程序:

希望大家多多推荐哦...大家的推荐才是下一篇介绍的动力...

 

 

转载于:https://www.cnblogs.com/miao31/p/3317289.html

你可能感兴趣的文章
JAVA WEB开发环境搭建教程
查看>>
jquery 表单校验
查看>>
【机器学习实战】Machine Learning in Action 代码 视频 项目案例
查看>>
我的第一个.NET Core App Windows系统
查看>>
faceswap深度学习AI实现视频换脸详解
查看>>
Android实例-手机安全卫士(十一)-自定义对话框点击事件处理
查看>>
上海行政区域规划图
查看>>
HDU-4417 Super Mario
查看>>
ptmalloc内存分配释放
查看>>
通过Url网络编程实现下载
查看>>
@RequestParam 绑定List参数
查看>>
poj 2195Going Home
查看>>
伪元素消除浮动
查看>>
HttpClient的几个实现类
查看>>
关于对接保税仓物流系统或支付系统推送报关单的一些琐碎的问题
查看>>
mysql将一个库中表的某几个字段插入到另一个库中的表
查看>>
mysql 索引长度tips innodb和myisam引擎
查看>>
[转]Spark能否取代Hadoop?
查看>>
Stack Pointer Tracker
查看>>
IIC原理及简单流程
查看>>