计划做这样的多线程下载是因为百度云盘限速厉害,到了恶心的地步,我想试试用多线程下载百度云盘的资源是否能够实现加速。

百度云盘限速分析

1. 关于限速,我揣测有两种情况:限制下载资源的带宽

限制下载资源时的线程或者进程数目

2. 多线程下载的具体思路如下:获取待下载文件的大小 size

将待下载文件分成 n 块,第 i 块大小为 subi ,n 个 subi 之和等于 size

在下载进程中开启 n 个线程,每个线程负责下载一个 sub

所有线程下载的资源按照原有顺序写入文件,完成后,该文件即为下载后的文件

百度云盘多线程加速下载,具体实现如下

1. 获取待下载文件的 size

以下载 python 2.7 为例,下载链接:点我下载,点击该链接时,应该会直接弹出下载窗口。通常,文件大小,文件名等信息都在请求 headers 里,python 可用如下代码获取该文件 headers:

输出结果是一个 json 数据,格式化显示如下:

显然,该文件大小为 19161088 字节。

2. 将下载文件分为 n 个小块

这一步其实就是简单的数学题了,下面直接上代码,以 n=5 等分为例,如下:

输出结果如下:

可见,文件被 5 等分了,因为 size 不能被 5 整除,所以最后一段比之前 4 段都长一些。

3. python下载文件的指定区间

这里先提供一个 python 下载文件的简单代码作为参考,毕竟越简单,越容易理解:

假设文件大小为 100 个字节,上面这几行代码是下载整个文件的,那么,怎样才能够下载指定区间的文件呢?比如我想下载 20-40 字节段的文件,怎么实现呢?方法如下,还是直接上代码:

上面几行代码下载的文件即为原文件的 20-40 字节段。

4. python 将内容写到文件指定位置处

第 3 节中提供的代码,实际上是将下载的 20-40 字节段写到 filename 的 0-20 位置了。这样一来,虽然内容被下载了,但是却没有放在文件正确的位置处,最终即使所有字节都下载了,文件也是无法打开的。那么,如何将 20-40 字节段内容写到 filename 的 20-40 位置呢?其实只需要添加一行 seek 代码,指定一下写文件的起始位置即可,如下:

5. python 多线程高速下载

在第 3、4 节基础上,写下如下函数:

该函数将从 url 下载 spos-fpos 段的内容,写到 fp 的指定位置处。结合第 1、2 节,开 n 个线程下载 python 2.7,具体代码如下,直接采用了 threading 库:

打印结果如下:

可见,该程序很快的将文件下载了,速度达到 9M/s 以上。文件也可以正常打开,如下图:

6. 测试下载被限速的百度云盘,观察是否提速成功

第 5 节提供的下载 python 2.7 文件没有被限速,不能体现本贴程序的提速性能。接下来,测试下载被恶心限速的 xx 云盘的文件,采用的下载链接可以自行从自己的云盘里提取:

我的url是 https://nj01ct01.baidupcs.com/file/...

直接采用浏览器下载时,速度最快达到 18KB/s,且经常出现速度为 0 的情况,下载 3m 多点的文件用了 好几分钟,如下图:

采用本帖下载时,输出如下,用时 65 秒,速度 51 KB/s:

速度提升了 5 倍,我们增加线程数,即增大加速倍数,再试。将线程数目增加到 30,即 令 n=30 时,同样下载该链接,输出如下,用时 12s, 速度 279 KB/s,速度提升了 30 倍:

可见,采用本帖提供的 python 多线程下载百度网盘,的确可以显著提升下载速度。

写在最后

当然,这里只是提供了一种加速下载的方案,代码都是demo级的,可能会有bug,有机会的话,我会把它完善成一个下载工具。

