什么是 FODI 在 Cloudflare 部署 FODI 后端,https://www.hostccn.com/t/137
前言 FODI 和各大 OneDrive 列表程序(如 OneIndex、PyOne、OneList 等等)一样都是只有前端跑服务器的流量(FODI 甚至可以把前端部署到GitHub Pages 完全不需要自己的服务器)
而下载文件或是在线观看视频直接走的 OneDrive 的直链,也就是直接从微软的服务器上下载
这是这类程序最吸引人的地方——超低成本就能拥有一个超大的分享网盘
然而在有的网络环境下 OneDrive 的速度非常慢,无法正常下载和在线观看视频
这时候聪明的同学只需要富强就可以高速下载 OneDrive 了
然而并不是所有同学都这么聪明……有什么办法可以解决这一点呢?
——如果你是聪明的同学,拥有一台闲置的,带宽和流量都比较大(但是硬盘小)的服务器
你就可以使用反向代理来加速 OneDrive 了!
操作反代之后将使用你的服务器的流量来跑 OneDrive 下载,如果是限制小流量、按流量收费的服务器请谨慎尝试!!
如何操作呢 准备 首先你需要有以下条件
拥有一台服务器(VPS、独立服务器等能够搭建互联网服务的均可,如果是限制小流量、按流量收费的服务器请谨慎尝试) 已经搭建好FODI(OneIndex也可,但本教程没有写明方法,以后可能会写)
///开始 服务器安装好 Nginx 或是 Caddy 等支持反向代理的软件(Caddy的反向代理较简单,教程以 Nginx 为例)
如果使用宝塔面板创建反向代理 直接添加站点,不需要FTP不需要数据库,PHP版本可以选择为纯静态 设置站点,到如图界面
打开自己的 FODI ,随意下载一个文件,然后在下载列表中右键点击下载的文件,选择【复制链接地址】
截选出上图红框中的部分
如
复制出的链接: https://ce-my.sharepoint.com/personal/com/_layouts/15/download.aspx?UniqueId=e46c6e...... 截选的部分: https://c*****e-my.sharepoint.com 把截选出来的部分填入步骤2的【目标url】中,提交即可
完成这个步骤后可以跳过下面不使用宝塔面板的步骤
如果不使用宝塔面板创建反向代理
直接使用 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" //填入你创建的
然后翻到代码最下面,找到两个 return JSON.stringify ,在最下面的那个的最后添加代码(注意要有前面的点)
.replace(RegExp(ORIGIN_URL,"g"),PROXY_URL)
最后保存
然后直接打开 workers.dev 链接
等待返回结果,如果你的首页有文件(而不是只有文件夹)的话,可以看到返回的 url 里已经是你创建的反代网站的地址了
去 FODI 随便下载个文件试试吧~(同样下载的时候,下载列表里可以【复制链接地址】,然后粘贴出来,看看是不是已经是自己创建的反向代理的链接了)