NicoNicoNi.Cc - OneDrive
type: channel
link: https://niconiconi.cc/tag/OneDrive/
items: 反代 OneDrive ：OneIndex 实现高速下载在线观看视频
items: 反向代理 FODI 实现高速下载 OneDrive

反代 OneDrive ：OneIndex 实现高速下载在线观看视频
type: item
date: 2020-03-09T11:26:00+08:00
description: 什么是 OneIndexOnedrive Directory Index功能：不占用服务器空间，不走服务器流量，直接列出 OneDrive 目录，文件直链下载。DemoGitHub安装教程开始【注意】操作反代之后，虽然能提升 OneIndex上的下载和预览速度，但将失去[不走服务器流量]的优势！将使用你的服务器的流量来跑 OneDrive 下载，如果是限制小流量、按流量收费的服务器请谨慎尝试！！准备拥有一台服务器（ VPS、独立服务器等能够搭建互联网服务的均可）已经搭建好 OneIndex反向代理自己的 OneDrive 地址参考这里的【开始】部分和【如果使用宝塔……】或【如果不使用宝塔】https://niconiconi.cc/blog/202.html修改 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'=>$item['@microsoft.graph.downloadUrl'], 最后如下foreach((array)$data['value'] as $item){ //var_dump($item); $items[$item['name']] = array( 'name'=>$item['name'], 'size'=>$item['size'], 'lastModifiedDateTime'=>strtotime($item['lastModifiedDateTime']), 'downloadUrl'=>str_ireplace("截取的链接","反代的链接",$item['@microsoft.graph.downloadUrl']), 'folder'=>empty($item['folder'])?false:true ); }其中 【截取的链接】 和 【反代的链接】 对应前面在宝塔或是 Nginx 配置文件中自己设置的链接完成后保存，并访问自己搭建的 OneIndex 测试是否成功后言之所以使用 OneDrive 列目录程序 + 反向代理 OneDrive 服务器，而不是直接使用私有网盘+挂载 OneDrive 。。是因为我这边测试了下有以下的问题许多私有网盘不支持 OneDrive 挂载若使用 rclone 挂载 OneDrive ，再用网盘程序下载文件，服务器CPU会飙升100%，下载速度归0rclone 自带的 web 功能性不足（没有测试过就得出的结论，不过这是显而易见的）

反向代理 FODI 实现高速下载 OneDrive
type: item
date: 2020-03-08T22:55:00+08:00
description: 在有的网络环境下 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-Cont…