笨猫博客

  • 🍟首页
  • 🍘目录
    • 🥝VPS教程
    • 🍾猫玩技术
    • 🍹干货分享
    • 🍏软件分享
    • 🍩一只猫
  • 🍋工具
    • 🌽IP路由追踪
    • 🍐域名Whois查询
    • 🥘域名被墙查询
    • 🍧IP正常检测
    • 🔥IP端口检测
    • 🍆短网址
    • 🐟VIP音乐播放
    • 🍯KMS激活
  • 🍓链接
  • 🍪联系
  • 🍱登录
    • 🥦登录
    • 🍒注册
关注互联网,生活,音乐,乐此不疲的一只笨猫
  1. 首页
  2. 猫玩技术
  3. 正文

FODI反向代理 实现高速下载 OneDrive网盘文件

2020-03-12 10574点热度 1人点赞 5条评论

在有的网络环境下 OneDrive 的速度非常慢,OneIndex 等类似程序无法正常下载和在线观看视频,如果自己有服务器可以使用反向代理来加速

什么是 FODI

Fast OneDrive Index / FODI,无需服务器的 OneDrive 快速列表程序

GitHub DEMO 安装方法

前言

FODI 和各大 OneDrive 列表程序(如 OneIndex、PyOne、OneList 等等)一样都是只有前端跑服务器的流量(FODI 甚至可以把前端部署到GitHub Pages 完全不需要自己的服务器)

而下载文件或是在线观看视频直接走的 OneDrive 的直链,也就是直接从微软的服务器上下载

这是这类程序最吸引人的地方——超低成本就能拥有一个超大的分享网盘

然而在有的网络环境下 OneDrive 的速度非常慢,无法正常下载和在线观看视频

这时候聪明的同学只需要富强就可以高速下载 OneDrive 了

然而并不是所有同学都这么聪明……有什么办法可以解决这一点呢?

——如果你是聪明的同学,拥有一台闲置的,带宽和流量都比较大(但是硬盘小)的服务器

你就可以使用反向代理来加速 OneDrive 了!

操作反代之后将使用你的服务器的流量来跑 OneDrive 下载,如果是限制小流量、按流量收费的服务器请谨慎尝试!!

如何操作呢

准备

首先你需要有以下条件

  • 拥有一台服务器(VPS、独立服务器等能够搭建互联网服务的均可,如果是限制小流量、按流量收费的服务器请谨慎尝试)
  • 已经搭建好FODI(OneIndex也可,但本教程没有写明方法,以后可能会写)

开始

服务器安装好 Nginx 或是 Caddy 等支持反向代理的软件(Caddy的反向代理较简单,教程以 Nginx 为例)

如果使用宝塔面板创建反向代理

  1. 直接添加站点,不需要FTP不需要数据库,PHP版本可以选择为纯静态
  2. 设置站点,到如图界面image-20200308215811353
  3. 打开自己的 FODI ,随意下载一个文件,然后在下载列表中右键点击下载的文件,选择【复制链接地址】image-20200308220857092
  4. 截选出上图红框中的部分如
    复制出的链接:
    https://c*****e-my.sharepoint.com/personal/*****com/_layouts/15/download.aspx?UniqueId=e46c6e......
    截选的部分:
    https://c*****e-my.sharepoint.com
  5. 把截选出来的部分填入步骤2的【目标url】中,提交即可image-20200308221026619

完成这个步骤后可以跳过下面不使用宝塔面板的步骤

如果不使用宝塔面板创建反向代理

直接使用 Nginx 设置配置文件

进行以下步骤请保证你有使用 Nginx 建站基础,服务器上已经安装 Nginx

如果不使用ssl证书(强烈建议使用ssl证书,否则可能会出现未知错误)

