谷歌浏览器下载如何解除文件大小限制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷歌浏览器下载如何解除文件大小限制相关的知识,希望对你有一定的参考价值。
参考技术A 我在Google Chrome中遇到了下载问题.我使用的是Ruby 2.2,Rails 4.2,AngularJS 1.2.我们这里没有数据库.我们通过API获得的一切.我们试图下载的文件大约是7 MB.它给我们"失败:网络错误".虽然它在Firefox上运行良好.
从API我们获得JSON中的二进制数据.我们正在解析它.然后:
send_data response_fields["attachment"], type: response_fields["mimeType"], disposition: 'attachment', filename: params[:filename]
当我们使用AngularJS时,我们在AngularJS Controller中捕获该值,然后将其转换为:
var str = data;
var uri = "data:" + mimeType + ";base64," + str;
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = filename;
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
这适用于Firefox甚至Chrome,适用于较小的文件大小.不知道为什么它会在Chrome上为更大的尺寸提供错误.
解除百度云浏览器端对下载大文件的限制
百度网盘对浏览器端下载大文件做了一些限制,当超过一定大小的文件必须使用百度云管家才可以下载,这给用户的使用带来了不便。
[不看分析请直接拉到页底]
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: "" }}); 这段代码即可解除百度网盘对浏览器下载大文件的限制。
以上是关于谷歌浏览器下载如何解除文件大小限制的主要内容,如果未能解决你的问题,请参考以下文章
浏览器下载的视频,为何一个视频文件大小几十MB,一个视频文件才十几KB,并且只能在浏览器?