全球主机交流论坛

标题: 最近研究了一个绝活 [打印本页]

作者: 好鸭    时间: 2022-6-15 11:10
标题: 最近研究了一个绝活
本帖最后由 好鸭 于 2022-6-15 12:07 编辑

就是下载别人的OneDrive分享链接


OD超限的问题就很难搞,429是很常见的


有个工具是分享链接获取直链+aria2下载的,可以保持原有目录,挺棒的,但是,429问题很难搞,导致下载了一堆里面是html的内容,写什么什么超限之类的内容


而且429的几率特别高,真的很高,推送几十个链接,只能下载成功几个,有可能是多线程下载的问题,可是aria2调低了线程数和任务数问题依旧没什么缓解。


后面发现用wget,这个问题出现几率就低(同样的文件),而且用国外小鸡单线程下载也蛮快的,大文件的话经常可以在50MB/s以上(小文件没跑起来就下载完了)


就获取了直链,wget -c -x -i,就可以了,配合我之前发过的获取cookie脚本,直接写死循环一直下载(只下载一遍肯定下不全的,可恶的OD限制),但是需要大盘,以及时间


后来遇到个问题,就是文件名过长的问题,就是od/sp的那个目录,很长(文件名过长报错,无法保存文件)


接着想了个解决方法,就是我说的绝活


用nginx 301一下,就可以缩短网址了


顺便把配置贴上来吧


  1. server {
  2.     listen      80;
  3.     server_name download;
  4.     location / {
  5.         return 301 https://xxxxx-my.sharepoint.com/personal/xxxxx_xxxxx_onmicrosoft_com/Documents/Document/$request_uri;
  6.     }
  7. }
复制代码


server_name download;可以自己改,这个将会是你下载的文件夹
然后需要在hosts指向本地,就是启动了nginx的地方,也不一定要本地弄,但是本地快一点
echo 127.0.0.1 download

如果需要可以弄个docker镜像,这样就不需要本机有nginx了,也不需要占用本地的端口,相应的Hosts指向docker容器的ip就好了,默认是172.17.x.x的,不知道映射端口出来用保存的目录会不会带端口,没试过,如果不带就更简单了(可以直接用caddy之类的,更简单),但是我感觉我这个需求,应该比较少,我自己用我就懒得弄了


这样操作过后

保存下来的文件就是这样的
  1. download/mp3/12345.mp3
  2. download/mp4/1234567.mp4
复制代码


没有这样弄,就是这样的
  1. xxxxx-my.sharepoint.com/personal/xxxxx_xxxxx_onmicrosoft_com/Documents/Document/mp3/12345.mp3
  2. xxxxx-my.sharepoint.com/personal/xxxxx_xxxxx_onmicrosoft_com/Documents/Document/mp4/1234567.mp4
复制代码


差别还是很大的,主要是文件名太长的时候就不行了,不然其实无所谓


虽说可以另外写个脚本,wget的时候指定-O保存文件,但是有点繁琐,需要从链接中提取目录,文件名,然后创建目录,下载文件,估计没有十几二十行代码下不来,用-x多是一件美事啊


aff地址:https://fd.vvwvv.eu.org/thread-1032985-1-1.html?aff=1000

再贴一下我之前发过的《curl获取OneDrive分享链接的cookie用来下载直链》
带aff:https://fd.vvwvv.eu.org/thread-1018757-1-1.html?aff=1000

直接给一段示例吧,curl那个命令的url一定要改成分享链接,就是分享链接,不是你打开之后又从浏览器地址栏复制的,很重要!
获取到的直链放在urls.txt
  1. 记得把获取到的直链中的
  2. https://xxxxx-my.sharepoint.com/personal/xxxxx_xxxxx_onmicrosoft_com/Documents/Document
  3. 改成
  4. http://download
复制代码
  1. cookie="$(curl -sL 'https://xxxxx-my.sharepoint.com/:f:/g/personal/xxxxx_xxxxx_onmicrosoft_com/xxxxxxxx' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36' -s -I|grep set-cookie|grep FedAuth|sed 's/set-cookie: //'|sed 's/;.*//')"
  2. wget --header "cookie: $cookie" -c -x -i urls.txt
复制代码

加死循环就是下面这样,文件很多的时候可以这样循环一下,挂一晚上第二天看看下齐全了没有
  1. while true;do
  2. cookie="$(curl -sL 'https://xxxxx-my.sharepoint.com/:f:/g/personal/xxxxx_xxxxx_onmicrosoft_com/xxxxxxxx' -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36' -s -I|grep set-cookie|grep FedAuth|sed 's/set-cookie: //'|sed 's/;.*//')"
  3. wget --header "cookie: $cookie" -c -x -i urls.txt
  4. done
复制代码


作者: coouk    时间: 2022-6-15 11:11
qpzc
作者: aes    时间: 2022-6-15 11:12
感谢大佬分享
作者: antbt    时间: 2022-6-15 11:20
请教大佬,OD分享的文件如何批量下载?
作者: 冲浪麦浪花郎    时间: 2022-6-15 11:22
已阅
作者: 好鸭    时间: 2022-6-15 11:23
antbt 发表于 2022-6-15 11:20
请教大佬,OD分享的文件如何批量下载?

就获取了直链,wget -c -x -i,就可以了
作者: IDC_Global    时间: 2022-6-15 11:25
谢谢分享的大佬
作者: antbt    时间: 2022-6-15 11:27
好鸭 发表于 2022-6-15 11:23
就获取了直链,wget -c -x -i,就可以了

网上找了找,用那个油猴脚本获取直链吗?
作者: 好鸭    时间: 2022-6-15 11:30
antbt 发表于 2022-6-15 11:27
网上找了找,用那个油猴脚本获取直链吗?

嗯,用那个就可以,不过我是用那个python推送aria2的改了一下,都差不多,就是油猴那个文件多的时候要等好一阵子,浏览器有点卡
作者: vanechka    时间: 2022-6-15 11:35
支持技术贴
作者: antbt    时间: 2022-6-15 11:58
好鸭 发表于 2022-6-15 11:30
嗯,用那个就可以,不过我是用那个python推送aria2的改了一下,都差不多,就是油猴那个文件多的时候要等 ...

谢谢大佬,下午有空了我去试试
作者: troforit    时间: 2022-6-15 12:07
感谢大佬分享
作者: pulpfunction    时间: 2022-6-15 12:11
od没有那么多资料
作者: omo.moe    时间: 2022-6-15 12:12
一次性官方api.最多只能5000目录,一个个查询结构基本上只能11000-13000个文件就会出错,目前尚未出现完美解决数万文件目录获取的方式
作者: antbt    时间: 2022-6-16 01:03
感谢大佬指教,已经在批量下载了。
作者: chen5144    时间: 2022-6-16 14:05
谢谢作者分享·····




欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/) Powered by Discuz! X3.4