使用Cloudflare加速网站访问

使用Cloudflare加速网站访问

创建时间
Aug 15, 2024 09:18 AM
标签
代理
教程
发布日期
Oct 16, 2021

新建 workers,粘贴以下代码

// 替换成你想镜像的站点 const upstream = 'xxxx.herokuapp.com' // 如果那个站点有专门的移动适配站点,否则保持和上面一致 const upstream_mobile = 'xxxx.herokuapp.com' // 你希望禁止哪些国家访问 const blocked_region = ['KP'] // 禁止自访问 const blocked_ip_address = ['0.0.0.0', '127.0.0.1'] // 替换成你想镜像的站点 const replace_dict = { '$upstream': '$custom_domain', '//google.com': '' } //以下内容都不用动 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 = new URL(request.url); let url_host = url.host; if (url.protocol == 'http:') { url.protocol = 'https:' response = Response.redirect(url.href); return response; } if (await device_status(user_agent)) { upstream_domain = upstream } else { upstream_domain = upstream_mobile } url.host = 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 request_headers = request.headers; let new_request_headers = new Headers(request_headers); new_request_headers.set('Host', upstream_domain); new_request_headers.set('Referer', url.href); let original_response = await fetch(url.href, { method: method, headers: new_request_headers }) let original_response_clone = original_response.clone(); let original_text = null; let response_headers = original_response.headers; let new_response_headers = new Headers(response_headers); let status = original_response.status; new_response_headers.set('access-control-allow-origin', '*'); new_response_headers.set('access-control-allow-credentials', true); new_response_headers.delete('content-security-policy'); new_response_headers.delete('content-security-policy-report-only'); new_response_headers.delete('clear-site-data'); const content_type = new_response_headers.get('content-type'); if (content_type.includes('text/html') && content_type.includes('UTF-8')) { original_text = await replace_response_text(original_response_clone, upstream_domain, url_host); } else { original_text = original_response_clone.body } response = new Response(original_text, { status, headers: new_response_headers }) } return response; } async function replace_response_text(response, upstream_domain, host_name) { let text = await response.text() var i, j; for (i in replace_dict) { j = replace_dict[i] if (i == '$upstream') { i = upstream_domain } else if (i == '$custom_domain') { i = host_name } if (j == '$upstream') { j = upstream_domain } else if (j == '$custom_domain') { j = host_name } let re = new RegExp(i, 'g') text = text.replace(re, j); } return text; } async function device_status (user_agent_info) { var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; var flag = true; for (var v = 0; v < agents.length; v++) { if (user_agent_info.indexOf(agents[v]) > 0) { flag = false; break; } } return flag; }

原文

阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载_点滴记忆-CSDN博客
你是不是想和我一样把阿里云盘搭建成一个分享平台呢?像下面这样 实现直链下载,不通过客户端,还可以分享给别人 我们先来看看实现的方法 下面有两种挂载程序(任选其一) 1.Onemanager https://github.com/qkqpttgf/OneManager-php 2.ShareList https://github.com/reruin/sharelist 部署方式有许多种,我们这里采用Heroku部署(要白嫖嘛~) 我们先来讲Onemanager 首先注册一个Heroku账号(可能需要科学上网) https://signup.heroku.com/login 这个不用教了吧~ 注册好后登陆,打开Onemanager的github项目 https://github.com/qkqpttgf/OneManager-php 点击" Deploy to Heroku " App name 随便填一个,下面选择美国或欧洲,然后点击"Deploy app" 然后等它构建完成,点击" View " 点击"点击开始安装程序" 语言选择中文,然后点击新建API Key 然后滑到下边找到 API Key点击 Reveal ,复制key 然后返回刚才的页面,粘贴key并设置管理密码 之后会进入这个页面,点击"登陆",输入你刚才设置的密码 然后点击"管理-设置",然后在添加盘那里选择"Aliyundrive",然后点击"添加盘" 这个随便填一下 然后点击"确认" 接下来我们获取refresh_token 首先登陆阿里云盘 https://www.aliyundrive.com/drive 登陆阿里云盘之后,打开开发者工具,切换到 Application选项卡,点开 Local storage,会有一个 token项,点开就可以看到 refresh_token 了
阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载_点滴记忆-CSDN博客