blogjava's web log

          blogjava's web log
          ...

          關于視頻播客flv地址下載

          ?現在視頻博客滿天飛,你是否和我一樣,當看到一個好的視頻節目想把他下載下來,留著慢慢欣賞呢?但有的播客網站比較狡猾,不是一般的人壓根就找不到他的地址。
          ?? 于是我為了方便,想自己寫個找源視頻flv地址,但一個一個網站的分析他的html源代碼來處理,不僅效率不高,人家在服務器一改,你的壓根也就沒有用了。不知道那位高人有什么好的解決辦法?能高效的分析出播客視頻的flv源地址?
          ?
          ? 我說說我的2 個笨方法,也是可以找到他的源地址的。

          1.用這2 個工具 charles(http://www.xk72.com/charles/) 和 (fiddler)http://www.fiddlertool.com/Fiddler/ 一個是java寫的,一個.net寫的。他們都是用來監視http請求的。不管播客網站藏的多深,都能夠找的到。我開始想用net來調用 fiddler類庫,自己再封裝一下,如果成功了,那基本上所以的博客網站的視頻地址都能找到,不用一個一個的去分析他們的html源代碼了~ 但俺比教笨,現在還沒有搞定~

          2:那只能用死辦法。分析html代碼。我寫了一個分析土豆56 地址的。調這個方法。返回 flv地址.
          ? 小提示:(這只是個測試,代碼質量相當的差,你也別太在意 :)免的又有人大罵垃圾了~ )

          ?private?static?readonly?string?tudou?=?"http://{0}.tudou.com/flv/00{1}/{2}/{3}/{4}.flv";
          ?
          private?static?readonly?string?v56="http://{0}/flvdownload/{1}/{2}/{3}@56.com_56flv_{4}.flv";

          ?分析土豆網視頻

          ????????///?<summary>
          ????????
          ///?分析土豆視頻地址
          ????????
          ///?</summary>
          ????????
          ///?<param?name="url">傳入的地址如:http://www.tudou.com/programs/view/rpVqBgWWHmg/</param>
          ????????
          ///?<returns>返回視頻地址?視頻最終地址:http://player0005.tudou.com/flv/003/866/012/3866012.flv</returns>
          ????????public?string?ParseTudou(string?url)
          ????????{
          ????????????
          char[]?temp?=?null;
          ????????????
          string??strId?="";
          ????????????
          if?(url.IndexOf('#')?>?0)
          ????????????{
          ????????????????strId?
          =?url.Substring(url.IndexOf('#'));
          ????????????????temp?
          =?strId.ToCharArray();
          ????????????}
          ????????????
          else
          ????????????{
          ????????????????Normalize(
          ref?url);
          ????????????????
          string?htmlSource?=?GetHtmlSource(url);
          ????????????????strId?
          =?htmlSource.Substring(htmlSource.IndexOf("var?iid=")+8,?7);
          ?????????????????temp?
          =?strId.ToCharArray();
          ????????????}
          ????????????
          return?string.Format(tudou,?"player",?temp[0],?temp[1]?+?temp[2]?+?temp[3],?temp[4]?+?temp[5]?+?temp[6],?strId);
          ????????}

          分析http://www.56.com

          ??????///?<summary>
          ??????
          ///?分析http://www.56.com
          ??????
          ///?</summary>
          ??????
          ///?<param?name="url"></param>
          ??????
          ///?<returns></returns>
          ????????public?string??Parse56(string?url)
          ????????{
          ???????????
          string?htmlSource=GetHtmlSource(url);
          ???????????
          int?start=htmlSource.IndexOf("swfUrl");
          ???????????
          if?(start<=0)
          ???????????{
          ???????????????System.Diagnostics.Debug.Assert(
          false,?"start 0");
          ???????????????
          return?"";
          ???????????}
          ???????????
          int?length=htmlSource.Substring(start).IndexOf(";");
          ???????????
          //array[6]=totaltimes
          ????????????string?swfUrl?=?htmlSource.Substring(start,?length);
          ????????????
          string[]?array=swfUrl.Split(new?char[]{'&'});
          ????????????
          for?(int?i?=?0;?i?<?array.Length;?i++)
          ????????????{
          ????????????????array[i]?
          =?array[i].Substring(array[i].IndexOf('=')?+?1);
          ????????????}
          ????????????StringBuilder?sb?
          =?new?StringBuilder();
          ????????????
          return?string.Format(v56,?array[1],?array[2],?array[3],?array[4],?array[5]);
          ????????}

          公共方法

          ????????///?<summary>
          ????????
          ///?得到html網頁
          ????????
          ///?</summary>
          ????????
          ///?<param?name="strurl"></param>
          ????????
          ///?<returns></returns>
          ????????private??string?GetHtmlSource(string?strurl)
          ????????{
          ????????????
          string?htmlSource="";
          ????????????
          try
          ????????????{
          ????????????????Normalize(
          ref?strurl);
          ????????????????Uri?url?
          =?new?Uri(strurl);
          ????????????????HttpWebRequest?request?
          =?(HttpWebRequest)WebRequest.Create(url);
          ????????????????HttpWebResponse?response?
          =?(HttpWebResponse)request.GetResponse();
          ????????????????Stream?stream?
          =?response.GetResponseStream();
          ????????????????StreamReader?sr?
          =?new?StreamReader(stream);
          ????????????????htmlSource?
          =?sr.ReadToEnd();
          ???????????
          ????????????}
          ????????????
          catch?(Exception?ex)
          ????????????{
          ????????????????System.Diagnostics.Debug.Assert(
          false,?ex.Message);
          ????????????}
          ????????????
          return?htmlSource;
          ????????}
          ????????
          private?void?Normalize(ref?string?url)
          ????????{
          ????????????
          if?(url.StartsWith("http://")?==?false)
          ????????????????url?
          =?"http://"?+?url;
          ????????????
          if?(url.IndexOf("/",?8)?==?-1)
          ????????????????url?
          +=?'/';
          ????????}



          得到了flv地址,寫個類下載就容易多了。看看這個http://www.codeproject.com/useritems/filedownloader.asp
          都給封裝好了。完全可以用的上~
          地址和下載都搞定了。那就還差個 flv播放器了。看看這個 http://www.codeproject.com/cs/media/flashexternalapi.asp
          人家也有教咱們怎么做了。湊合這用用吧~


          //像第2種方法樣一個網站一個網站的去分析~ 我是沒這精力~ 看樣子還是要在 (fiddler)上下點功夫~ 歡迎指點交流~

          posted on 2007-01-11 09:48 record java and net 閱讀(2675) 評論(2)  編輯  收藏 所屬分類: dot net相關

          評論

          # re: 關于視頻播客flv地址下載 2008-03-18 16:36 CODE 小弟

          大哥有沒有優酷的FLV視頻分析源碼。急需要啊。我qq:175241929.
          小弟在這里叩謝了。  回復  更多評論   

          # re: 關于視頻播客flv地址下載 2009-02-27 14:55 huzling

          樓主,fiddler的類庫在使用時,fiddler是不是也要運行著?  回復  更多評論   

          導航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動態語言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評論

          主站蜘蛛池模板: 稻城县| 阳新县| 古蔺县| 浦县| 青田县| 吴忠市| 威信县| 廊坊市| 正定县| 拜城县| 赫章县| 慈利县| 饶河县| 玉屏| 河南省| 海兴县| 郸城县| 尚义县| 高要市| 乌鲁木齐县| 肃北| 阿尔山市| 呈贡县| 密山市| 济南市| 尉犁县| 邢台县| 宁阳县| 洪雅县| 壤塘县| 罗平县| 武宣县| 得荣县| 望城县| 秭归县| 舒兰市| 皮山县| 南江县| 井冈山市| 宁阳县| 赤峰市|