我用curl抓的源代码里 是这样:
<span id="nores">抱歉,本条结果已经失效,您需要重新<a target="_blank" id="re-search" href="">
可是浏览器上却明明有歌曲和相应的连接,源码里却看不到,不知道是什么原因。请高手解释原因。怎么才能抓到歌的地址呢?
比如:众里寻你:
http://220.181.38.82/m?word=mp3,,,[%D6%DA%C0%EF%D1%B0%C4%E3]&cat=0&ct=134217728&tn=baidusg,%D6%DA%C0%EF%D1%B0%C4%E3++&si=%D6%DA%C0%EF%D1%B0%C4%E3;;%BA%AB%BA%EC;;940745;;940745&lm=-1&sgid=1&size=3145728&attr=0,0&titlekey=498734397,2044960315

解决方案 »

  1.   

    这是因为百度用javascript把 连接加密了
      

  2.   

    其实 百度的mp3 不需要curl的,file_get_contents()就可以了。
    百度不像google需cookie才能取连接地址。$url = 'http://220.181.38.82/m?word=mp3,,,[%D6%DA%C0%EF%D1%B0%C4%E3]&cat=0&ct=134217728&tn=baidusg,%D6%DA%C0%EF%D1%B0%C4%E3++&si=%D6%DA%C0%EF%D1%B0%C4%E3;;%BA%AB%BA%EC;;940745;;940745&lm=-1&sgid=1&size=3145728&attr=0,0&titlekey=498734397,2044960315';
    $content = file_get_contents($url);
    if(preg_match('/var\s+encurl\s*=\s*"(.*?)"\s*[\|"]?/is',$content,$brr)){
      print_r($brr);
    }
    if(preg_match('/var\s+sertim\s*=\s*(\d+)\s*,\s*statim\s*=\s*\d+\s*;/is',$content,$crr)){
      print_r($crr);
    }echo "<script type=\"text/javascript\">"
        ."window.onload=function (){"
        ."var sertim = ".$crr[1]." ; "
        ."var encurl = '".$brr[1]."' ;"
        ."var turl = decode(encurl,sertim);"
        ."alert(turl);"
        ."}</script>";
    ?>
    decode 就是百度自己的函数。
      

  3.   

    被楼上抢先了,确实是javascript生成的
    用firebug找下就有的,首先在javascript页面搜索  nores找到
    var urln_obj = G("urln"), urla_obj = G("urla"); 
    然后在这行打个断点
    调试就都能看到了
    -function(){
     var encurl = "0CC8://FFF.I0009.v75/KK/vF/哥曲-众里寻你.58M" || "0CC8://FFF.I0009.v75/KK/vF/哥曲-众里寻你.58M", newurl = "";
     var urln_obj = G("urln"), urla_obj = G("urla"); if (!encurl) {
     var searchUrl = "http://mp3.baidu.com/m?f=ms&rf=idx&tn=baidump3& ct=134217728&lf=&rn=&lm=-1&ie=utf-8& word="+encodeURIComponent("众里寻你 ");
     urla_obj.style.display = "none";
     urln_obj.style.display = "none";
     var nores_obj = G("nores");
     G("re-search").href = searchUrl;
     nores_obj.style.display = "inline";
     G("nourln").style.display = "inline";
     return;
     } newurl = decode(encurl); urln_obj.href = urla_obj.href = song_1298899257 = newurl; if (/wma\.ddeee\.com\.cn/i.test(newurl)) {
     G("dl").style.display = "inline";
     log('http://imgs.zhangmen.baidu.com/wd/any.gif?wd=下载页导流展现&r=' + Math.random());
     } urla_obj.innerHTML = decode("0CC8://FFF.I0009.v75/KK/vF/哥曲-众里寻你.58M" || "0CC8://FFF.I0009.v75/...曲-众里寻你.58M"); if (!statim || sertim - statim < 3600) {
     log("/wd/mp3-sg-decode.jpg?url=" + newurl + "&r=" + Math.random());
     }
     }(); function decode(url){
     var len = url.length;
     var decurl = "";
     var asc_arr1 = [], asc_arr2 = []; var key = sertim % 26;
     key = key ? key : 1; function init(head, bottom, middle){
     for (var i = head; i <= bottom; i++) {
     asc_arr1[i] = i + middle;
     asc_arr2[i + middle] = i;
     }
     } init(0, 9, 48);
     init(10, 35, 55);
     init(36, 61, 61); for (var i = 0; i < len; i++) {
     var word = url.charAt(i); if (/[A-Za-z0-9]/.test(word)) {
     var pos = asc_arr2[url.charCodeAt(i)] - key;
     if (pos < 0)
     pos += 62;
     word = String.fromCharCode(asc_arr1[pos]);
     }
     decurl += word;
     } return decurl;
     }