python破解百度云限速_python实战小项目,多线程百度云盘下载,突破限速,超越迅雷超高速下载...相关推荐

  1. python实战小项目,多线程百度云盘下载,突破限速,超越迅雷超高速下载

    原帖:向日葵智能 计划做这样的多线程下载是因为百度云盘限速厉害,到了恶心的地步,我想试试用多线程下载百度云盘的资源是否能够实现加速. 百度云盘限速分析 1. 关于限速,我揣测有两种情况: 限制下载资源 ...

  2. python代码示例百度云-python利用百度云接口实现车牌识别的示例

    一个小需求---实现车牌识别. 目前有两个想法 1. 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 2. 自己实现车牌识别算法(复杂) 一开 ...

  3. python利用百度云接口实现车牌识别

    一个小需求---实现车牌识别. 目前有两个想法 调云在线的接口或者使用SDK做开发(配置环境和编译第三方库很麻烦,当然使用python可以避免这些问题) 自己实现车牌识别算法(复杂) ! 一开始准备使 ...

  4. Python 视频教程百度云分享

    与现在流行的编程语言Java.C.C++等相比较,同样是完成一个功能,Python编写的代码短小精干,开发的效率是其它语言的好几倍.所以如果你想尝试成为程序员,Python将会是一个重要的选择,Pyt ...

  5. Python视频教程百度云免费分享

    与现在流行的编程语言Java.C.C++等相比较,同样是完成一个功能,Python编写的代码短小精干,开发的效率是其它语言的好几倍.所以如果你想尝试成为程序员,Python将会是一个重要的选择,Pyt ...

  6. python利用百度云接口实现文字OCR功能

    python利用百度云接口实现文字OCR功能 1. 前言 在日常生活中有时我们需要从图片中获取文字,虽然QQ上面已经有了相关的功能,但是出于学习的目的,我打算利用百度智能云的文字OCR接口来实现OCR ...

  7. 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码

    前言 1.街霸游戏 1.1 KO街霸 程序完整源码 程序的输出界面 1.2 春丽VS巴洛克 参考源码 2.猜谜游戏 2.1简单的猜数字游戏 项目要求 参考源码 2.2 进阶的猜姓名游戏 项目要求 参考 ...

  8. 九十三、Python使用百度云接口API实现截图,文字识别和语音合成

    @Author:Runsen @Date:2020/7/13 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  9. 千锋中级Python视频百度云

    千锋中级Python视频百度云免费赠送给大家,希望大家在Python学习路上一帆风顺! 所属网站分类: 资源下载 > python视频教程 作者:外星人入侵 原文链接: http://www.p ...

  10. 我用Python把抖音上的美女图片转字符画,期望的AI目标更进一步【机器学习算法实战小项目,k聚类算法图片转化字符画】

    大家好,我是辣条. 最近在学习算法,今天给大家带来一个机器学习实战小项目 项目效果展示 学习目标 1.cv2转换图片数据  2.numpy提取图片矩阵数据  3.k均值算法获取图片的分类 工具使用 开 ...

最新文章

  1. Python中的*args和**kwargs是什么?该如何使用?
  2. HDU 4430 amp; ZOJ 3665 Yukari#39;s Birthday(二分法+枚举)
  3. [记录] JavaScript 中的字符串操作
  4. HDOJ1394 Minimum Inversion Number【线段树】
  5. makefile之目标与依赖(1)
  6. highCharts如何实现json数组数据的图形展示
  7. pom中导入spingside包
  8. Linux的企业-Codis 3集群搭建详解
  9. Lua 之table的测试
  10. cmd /c和cmd /k 以及CMD命令
  11. 联想g510升级换什么cpu好_联想G510笔记本完全拆机指南(图解)
  12. 案例二——网页倒计时(秒杀)
  13. 新版本Google在安装外部扩展插件的时候会提示“程序包”无效的解决方法
  14. esxi怎么传输文件到虚拟机_软路由篇2:3865U软路由折腾记——Esxi软虚拟机+OpenWrt教程
  15. [享学Jackson] 四、控制Jackson行为的特征们之JsonFactory.Feature、JsonGenerator.Feature、JsonParser.Feature
  16. MyDog框架安装步骤
  17. Chocolatey - Software Management for Windows
  18. 老司机都在用的浏览器,体积小功能齐全,直呼内行
  19. ribbon 远程调用工具(Spring Cloud)
  20. 220520-TouchKey设计小结

热门文章

  1. 安装step7 v5.6报错的解决方法
  2. Unity 工具 之 常用插件分类汇总(UI/VR/AR/建模/Shader/动画/网络/AI/资源/数据/区块链等)
  3. QCC303x调试笔记-修改自定义提示音
  4. ArcGIS及ENVI软件下载链接(持续更新...)
  5. 使用ENVI下载雷达图像参考DEM的方法
  6. Ubuntu 字体安装以及 vscode字体配置
  7. Android 学习路线
  8. 12864c与语言字符显示,12864液晶显示C语言程序设计实例
  9. 《遗传算法原理及应用》笔记—绪论
  10. mysql数据库程序设计实例_mysql数据库编程精华案例347个(知此347个例子,便是高手矣)...