在有的网络环境下 OneDrive 的速度非常慢，OneIndex 等类似程序无法正常下载和在线观看视频，如果自己有服务器可以使用反向代理来加速什么是 FODIFast 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 为例）如果使用宝塔面板创建反向代理直接添加站点，不需要FTP不需要数据库，PHP版本可以选择为纯静态设置站点，到如图界面打开自己的 FODI ，随意下载一个文件，然后在下载列表中右键点击下载的文件，选择【复制链接地址】截选出上图红框中的部分如复制出的链接： https://c*****e-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 Response.redirect(url, 302) 在其后面添加.replace(RegExp(ORIGIN_URL,"g"),PROXY_URL)（注意要有前面的点）添加后变成return Response.redirect(url.replace(RegExp(ORIGIN_URL,"g"),PROXY_URL), 302)然后翻到代码最下面，找到两个 return JSON.stringify ，在最下面的那个的最后添加代码（注意要有前面的点）.replace(RegExp(ORIGIN_URL,"g"),PROXY_URL)最后保存然后直接打开 workers.dev 链接等待返回结果，如果你的首页有文件（而不是只有文件夹）的话，可以看到返回的 url 里已经是你创建的反代网站的地址了去 FODI 随便下载个文件试试吧~（同样下载的时候，下载列表里可以【复制链接地址】，然后粘贴出来，看看是不是已经是自己创建的反向代理的链接了）结束语OneIndex 等其他类似程序也可以这样反代，有兴趣的小伙伴可以自行研究自己使用的 OneDrive 列表程序的代码并替换 url 。其实我最开始就是在 OneIndex 实现的反代，之所以最后选择 FODI 是因为我单纯地觉得他列出文件的方式更简洁好看。精选评论超音速：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 的下面即可！