Skip to content

Instantly share code, notes, and snippets.

@tedyyu
Created June 1, 2021 07:07
Show Gist options
  • Save tedyyu/711c45fa3b2dcf478945e01d16580184 to your computer and use it in GitHub Desktop.
Save tedyyu/711c45fa3b2dcf478945e01d16580184 to your computer and use it in GitHub Desktop.
实战如何让百度网盘突破下载速度
谁家宽带不是一两百兆(bit/s),百度网盘故意限速30KB/s甚至更低,还时不时下载失败,干扰正常使用。花钱开通他家超级会员才是家里带宽下正常下载速度(十来兆每秒)!How Evil!
百度网盘Mac应用里普通用户下载速度
作为一个技术宅,怎么可以坐得住呢?于是Chrome+开发者模式看了一圈,看得到一些verify账号密码的HTTP请求响应,但由于streaming和下载还是不一样的,服务端和客户端js里的协同处理过于复杂,搞的没有脾气,放弃。
后来跳出框框,想到专门负责下载的百度网盘应用会不会简单点,Next show me the way~
下载Wireshark,侦听一会数据包,一堆TCP收发,首先得找到当前下载源的百度服务器IP(会有多个,每次都需要自己挖),这个有很多办法,我偷懒在mac的活动管理器里找到“百度网盘”,在其打开的文件和端口tab里,会展示这么一行:
192.168.3.39:55191->117.34.84.21:http
居然有http连接,而不全是https。下https的链接同理,filter里http换成https,ip换成对应ip。
然后在wireshark的filter里输入http && ip.addr == 117.34.84.21,原来的TCP流会变为HTTP的,选择Get /file/blabla的某一行(代表一个文件下载),右键,选择Follow > HTTP Stream,会看到下载请求(含登陆token)是怎么发的,然后自己找个工具这样发出去就万事大吉。
马赛克真好看
比如我拿youtube-dl这个视频下载神器(可以根据链接下载很多国内外网站的视频),配合aria2这个多线程多任务同时下载的放大器,就轻松拿到700KB/s的速度,当然离会员好几兆还差得远,技术上其实还有优化空间。
不用aria2的速度:172KB/s
用了aria2多线程下的速度:710KB/s
最后放一个命令行:
youtube-dl --add-header "Accept-Encoding: gzip, deflate" --add-header "User-Agent: netdisk;2.2.1;pc;pc-mac;10.14.3;macbaiduyunguanjia" --add-header "X-Download-From: baiduyun" --add-header "Cookie: BDUSS=1RJS21oNH.....NgM;STOKEN=c2ef......6cb8b" "http://xact01.baidupcs.com/file/9ace1........184932?bkt=en-2bd419aa............=1&method=download>channel=1>rate=0" -o baidu3-mt-j10x20.mp4 --external-downloader aria2c --external-downloader-args "-j 10 -x 15 --summary-interval=0" "$@"
小贴士:add-header里的部分贴上Follow HTTP那个框里的暗红字体里一些重要的头,但不要带Range那个HTTP头,否则下载的是一部分:( 粗体是下载的URL,原样复制过来。
免责声明:文中所述技巧仅供学术研究,请勿用于任何商业用途,否则使用者自行承担后果。
图片丢了,看下方链接
链接:https://www.jianshu.com/p/e883c92093d5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment