none.gif

SCGabriel

[教学][Linux]如何优雅地用aria2软件批量下载OneDrive分享文件

【前言】 
        这个事情起因是咱大概好几年没上这个论坛,突然上线看到资源区一位大佬⑨在去年分享了ecchi.iwara.tv全站备份,大概1.6TB,用的是onedrive。但是onedrive的分享页面对于大量文件的下载做的很糟糕,而微软的政策又不允许一键转存,大佬提供的OneDrive公车帐号基本处于禁止登录状态,也无法使用Rclone。这个事态就让咱这种萌新不知如何是好,不过萌新没有办法,大佬那肯定有办法,咱去github翻了蛮久时间,果然有大佬制作了aria2的批量下载Python脚本。

        这个帖子主要目的就是看到论坛没有相关方面的教程,所以制作来简单介绍下这个脚本如何使用,方便造福大众。

【软件效果展示】

【注意事项】
1⃣️本教程仅针对Linux系统,因为绝大多数服务器都是Linux系统,方便大家用大带宽高速转移。而且Linux相对于Windows系统来说,安装软件也比较方便。
2⃣️本教程需要用户对Linux命令行基础操作大致都懂,因此基础命令不会做过多解释。
3⃣️这个脚本应该也是完全可以在windows系统上使用的,就是windows安装Python库和Aria2c步骤不一样,其他都一样。
【批量下载脚本地址】
https://github.com/Henryzhao96/sharepoint-batch-download-listgen
【教程正文】
本文以Ubuntu20.04为例,其他系统一致,并以⑨大佬搬运的Onedrive作为示范,搬运地址如下
https://bbs.white-plus.net/read.php?tid-382249-fpage-0-toread--page-1.html
1⃣️首先打开Ubuntu终端,执行以下命令安装必要软件,如果已经安装Python和Aria2可以略过
sudo apt install python-setuptools python-dev build-essential screen aria2c git
2⃣️打开脚本github页面(可能需要科学上网),按照图示复制脚本的下载链接
3⃣️随便新建一个文件夹并且打开,执行
下载该脚本。打开脚本文件夹,删除无用文件,然后再执行
chmod +x sharepoint_gen_aria2_download_list.py
赋予这个文件可执行权限。
4⃣️然后就可以先把终端放一边,用Chrome浏览器打开⑨大佬提供的三个OneDrive下载地址的任意一个,并在设置里打开开发者选项。
5⃣️在开发者菜单里,切换到“Network”这一栏,在“Filter”(就是过滤搜索栏)里面输入“RenderListDataAsStream“,然后重新刷新网页,会看到过滤出好几个结果,随便选择一个有“@a1“字样的结果打开。6⃣️在打开结果里面“Headers”这一个分栏下面,咱们可以在“Request Url”这行看到Onedrive的真实文件夹地址,这个地址就是等会脚本需要用到的下载地址,但是需要稍做修改。首先咱们观察一下这个Onedrive分享页面,在"ecchi.iwara.tv"这个文件夹下面有许多“video”、“video2”、“video3”等等文件夹。如果你想下载整个分享文件夹,那只需要按照图示复制地址之后,在后面加上“Documents/“就行
示例1
https://nyaaacnz-my.sharepoint.com/personal/north_nyaaacnz_onmicrosoft_com/Documents/这样待会脚本就会把"ecchi.iwara.tv"文件夹整个全部下载下来。但是如果你只想下载其中一个video文件夹,那么只需要在示例1的基础上再加上完整的文件路径;
示例2
https://nyaaacnz-my.sharepoint.com/personal/north_nyaaacnz_onmicrosoft_com/Documents/ecchi.iwara.tv/video3/这样待会脚本就只会下载“video3”这一个文件夹下的所有内容,以此类推。7⃣️光有实际地址不行,这个脚本还需要有你浏览器的cookie。因此在“Headers”这一分栏下继续往下翻,找到“Set-Cookie”这一行,然后从“FedAuth=”后面开始,一直到第一个分号,所有内容全部复制并保存下载,这个是待会脚本需要用的Cookie。8⃣️回到Ubuntu终端,用
./sharepoint_gen_aria2_download_list.py
直接执行这个py脚本,脚本会提示你输入onedrive真实地址,把刚刚获取的真实地址复制上去并回车。接着脚本又会向你索要浏览器Cookie,照做。最后,脚本会问你希望下载到哪个文件夹,这里输入一个绝对路径就可以了。然后这个脚本就会开始工作,在同一个文件夹生成包含所有下载地址的txt文档,最后在终端屏幕上生成了一条以“aria2c”开头的命令,你只要执行这个命令,就会开始调用aria2c这个下载器依次下载整个Onedrive共享目录的文件,可靠性99%,比网页下载可靠的多。9⃣️(一个好的教程是必定要有第9⃣️个步骤的)当你执行执行最后这个aria2c的命令时候,可以自己在后面添加一点aria2的rpc远程控制参数的,比如“ --enable-rpc=true --rpc-allow-origin-all=true --rpc-listen-all=true --rpc-secret=xxxx --rpc-listen-port=65535“等等,这样就可以用ariaNG等面板远程监控aria2的下载情况。另外一点,Linux直接执行aria2c命令之后是不能关闭终端或者从ssh断开的,断开了或者关闭终端程序进程就会终止。因此大家可以使用screen等命令建立一个后台运行的进程,详细用法可以百度或者Google这里不再赘述。
【结尾】
这里的话咱附带提供一个可以免费自助申请Microsoft 365 A3子账户的地址,A3是包含一个5TB的OneDrive,Office365桌面和一个win10的激活。想要试下Onedrive的可以尝试注册,但是不推荐长期保存重要数据,因为很不稳定,容易翻车。(其实想赚点sp下站内资源
此帖售价 0 SP币,已有 43 人购买
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!

814836.png

地瓜叶

B1F  2020-05-18 20:59
(为没有牛头人的纯爱世界献上祝福)
流鼻哟

none.gif

SCGabriel

希望少点人用百度盘那种下载速度巨慢的网盘,onedrive只是在国内被半墙,在国外基本都是满速,服务器上下载都是40+MB/s的速度。但凡会用点科学上网的人,onedrive网盘的速度都比百度那个渣盘快的多。

none.gif

e1074203

没用过Linux表示只能老老实实的用idm一个个下了   

silent-sun-f913.s13.workers.dev

666

OneDrive最蛋疼的是分享限制

none.gif

SCGabriel

回 3楼(e1074203) 的帖子

windows也可以用的,只要去下载Python库和aria2c,都有win版,然后双击py脚本执行,获取到下载命令之后替换aria2c成你aria2程序的位置,然后整条命令贴到cmd执行就行

1251981.jpg

梦回缘某空

B6F  2020-05-18 22:55
(已退坑,无法二次补档)
我寻思着用IDM它不香吗?我直接可以用IDM下,速度10M,应该不算慢吧   

none.gif

SCGabriel

回 6楼(梦回缘某空) 的帖子

服务器多为Linux呀,用1Gbps对等不香嘛。IDM貌似没有LInux。
不过随便怎么下都可以,咱这就提供一个方法。

934365.jpg

d54236f8

B8F  2020-05-18 23:02
(搬运工..)

回 2楼(SCGabriel) 的帖子

表示科学上网的节点只有2M不到的速度, 只能度盘讲究了

none.gif

SCGabriel

回 8楼(d54236f8) 的帖子

换个快点的节点吧。。。。

889485.png

我叫拉法姆

B10F  2020-05-21 10:48
(拉法姆才是____)
收下了,谢谢楼主分享,大概今天就能下完

889485.png

我叫拉法姆

B11F  2020-05-21 13:54
(拉法姆才是____)
用浏览器打开提取出来的连接,交给idm下载,可以60M/s

但是使用aria2,只有10M/s,多线程、多任务也无解。

不太清楚原因,还在排查

f3354e68e1a2e46a.jpg

master

B12F  2020-05-21 13:56
(有一天,名叫总有一天。但是还有一天,是「总有一天」的第二天。)
真大佬,支持了,常来玩啊大佬

none.gif

SCGabriel

回 11楼(我叫拉法姆) 的帖子

咱300Mbps的服务器是接近40MB/s,几乎就可以说是到了带宽上限了
微软对OneDrive的api有请求频率限制,之前用rclone就遇到过被限速的情况orz
IDM按道理其实和aria2一样,都是多线程分块下载,咱也不知道你那边是什么情况

889485.png

我叫拉法姆

B14F  2020-05-21 15:18
(拉法姆才是____)

回 13楼(SCGabriel) 的帖子

应该不是外部限制,多半是请求头的问题

我用idm批量下载,用charles重写cookie,可以达到6Gb/s

none.gif

SCGabriel

回 14楼(我叫拉法姆) 的帖子

那太高端了,大佬大佬,咱玩不来喵

none.gif

0000

OneDrive最蛋疼的是分享限制

a4.gif

beyonjoke

大佬厉害

835518.png

兔肉球

B18F  2020-05-25 10:08
(兔司姬的貓球,橘貓的貓球。我是个天才哦( • ̀ω•́ )✧)
我听不懂,但是大佬流弊就对了

a3.gif

alex

B19F  2020-05-25 14:54
(alex)
我两年前就把这个给转存到Googledrive还分享出来了

20200621074431_bgqiu.jpg

xepo

B20F  2020-05-25 15:01
(吾心吾行澄如明镜,所作所为皆为正义!我が心と行動に一点の曇 ..)

回 19楼(妖擘) 的帖子

谷歌盘分享一下

none.gif

SCGabriel

回 4楼(666) 的帖子

编辑掉

silent-sun-f913.s13.workers.dev

666

回 21楼(SCGabriel) 的帖子

不知道啥版本,反正是sharepoint的链接,下多了就会有访问限制,过段时间才能下,但是具体的标准不明

1303680.jpg

accelerate12138

B23F  2020-06-04 15:06
(accelerate12138)
前排围观大佬们各显神通
(我又燃起了学习的欲望 虽然不知道学不学的会就是了

none.gif

SCGabriel

回 22楼(666) 的帖子

好吧,刚刚问了别人知道是啥回事。

不过用onelist这种把OneDrive挂载成网页目录的形式,咱基本没有遇到过下载限制。

1084388.jpg

何者

要是再把gd挂在vps上,那不就直接可以实现od转gd

1084388.jpg

何者

回 25楼(何者) 的帖子

但是我是512MB/10GB无限流的小鸡,aria2还是要先缓存到本地吧
没救了没救了

1084388.jpg

何者

回 25楼(何者) 的帖子

好像可以在厂家那加硬盘