之前老是看大佬们秀OneDrive的速度,现在好了国际版OneDrive到国内就十几KB的速度,目前也找到个方法可以把OneDrive套到免费的Cloudflare Work上面。让OneDrive搭建成OneIndex的网盘程序的下载流量不走OneDrive,走Cloudflare,电信的速度应该有挺大的改善(在撸黄之前)

已放弃使用该方法,目前使用CDN反代,详情移步使用Onelist搭建OneDrive,可以用CDN反代加速下载

首先要准备的东西有

  1. Cloudflare账户一个
  2. OneDrive网盘账户一个
    注意事项,本文演示的是程序为OneIndex,在线播放和直接点下载按钮依然会回到OneDrive直链下载,需要复制连接到下载器或者播放器里面进行播放
    ##具体教程
  3. 首先注册登录Cloudflare没注册的先注册这个应该都有,进入后点击下面的workers
    进入workers图片.jpg

  4. 进去后设置一个子域,这个填自己的,这个子域不可改正三思而后行。
    设置子域.jpg

  5. 接着选择免费的计划 Free Plan,免费每天只能有十万条请求,被刷完了就会报错,紧接着会发送一份邮件到你的注册邮箱
    收邮件.jpg
  6. 如果没收到邮件就点下面的Resend email,我等了一会儿没收到点了resend就收到了
    邮件
  7. 点击邮件链接进入后登录你的Cloudflare账户就可以完成验证
    Workers的后台长这样
    worker后台.jpg

  8. 点击create a worker进入后台
    复制Workers-Proxy的代码,放在文章最后
    修改方法.jpg
    const upstream = 后面修改为你的项目地址 在你的右侧
    加速域名可以自己改,修改右侧的即可
    下面两个修改为你自己加速域名
    const upstream_path =
    const upstream_mobile =
    然后保存代码

接着打开你的加速域名就可以进入反代页面,测试反代后如果点击下载链接依然是OneDrive的直链 但是你复制连接到下载器里面下载可以加速下载测试速度可以到6M左右
原地址http://v.xiaoxianzong.com
CloudFlare Work加速后地址https://od.xiaoxianzong.workers.dev
已放弃使用该方法,目前使用CDN反代。

下载测试.jpg
代码保存

// List of domains bind to your WorkersProxy. 所有绑定到这个worker的域名
const domain_list = ['项目域名', '这里需要填写你的项目域名']

// Website you intended to retrieve for users.要加速的网站.
const upstream = 'OneIndex反代域名'

// Website you intended to retrieve for users using mobile devices.要给手机用户加速的网站. (可以填成和上面一样的)
const upstream_mobile = ' OneIndex反代域名'

// Countries and regions where you wish to suspend your service.要屏蔽的地区,已删除CN
const blocked_region = [ 'KP', 'SY', 'PK', 'CU']

// IP addresses which you wish to block from using your service.要屏蔽的ip
const blocked_ip_address = ['0.0.0.0', '10.0.0.0']

addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event.request));
})

async function fetchAndApply(request) {

    const region = request.headers.get('cf-ipcountry').toUpperCase();
    const ip_address = request.headers.get('cf-connecting-ip');
    const user_agent = request.headers.get('user-agent');
    let response = null;
    let url = request.url;

    if (await device_status(user_agent)){
        upstream_domain = upstream
    } else {
        upstream_domain = upstream_mobile
    }

    for(let domain of domain_list) {
        url = url.replace(domain, upstream_domain)
    };

    if (blocked_region.includes(region)) {
        response = new Response('Access denied: WorkersProxy is not available in your region yet.', {
            status: 403
        });
    } else if(blocked_ip_address.includes(ip_address)){
        response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', {
            status: 403
        });
    } else{
        let method = request.method;
        let headers = request.headers;
        response = fetch(url, {
            method: method,
            headers: headers
        })
    }
    return response;
}

async function device_status (userAgentInfo) {
    var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
    var flag = true;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;
            break;
        }
    }
    return flag;
}

感谢大佬的开源程序
https://github.com/Siujoeng-Lau/Workers-Proxy


一步之遥 交错而过