我用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
<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
百度不像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 就是百度自己的函数。
用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;
}