server
{
    listen 80;
    server_name yours.domainname.com;#把这里改成你的站点域名(不能和FODI前端一样!)
    
    location  ~* \.(php|jsp|cgi|asp|aspx)$
    {
        proxy_pass https://yours.sharepoint.com;#把这里改成使用宝塔面板步骤3、步骤4的截选出的链接
        proxy_set_header Host yours.sharepoint.com;#把这里改成上面链接去掉https://
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Range $http_range;#此项感谢评论区超音速的提醒
    }
    location /
    {
        proxy_pass https://yours.sharepoint.com;#把这里改成使用宝塔面板步骤3、步骤4的截选出的链接
        proxy_set_header Host yours.sharepoint.com;#把这里改成上面链接去掉https://
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Range $http_range;#此项感谢评论区超音速的提醒
        
        add_header X-Cache $upstream_cache_status;
        add_header Cache-Control no-cache;
        expires 12h;
    }
    
}

【推荐】如果使用ssl证书(ssl证书请自行解决)

server
{
    listen 80;
    listen 443 ssl http2;
    server_name yours.domainname.com;#把这里改成你的站点域名(不能和FODI前端一样!)
    
    ssl_certificate    /usr/share/nginx/ssl/pem.crt;#修改成自己的ssl证书(PEM格式)的存放位置
    ssl_certificate_key    /usr/share/nginx/ssl/ssl.key;#修改成自己的ssl密钥(KEY)的存放位置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
location  ~* \.(php|jsp|cgi|asp|aspx)$
    {
        proxy_pass https://yours.sharepoint.com;#把这里改成使用宝塔面板步骤3、步骤4的截选出的链接
        proxy_set_header Host yours.sharepoint.com;#把这里改成上面链接去掉https://
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Range $http_range;#此项感谢评论区超音速的提醒
    }
    location /
    {
        proxy_pass https://yours.sharepoint.com;#把这里改成使用宝塔面板步骤3、步骤4的截选出的链接
        proxy_set_header Host yours.sharepoint.com;#把这里改成上面链接去掉https://
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header Range $http_range;#此项感谢评论区超音速的提醒
        
        add_header X-Cache $upstream_cache_status;
        add_header Cache-Control no-cache;
        expires 12h;
    }
}

完成之后重启nginx,如无报错则继续接下来的步骤

测试刚刚建的站是否能正常访问

直接浏览器访问 http://yours.domainname.com (或使用了ssl后 https://yours.domainname.com )

打开后白屏的话等待一会儿,直到跳转到微软的登录界面即为成功

如果不成功则检查上面的配置,实在找不到问题可以把配置发到评论来检查下

修改FODI的后端的代码

打开 CloudFlare 的 Workers 的代码编辑界面

添加如下内容到 const ONEDRIVE_REFRESHTOKEN 的下面

const ORIGIN_URL = "https://yours.sharepoint.com"    //填入上面截选出的链接
const PROXY_URL = "https://yours.domainname.com"    //填入你创建的

image-20200308223009141

然后翻到代码最下面,找到两个 return JSON.stringify ,在最下面的那个的最后添加代码(注意要有前面的点)

.replace(RegExp(ORIGIN_URL,"g"),PROXY_URL)

image-20200308223519973

最后保存

然后直接打开 workers.dev 链接

image-20200308223826497

等待返回结果,如果你的首页有文件(而不是只有文件夹)的话,可以看到返回的 url 里已经是你创建的反代网站的地址了

image-20200308224141014

去 FODI 随便下载个文件试试吧~(同样下载的时候,下载列表里可以【复制链接地址】,然后粘贴出来,看看是不是已经是自己创建的反向代理的链接了)

结束语

OneIndex 等其他类似程序也可以这样反代,有兴趣的小伙伴可以自行研究自己使用的 OneDrive 列表程序的代码并替换 url 。

其实我最开始就是在 OneIndex 实现的反代,之所以最后选择 FODI 是因为我单纯地觉得他列出文件的方式更简洁好看。

OneIndex的方法如下:

前面步骤和文章一样
修改程序的步骤
打开 oneindex目录/lib/onedrive.php
找到

foreach((array)$data['value'] as $item){

//var_dump($item); $items[$item['name']] = array( 'name'=>$item['name'], 'size'=>$item['size'], 'lastModifiedDateTime'=>strtotime($item['lastModifiedDateTime']), 'downloadUrl'=>$item['@microsoft.graph.downloadUrl'], 'folder'=>empty($item['folder'])?false:true ); }

并修改 downloadUrl 为
'downloadUrl'=>str_ireplace("截取的链接","反代的链接",$item['@microsoft.graph.downloadUrl']),

精选评论

超音速:
2020-03-09 07:50
另外还有一个问题,还是大文件下载他会预先下载部分内容,对于小硬盘来说会直接撑爆硬盘,还有预载的超快下载速度会使CPU很容易占用超过50%(针对某mach机器和其他限制严重机器)还要再限制一下缓存占用

#↓↓↓↓↓以下是小缓存设置↓↓↓↓
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 2M;
proxy_busy_buffers_size 10M;
proxy_max_temp_file_size 0;
#↓↓↓↓↓↓↓↓以下是0缓存设置↓↓↓
proxy_buffering off;

以上内容添加到 宝塔反向代理配置中,或是 Nginx 配置中的很多排的 proxy_set_header 的下面即可!

转自:https://niconiconi.cc/blog/202.html

标签: FODI OneDrive 反向代理
最后更新:2020-03-14

笨猫

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • KinWinder

    博主,我想知道olaindex怎么改啊?

    2020-03-30
  • 笨猫

    这个不用改,这个只是针对ONEDRIVE国际版的加速,任何程序都可以使用FODI

    2020-04-01
  • penn

    博主,反代vps推荐什么配置?

    2020-10-06
  • 笨猫

    @penn 当然大带宽的机子了。流量是费得你VPS的。

    2020-10-08
  • SomeBottle

    感谢博主分享。咱之前一直在用php脚本进行转发,用nginx尝试失败了,看了这篇文章成功了 :tushe:

    2021-01-28
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    最新 热点 随机
    最新 热点 随机
    WIN10系统彻底永久关闭自动更新 WinRAR 商业版下载安装和白嫖指南 Certbot申请谷歌免费SSL证书 宝塔面板卸载全解析:命令与脚本两种方式详解 SSL证书密钥类型选择RSA还是ECC算法?对网站的影响及建议 万能 一键dd windows 脚本, 含 win10/win11/server2025官方最精简版,一键激活+VC运行库
    煎饼大佬的一键DD/重装脚本DD一个轻量的Alpine+Linux+发行版+更轻+更快+更安全LibreTV - 免费在线视频搜索与观看平台万能 一键dd windows 脚本, 含 win10/win11/server2025官方最精简版,一键激活+VC运行库SSL证书密钥类型选择RSA还是ECC算法?对网站的影响及建议宝塔面板卸载全解析:命令与脚本两种方式详解
    免费开源播放器Miro发布1.0版! 国内第一大虚拟世界HIPIHI正式开放注册! WP China Yes:一款解决国内WordPress升级更新的插件 不需PS超简单制作圆角图片的方法!推荐在线制作圆角图片修改工具网站 阿里云盘:免费撸66年100G空间任务快速完成攻略 在线密码管理专家豌豆网(Onedoor)推出个性化主页服务
    最近评论
    龙笑天 发布于 3 周前(05月25日) 一直用的萌咖的路过 :smile:
    C 发布于 1 个月前(05月04日) 有个更省心的路子,上传到 catbox.moe,然后用 i0.wp.com 做加速(也支持heif格...
    薯条 发布于 3 个月前(03月21日) 这个博客18年了吗,好久了哎
    Q 发布于 3 个月前(03月19日) 您好: 我的一个WORDPRESS站点,安装了 wp telegram插件,我在配置了Bot ...
    喂 发布于 3 个月前(03月08日) 热帖ggww
    标签
    elliptictrue100.10.02
    BLOG ChatGPT Chrome CloudFlare DirectAdmin github Godaddy google kloxo Linux OneDrive OneIndex PHP QQ shadowsocks SNS ssh Typecho VPS web2.0 whmcs Windows wordpress 一键脚本 下载 免费 博客 图文教程 图标 图片 域名 头像 奥运 宝塔面板 插件 教程 日记 有趣 浏览器 游戏 猫 生活 电影 百度 网站 视频 设计 软件 阿里云盘 音乐
    好友
    • glzjin's blog glzjin's blog
    • ZAERA博客
    • 冰沫记
    • 奇它博客
    • 猫腻‘s Blog
    • 猫饭
    • 肥宅之家
    • 萌博
    • 野路子程序员

    COPYRIGHT © 2022 笨猫博客. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang