添加SongTaste音乐外链app

作者:Matrix 被围观: 1,276 次 发布时间:2013-09-24 分类:兼容并蓄 码字型 | 无评论 »

NOTICE:这是一个创建于 1166 天前的主题,其中的信息可能已经有所发展或是发生改变。

外链转换地址:http://d.hhtjim.com/st.php

转换地址:http://link.hhtjim.com

songtaste.com的音乐打开速度是比较快的,比起百度网盘就SongTaste和xiaomi的速度很理想,外链起来比较不错。

songtaste音乐外链

网上找了很多SongTaste外链的方法,大多数都是pc端程序,没看到什么php源码之类的东西,很是蛋疼。

so ,也学着看看播放页面的源代码,结果找到了外链的方法。 哈哈。

打开播放页面会看到有http://image.songtaste.com/inc/main.js这样的js代码,其中的有关代码是改写mp3文件信息的:

  1. //重新改写开始  
  2.   
  3. function GetSongType(md5code)  
  4. {  
  5.     switch(md5code)  
  6.     {  
  7.         case "7d99bb4c7bd4602c342e2bb826ee8777":  
  8.             return ".wma";  
  9.             break;  
  10.         case "25e4f07f5123910814d9b8f3958385ba":  
  11.             return ".Wma";  
  12.             break;  
  13.         case "51bbd020689d1ce1c845a484995c0cce":  
  14.             return ".WMA";  
  15.             break;  
  16.         case "b3a7a4e64bcd8aabe4cabe0e55b57af5":  
  17.             return ".mp3";  
  18.             break;  
  19.         case "d82029f73bcaf052be8930f6f4247184":  
  20.             return ".MP3";  
  21.             break;  
  22.         case "5fd91d90d9618feca4740ac1f2e7948f":  
  23.             return ".Mp3";  
  24.             break;  
  25.     }     
  26. }  
  27.   
  28. //Media Link  
  29. function playmedia1(playIcon, strID,strURL,intWidth,intHeight,type, Head,st_songid,t) {  
  30.    
  31.     playIcon.replace(" ","%20");  
  32.     strID.replace(" ","%20");  
  33.       
  34.     var objDiv=document.getElementById(strID);  
  35.     document.getElementById(playIcon).style.display='none';  
  36.       
  37.     if (!objDiv) return false;  
  38.     if (objDiv.style.display!='none') {  
  39.         objDiv.innerHTML='';  
  40.         objDiv.style.display='none';  
  41.     } else {  
  42.         if(strURL.indexOf('rayfile')>0) {  
  43.             var SongUrl = Head + strURL + GetSongType(type);  
  44.             objDiv.innerHTML=makemedia_html(SongUrl,intWidth,intHeight);  
  45.             objDiv.style.display='block';  
  46.         } else {  
  47.             $.ajax({  
  48.                 type:'POST',  
  49.                 url:'/time.php',  
  50.                 cache:false,  
  51.                 data:'str='+strURL+'&sid='+st_songid+'&t='+t,  
  52.                 dataType:'html',  
  53.                 success:function(data){  
  54.                     //alert(data);  
  55.                     if(data){  
  56.                         objDiv.innerHTML=makemedia_html(data,intWidth,intHeight);  
  57.                         objDiv.style.display='block';  
  58.                         if(data.indexOf('duomi.com') > 0){  
  59.                             $("#show_logo").show();   
  60.                         }  
  61.                     }  
  62.                 },  
  63.                 error:function(data){  
  64.                     //alert('error');  
  65.                 }  
  66.                 });  
  67.         }  
  68.           
  69.     }  
  70. }  
  71.   
  72. //Media Build  
  73. function makemedia_html (SongUrl,intWidth,intHeight) {  
  74.     var strHtml ="<object id='MediaPlayer1' width='"+ intWidth +"' height='"+ intHeight +"' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95' codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715' align='baseline' border='0' standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>";  
  75.     strHtml+="<param name='invokeURLs' value='0'>";  
  76.         strHtml+="<param name='AutoRewind' value='1'>";  
  77.         strHtml+="<param name='FileName' value=\""+ SongUrl +"\">";  
  78.         strHtml+="<param name='ShowControls' value='1'>";  
  79.         strHtml+="<param name='ShowPositionControls' value='0'>";  
  80.         strHtml+="<param name='ShowAudioControls' value='1'>";  
  81.         strHtml+="<param name='ShowTracker' value='1'>";  
  82.         strHtml+="<param name='ShowDisplay' value='0'>";  
  83.         strHtml+="<param name='ShowStatusBar' value='1'>";  
  84.         strHtml+="<param name='AutoSize' value='0'>";  
  85.         strHtml+="<param name='ShowGotoBar' value='0'>";  
  86.         strHtml+="<param name='ShowCaptioning' value='0'>";  
  87.         strHtml+="<param name='AutoStart' value='1'>";  
  88.         strHtml+="<param name='PlayCount' value='100'>";  
  89.         strHtml+="<param name='AnimationAtStart' value='0'>";  
  90.         strHtml+="<param name='TransparentAtStart' value='0'>";  
  91.         strHtml+="<param name='AllowScan' value='0'>";  
  92.         strHtml+="<param name='EnableContextMenu' value='1'>";  
  93.         strHtml+="<param name='ClickToPlay' value='0'>";  
  94.         strHtml+="<param name='DefaultFrame' value='datawindow'>";  
  95.       
  96.       
  97.     strHtml+="<embed src=\""+ SongUrl +"\" align='baseline' border='0' width='"+ intWidth +"' height='"+ intHeight +"' type='application/x-mplayer2'";  
  98.         strHtml+=" pluginspage='http://www.microsoft.com/isapi/redir.dll?prd=windows&amp;sbp=mediaplayer&amp;ar=media&amp;sba=plugin&amp;'";  
  99.         strHtml+="name='MediaPlayer' showcontrols='1' showpositioncontrols='0' showaudiocontrols='1' showtracker='1' showdisplay='0' showstatusbar='1' autosize='0' showgotobar='0' showcaptioning='0' autostart='1' autorewind='1'";  
  100.         strHtml+="animationatstart='0' transparentatstart='0' allowscan='1' enablecontextmenu='1' clicktoplay='0' defaultframe='datawindow' invokeurls='0' playcount='100'> </embed></object>";  
  101.           
  102.        
  103.     return strHtml;  
  104.       
  105. }  
  106.   
  107. function wrtSongLink(strURL,intWidth,intHeight,type, Head)  
  108. {  
  109.       
  110.     SongUrl = Head + strURL + GetSongType(type);  
  111.     if(SongUrl.length > 35)  
  112.         SongUrl1 = SongUrl.slice(0,24)+"......"+SongUrl.slice(-10)  
  113.     else  
  114.         SongUrl1 = SongUrl  
  115.           
  116.     document.write("下载地址 <a href='"+SongUrl +"'>"+SongUrl1+"</a>")    
  117.     //document.write("<a href=\"#\" onclick=\"window.open('"+Head + strURL + GetSongType(type) +"','','width=0,height=0,top=0,left=0');\">点此下载</a>")  
  118. }  
  119. //重新改写结束  

还有播放页面源代码的<script>:

  1. <script>  
  2. var flashvars = {};  
  3. var params = {  
  4.     menu: "false",  
  5.     scale: "noScale",  
  6.     allowFullscreen: "true",  
  7.     allowScriptAccess: "always",  
  8.     wmode: "transparent"  
  9. };  
  10. params.allowScriptAccess = "always";  
  11. params.hasPriority = "true";  
  12. params.swliveconnect = "true";  
  13. var attributes = {  
  14.     id: "STWebPlayer"  
  15. };  
  16. swfobject.embedSWF("/stflashplayer/STPlayer_1.10.swf""STWebPlayer""360""70""10.0.0""/stflashplayer/expressInstall.swf", flashvars, params, attributes);  
  17. function swfReady() {  
  18.     var strURL = "3fa754e9c0064b06c4737445855dc9b16fd3603796f3703440677bdc89365656ecf18f4d2c63d2c42f1ced3fe51ffc51";  
  19.     var Head = "http://m4.";  
  20.     var type = "b3a7a4e64bcd8aabe4cabe0e55b57af5";  
  21.     var iscopy = "0";  
  22.     if (strURL.indexOf('rayfile') > 0 && iscopy <= 0) {  
  23.         var SongUrl = Head + strURL + GetSongType(type);  
  24.         var obj = {  
  25.             name: "鲸鱼的童话",  
  26.             url: SongUrl,  
  27.             isShowLogo: "0",  
  28.             isAutoReplay: 1,  
  29.             isAutoPlay: 0  
  30.         };  
  31.         setSongInfo(obj);  
  32.     }  
  33.     flashplay("3fa754e9c0064b06c4737445855dc9b16fd3603796f3703440677bdc89365656ecf18f4d2c63d2c42f1ced3fe51ffc51""1752907""0");  
  34.     ListenLog("1752907""0");  
  35. }  
  36. function setSongInfo(obj) {  
  37.     try {  
  38.         var stPlayerSWFobj = swfobject.getObjectById("STWebPlayer");  
  39.         stPlayerSWFobj.setSongInfo(obj);  
  40.     } catch(e) {  
  41.         alert(e.description);  
  42.     }  
  43. }  
  44. function playAudio() {  
  45.     var stPlayerSWFobj = swfobject.getObjectById("STWebPlayer");  
  46.     stPlayerSWFobj.playAudio();  
  47. }  
  48. function pauseAudio() {  
  49.     var stPlayerSWFobj = swfobject.getObjectById("STWebPlayer");  
  50.     stPlayerSWFobj.pauseAudio();  
  51. }  
  52. function playerPlayStart() {}  
  53. function playerPaused() {}  
  54. function flashplay(strURL, st_songid, t) {  
  55.     $.ajax({  
  56.         type: 'POST',  
  57.         url: '/time.php',  
  58.         cache: false,  
  59.         data: 'str=' + strURL + '&sid=' + st_songid + '&t=' + t,  
  60.         dataType: 'html',  
  61.         success: function(data) {  
  62.             if (data) {  
  63.                 var obj = {  
  64.                     name: "鲸鱼的童话",  
  65.                     url: data,  
  66.                     isShowLogo: "0",  
  67.                     isAutoReplay: 1,  
  68.                     isAutoPlay: 0  
  69.                 };  
  70.                 setSongInfo(obj);  
  71.                 if (data.indexOf('duomi.com') > 0) {  
  72.                     $("#show_logo").show();  
  73.                 }  
  74.             }  
  75.         },  
  76.         error: function(data) {}  
  77.     });  
  78. }  
  79. </script>  

结果没看到怎样还原加密的信息,不过发现了SongTaste音乐外链的基本方法和官方接口:/time.php

time.php的参数str值就是上面33行处的3fa754e9c0064b06c4737445855dc9b16fd3603796f3703440677bdc89365656ecf18f4d2c63d2c42f1ced3fe51ffc51这东东。

形如:/time.php?str=3fa754e9c0064b06c4737445855dc9b16fd3603796f3703440677bdc89365656ecf18f4d2c63d2c42f1ced3fe51ffc51

之后会返回随时间变化的外链地址,形如:

http//m4.songtaste.com/201309232330/57630f6a60a2534c0221a4783b5a9f4c/4/40/40e746ed9ca918b0f8a4322f5fd87c70.mp3

原理:

SongTaste音乐外链原理也就用php的preg_match_all函数正则匹配提取【var strURL =  "】和【;/】之间的字符串,之后用substr(抓取其中你需要的值。这就取得了那一串串加密后的东东。然后再利用的time.php?tr=取得暂时的外链地址。

提供外链接口形如:http://www.hhtjim.com/songtaste.php?url=http://www.songtaste.com/song/2932328/

再弄个链接转换的html或者php,例如http://d.hhtjim.com/st.php,界面那就是高端大气上档次!

之后结合伪静态那就实现了完全外链,也就没有时间限制了。因为每次使用的都是静态外链地址(形如:http://www.hhtjim.com/st/516159.mp3),之后php会根据目前此时的post来获取外链地址,也就不会有过期的说法了。

伪静态代码:

  1. RewriteRule ^st/([0-9]+)\.mp3?$ /songtaste.php?url=http://songtaste.com/song/$1 [L]    

下面外链测试:http://www.songtaste.com/song/1999664/

外链转换地址:http://d.hhtjim.com/st.php  亲自试试~

转换地址:http://link.hhtjim.com

个人问题,代码有错误的话还请指正!


 

10-6添加另外的抓取方法,大同小异。

又用到强大的curl, post提交

  1. set_time_limit(0);//为0时:允许脚本运行的时间无上限。不设置此函数的话默认为30s  
  2.   
  3. $song_id = '1051120';//mp3id  
  4. $url = 'http://songtaste.com/play.php?song_id='.$song_id;  
  5. $con = file_get_contents($url);  
  6. preg_match('/", "([0-9a-z]+)"\\);/i',$con,$match); 
  7. $str = $match[1]; 
  8.  
  9. $url='http://songtaste.com/time.php'; 
  10. $curlPost="str=".$str."&sid=".$song_id;   
  11. $ch = curl_init();//初始化curl    
  12. curl_setopt($ch,CURLOPT_URL, $url);//提交到指定网页    
  13. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header    
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上    
  15. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式    
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);    
  17. $data = curl_exec($ch);//运行curl    
  18. curl_close($ch);    
  19. print_r($data);//输出结果  

来自:php curl 取链接地址

发现http://songtaste.com/play.php?song_id=1051120源码里有个mp3地址,不过貌似失效了。

TMD 那地址好像时有时无的,抓取代码:

 

  1. $song_id = '1051120';  
  2. $url = 'http://songtaste.com/play.php?song_id='.$song_id;  
  3. $con = file_get_contents($url);  
  4. preg_match('|WrtSongLine\(.*"(http:\/\/.*\.mp3)".*\);|',$con,$match);  
  5. echo $match[1];  
本文固定链接:http://www.hhtjim.com/add-songtaste-music-outside-chain-app.html
Matrix
本文章由 Matrix 于2013年09月24日发布在兼容并蓄, 码字型分类下,目前没有通告,你可以至底部留下评论。
转载请注明:添加SongTaste音乐外链app-HHTjim'S 部落格
关键字:, , ,

添加新评论 »

 😛 Sad 忧伤 👿 Smile 笑脸 😳 😀 😯 😮 😕 😎 😆 😡 😈 Roll Eyes 转眼珠 😉 💡 😐 😥 Mr Green 绿脸先生

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!