一張圖讓你了解百度這個企業有多惡心。立減0.46元還要貼個標簽提示?消費200多差這幾毛錢?
截圖來自於度盤會員下單頁,不吹不黑點進去自己看:https://pan.baidu.com/buy/checkoutcounter
不多吐槽了,開始教程吧。
一、度盤大文件直接下載
這是正常操作的結果,會提示安裝客戶端才能下載。
分析頁面源碼可以發現不過是個腳本檢查,檢查文件的大小,IF大於50M就彈出提示。
要繞過檢查那么直接調用它最終的下載方法就可以了。
為了方便小白這里就直接貼出調用瀏覽器下載的代碼:
$.ajax({ type: "POST", url: "/api/sharedownload?sign="+yunData.SIGN+"×tamp="+yunData.TIMESTAMP, data: "encrypt=0&product=share&uk="+yunData.SHARE_UK+"&primaryid="+yunData.SHARE_ID+"&fid_list=%5B"+yunData.FS_ID+"%5D", dataType: "json", success: function(d){ window.location.href = d.list[0].dlink; } });
使用ajax post請求下載鏈接,然后通知瀏覽器發起下載。
將代碼粘貼到開發者工具的控制台里,回車執行就可以自動建立下載了。
特意說明一下,這里得到文件下載鏈接不可復制到其它下載工具下載,以前可以現在被限制了,會提示403。
原理是百度服務端的驗證,下載請求需要附加登錄的用戶cookie才能通過驗證,對接服務端文件傳輸,迅雷這種外部下載工具是拿到不你瀏覽器中存儲的cookie的。
然而有時並沒有這么簡單。
如果你執行了命令后出現上圖的輸出信息,意味着你的下載動作太頻繁了,需要驗證碼。
正常來說應該是彈出一個驗證碼提交框,但我們是通過命令執行去得到下載結果就不會有任何的視圖層提示。
解決這個問題請參考以下方式:
我們要做的就是給要下載的文件生成一個新的下載入口,因為當前入口被服務端限制了直接下載的方式,必須驗證碼驗證解除限制。
只是一個下載入口的問題。這里說的“下載入口”指的是文件下載頁面的地址。
先將要下載的文件保存到自己的網盤,然后再將其分享出去(請選擇公開分享),即可得到文件的另一個下載入口。
轉到新的下載頁面執行以上命令操作可以成功的建立下載了。
二、文件下載提速。
相比下載大文件,提速更有技術難度。大文件下載限制是客戶端本地腳本控制的,度盤資源的下載速度是受百度服務端的限制。
入侵B度服務器修改限制的下載速度?有這種能力的人肯定開得起會員,不用瞎折騰了。
我也實在沒試出現在還有什么方法可以在不開會員的情況下實現滿速下載,只有這么個方法:
使用系統自帶的Edge瀏覽器下載,速度有明顯提升,不過撐死200K/s,感覺已經很極限了,大家可以測試一下,總比幾十K/s要好。
30號補更:
$.ajax({ type: "POST", url: "/api/sharedownload?sign="+yunData.SIGN+"×tamp="+yunData.TIMESTAMP, data: "encrypt=0&product=share&uk="+yunData.SHARE_UK+"&primaryid="+yunData.SHARE_ID+"&fid_list=%5B"+yunData.FS_ID+"%5D", dataType: "json", success: function(d){ console.log(d.list[0].dlink); } });
建議在console輸出下載地址,直接調用瀏覽器下載得到的下載地址是二次解析后的。
之前以為外部下載工具復制鏈接下載總是403是cookie的關系,后來發現被自己誤導了,直接用console命令輸出下載的鏈接可直接使用外部下載工具慢速下載。
注意:如果使用迅雷下載依舊403,可能是USER-AGENT的原因 - “Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36 TBC/1.1.0.20 Thunder/10.0.3.88”
可以用一些網絡代理工具修改迅雷的UA,如Charles,去掉“TBC/1.1.0.20 Thunder/10.0.3.88”這些字符再試試看。