blogjava's web log

          blogjava's web log
          ...

          關(guān)于視頻播客flv地址下載

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

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

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

          ?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";

          ?分析土豆網(wǎng)視頻

          ????????///?<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網(wǎng)頁
          ????????
          ///?</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種方法樣一個網(wǎng)站一個網(wǎng)站的去分析~ 我是沒這精力~ 看樣子還是要在 (fiddler)上下點(diǎn)功夫~ 歡迎指點(diǎn)交流~

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

          評論

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

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

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

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

          導(dǎo)航

          常用鏈接

          留言簿(44)

          新聞檔案

          2.動態(tài)語言

          3.工具箱

          9.文檔教程

          友情鏈接

          搜索

          最新評論

          主站蜘蛛池模板: 丰都县| 无锡市| 禹州市| 曲阳县| 红桥区| 宝丰县| 都匀市| 沙雅县| 宜川县| 茶陵县| 梅州市| 亳州市| 盐山县| 名山县| 石台县| 中宁县| 灵璧县| 区。| 溧阳市| 庄浪县| 黑河市| 定州市| 德阳市| 南投县| 新邵县| 瑞丽市| 天峻县| 巴楚县| 武山县| 民权县| 桃江县| 成都市| 上犹县| 樟树市| 馆陶县| 葵青区| 宣恩县| 盐边县| 淮北市| 望江县| 毕节市|