今天一個朋友問能不能拿到百度指數的折線圖數據,便上網查了相關資料,參考了網上的一位做者,連接地址:http://www.pianshen.com/artic...,教了朋友怎麼拿數據。javascript
通過觀察,百度指數並無返回包含真實數據的json文件,而是加密事後的數據,可是爲了渲染,在前端應該有對應的解密代碼。html
function decrypt(t,e){ for(var a=t.split(""),i=e.split(""),n={},s=[],o=0;o<a.length/2;o++) n[a[o]]=a[a.length/2+o] for(var r=0;r<e.length;r++) s.push(n[i[r]]) return s.join("") } var e="j5TnWEU5,jEU5,LEU55jEVUnTEU,VUEjjrT5EjjW,rEU5,TEVTTnEVT,jEVnLTEUjjTEjLVWrEjL,nVEV5VjErU,VErTT5Err,5EVnULEUr,WEUWLVErUrUErrWLEVL5,EVn,jEVW5rEjL5WUEUV,UEVj,W" //加密後的數據 var t="xWEvn5UVITL,jtr.6,%3298-5041+7" //密鑰 var data = decrypt(t,e) console.log(data) //12536,9241,9240,9221,8935,9489,11752,11647,9245,8553,8541,8305,9115,10867,10438,8281,7948,7552,7742,8390,9746,9608,7979,7760,8024,8341,8627,10269,9849,8146
<!DOCTYPE html> <html darkmode="false"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>百度指數數據解密</title> </head> <body style="width: 100%;height: 100%;"> <div style="height:400px;width:400px;margin:0 auto;margin-top:100px;"> <label >輸入data</label></label> <textarea id="encryptedData" style="width: 400px;height: 100px;"></textarea> <div style="width: 400px;height:20px;"></div> <label style="margin-top: 40px;">輸入uniqid請求返回的數據</label> <textarea id="key" style="width: 400px;height: 100px;"></textarea> <div style="width: 400px;height:20px;"></div> <button onclick="showdata()" style="width: 410px;height:40px;font-size: 16px;">解密</button> <div style="width: 400px;height:20px;"></div> <label style="margin-top: 40px;">解密的結果爲</label> <textarea id="data" style="width: 400px;height: 100px;"></textarea> </div> </body> <script type="text/javascript"> function decrypt(t,e){ for(var a=t.split(""),i=e.split(""),n={},s=[],o=0;o<a.length/2;o++) n[a[o]]=a[a.length/2+o] for(var r=0;r<e.length;r++) s.push(n[i[r]]) return s.join("") } function showdata(){ document.getElementById("data").value = "" var encryptedData = document.getElementById("encryptedData").value var key = document.getElementById("key").value var data = decrypt(key,encryptedData) document.getElementById("data").value = data } </script> </html>