百度網盤對瀏覽器端下載大文件做了一些限制,當超過一定大小的文件必須使用百度雲管家才可以下載,這給用戶的使用帶來了不便。
[不看分析請直接拉到頁底]
1. 百度網盤限速原理
當點擊下載一個大文件的時候百度網盤會彈出這樣一個提示框。
我們給下個斷點,看看是什么代碼創建了這個提示框。
然后再次點擊下載一個大文件,我們發現斷點已經斷下來了。
可以看出這里是在把提示對話框顯示出來,我們需要查看調用棧往上找找。
跳過一些jQuery的操作,我們看到了這樣一個函數,繼續往上找。
這個isPlatformWindows的分支很可疑,我們跟進去看一下,於是我把DOM斷點取消了,並在1748行這里下了個斷點。
斷下來了,跟進去看看。
這個函數只是簡單的判斷了 navigator.platform 這個平台相關的字符串,我們修改一下看看會發生什么結果
讓代碼繼續跑起來
嗯,我們成功了。
2. 寫段代碼來破解吧
從上面的調試中我們已經知道了百度是通過判斷 window.navigator.platform 是不是以 win32 開頭來判斷是否是運行瀏覽器下載的,所以我們只需要修改這個變量就輕松解除了限制。
經過嘗試我發現,platform這個屬性被百度凍結了。
所以只能修改 navigator 。
修改代碼如下:
Object.defineProperty(this , 'navigator' , {value: { platform: "" }});
一句話總結:
打開瀏覽器控制台(F12) 在命令行行 Object.defineProperty(this , 'navigator' , {value: { platform: "" }}); 這段代碼即可解除百度網盤對瀏覽器下載大文件的限制。