首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,062 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,218 阅读
3
nps内网穿透实现外网访问树莓派
32,390 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,120 阅读
5
Typecho-Joe-Theme主题帮助文档
24,550 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
261
篇文章
累计收到
1,301
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
4
篇与
Cloudflare Workers
的结果
2022-12-02
利用CloudFlare的Workers和Pages反代Github并缓存实现Github文件加速访问
{message type="info" content="众所周知Github是全球最大的代码托管平台,我们可以通过使用GitHub学习知识、发现优秀的开源软件,也可以上传自己的项目或文件。但对于国内的同学来说,如果不挂代理,访问Github是不太稳定的,且下载巨慢。网上有很多Github加速访问的方法,如果你也想拥有一个属于自己独享的Github加速,可以按照此教程搭建一个你自己的反代来实现加速Github文件访问的服务。"/}CloudFlare{callout color="#f0ad4e"}CloudFlare提供的不仅仅是CDN,而是一个快速、敏捷、安全的全球网络。CloudFlare通过全球边缘网络实现超快速的静态和动态内容交付。对内容的高速缓存方式实行精确控制,降低带宽成本,并充分利用内置的不计量 DDoS 保护。今天我们使用 CloudFlare Workers 和 CloudFlare Pages来搭建我们的反代服务。{/callout}通过CloudFlare Workers实现反代{callout color="#f0ad4e"}没有CloudFlare账号可以去简单注册一个,以后肯定必然会用的到!首先,创建一个CloudFlare Workers服务,步奏如下图。{/callout}{gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}创建好以后,编辑CloudFlare Workers服务,并写入以下代码即可。{/callout}addEventListener( "fetch",event => { let url=new URL(event.request.url); url.hostname="cdn.jsdelivr.net"; //你需要反代的域名 let request=new Request(url,event.request); event. respondWith( fetch(request) ) } ){gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}由于CloudFlare Workers自带的免费works.dev域名国内已经无法访问了,需要通过绑定自定义域名.{/callout}{gird column="3" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}绑定好域名,我们就可以直接访问了!{/callout}通过CloudFlare Pages实现反代{message type="info" content="因为CloudFlare Pages可以连接Github,所以我们有两种方案1.直接上传反代脚本.2.将脚本文件托管在Github上,可实时更新."/}1.直接上传反代脚本.{callout color="#f0ad4e"}首先创建CloudFlare Pages服务,选择直接上传.{/callout}{gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}然后创建一个项目文件夹(名字可以随意),在文件夹内创建一个_worker.js的文件,并写入以下代码:{/callout}export default { async fetch(request, env) { const _url = new URL(request.url); _url.hostname = _url.pathname.startsWith("/gh/") ? "cdn.jsdelivr.net" : "www.baidu.com"; const req = new Request(_url, request); return fetch(req); }, };{callout color="#f0ad4e"}将项目文件夹拖拽到上传区域进行上传(注意:是上传项目文件夹),然后部署项目.{/callout}{gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}2.将脚本文件托管在Github上,可实时更新.{callout color="#f0ad4e"}首先创建一个Git项目,然后creating a new file 一个_worker.js的JS文件并写入以下代码保存.{/callout}export default { async fetch(request, env) { const _url = new URL(request.url); _url.hostname = _url.pathname.startsWith("/gh/") ? "cdn.jsdelivr.net" : "www.baidu.com"; const req = new Request(_url, request); return fetch(req); }, };{gird column="4" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}然后创建CloudFlare Pages服务,选择连接到Git,选择你刚刚创建的Git项目,开始设置。使用默认配置,并保存部署即可。{/callout}{gird column="3" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#4def86"}到此,我们通过CloudFlare Pages创建的服务已经成功了.{/callout}{callout color="#f0ad4e"}由于CloudFlare Pages自带的免费pages.dev域名国内访问也是很不稳定,这里极其建议同学们绑定自定义域名进行访问!方法也很简单,首先打开CloudFlare Pages,选择你刚刚创建的服务然后 点击自定义域 => 设置自定义域名 => 进行CNAME解析 => 激活域 即可大功告成!{/callout}{gird column="3" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}以上内容,我们已经完成了两种反向代理的搭建,大家自行选择一种,坚持能跑就行的原则,继续接下来的缓存步骤.配置Github加速文件的边缘缓存{callout color="#f0ad4e"}选择你得域名,点击 规则 => 页面规则 => 创建页面规则如图所示,设置以下规则,并保存部署页面规则即可.{/callout}{gird column="3" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}{callout color="#f0ad4e"}最后我们访问一下,感受一下速度~{/callout}今天也是一只白嫖怪噢~
2022年12月02日
1,620 阅读
0 评论
1 点赞
2022-03-30
在CloudFlare workers部署你的Hexo静态博客
{message type="info" content="Cloudflare Worker 是 Cloudflare 提供的基于 Serverless 的云端服务,最新的 Workers Sites 允许使用者将博客程序如 Hexo、Wordpress 等部署到 Cloudflare 云端运行,算是新开发出来的奇技淫巧吧。本教程以 Hexo 部署为例,默认具有 Node 环境。"/}安装 WranglerWrangler 的项目地址:github.com/cloudflare/wrangler可按照官方教程,使用 npm 安装 Wrangleryarn global add @cloudflare/wrangler # npm install @cloudflare/wrangler -g获取API秘钥在 Cloudflare 的 api 控制台中创建一个新的 api-token,点击新建 api-token,选择使用模板(Start with a template)。{callout color="#f0ad4e"}使用 Edit Cloudflare Workers 模板创建新的 api,配置相应的权限即可获得一个新的 api-tokens,保存备用。{/callout}配置 Wrangler 全局密钥终端直接执行wrangler config输入刚才保存的 api-tokens 运行验证即可完成全部配置。初始化 Wrangler在根目录直接终端执行wrangler init --site han-hexo # han-hexo 为要创建的Works名称{message type="info" content="执行完毕后在工程目录中会生成 wrangler.toml 和 aworkers-site文件其中 wrangler.toml 是工程中 Wrangler 的配置文件"/}设置 Wrangler.toml默认生成的 wrangler.toml 如下,可依据设置name = "han-hexo" #此处为之前初始化填写的Workes名称 type = "webpack" route = 'hexo.4ce.cn/*' #此处为绑定workers上的自定义域名 zone_id = '2892xxxxxxxxxxxxxxxxxxxxxxx' #此处为Workes ID usage_model = '' compatibility_flags = [] workers_dev = true site = {bucket = "public",entry-point = "workers-site"} compatibility_date = "2022-03-29"{callout color="#f0ad4e"}注意:设置自定义域名时,可以在 wrangler 配置完成后,在域名管理中的 Workers 设置中添加对应的 Workers 路由,再将 SSL 安全级别调整为 Flexible,否则会遇到 SSL 526 错误。{/callout}上传全站到 Cloudflare Workers在 Hexo 执行 hexo generate 编译生成静态文件后,复制整个生成的 public 目录到 workers-site 同级目录然后执行wrangler publish出现以下,即为成功。Using namespace for Workers Site "__site-workers_sites_assets" Uploading site files Success ⬇️ Installing wranglerjs... ⬇️ Installing wasm-pack... Built successfully, built project size is 11 KiB. Successfully published your script to https://*.workers.dev #这里就是生成的预览地址部署在 Workers 的 Hexo 演示程序:https://han-hexo.ohan.workers.dev (https://hexo.4ce.cn),演示程序所生成的静态文件存储在对应的 Workers KV 中。{anote icon="fa-link" href="https://www.vvhan.com/go/aHR0cHM6Ly9oZXhvLjRjZS5jbg" target="_blank" type="success" content="前往 Han -Hexo"/} {message type="info" content="注意,免费版本的 Workers Plan 有每天 100,000 次的访问限制(100,000 requests per day ),免费额度适合小站部署(流量大容易翻车),大站还是使用独立服务器或者收费版本部署稳一些。"/}
2022年03月30日
493 阅读
2 评论
0 点赞
2021-10-27
使用Cloudflare Workers反代OneDrive支持Cloudreve、onemanager
注册/登陆账号Cloudflare{anote icon="fa-link" href="https://dash.cloudflare.com/sign-up" type="secondary" content="注册Cloudflare"/} {anote icon="fa-link" href="https://dash.cloudflare.com/login" type="success" content="登录Cloudflare"/}{callout color="#f0ad4e"}创建子域名{/callout}// 替换成你OneDrive的网址 const upstream = '*-my.sharepoint.com' // 替换成你OneDrive的网址 const upstream_mobile = '*-my.sharepoint.com' // 下面的配置都不用动 const upstream_path = '/' const blocked_region = ['KP', 'SY', 'PK', 'CU'] const blocked_ip_address = ['0.0.0.0', '127.0.0.1'] const https = true const disable_cache = false const replace_dict = { '$upstream': '$custom_domain', '//sunpma.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_hostname = url.hostname; if (https == true) { url.protocol = 'https:'; } else { url.protocol = 'http:'; } if (await device_status(user_agent)) { var upstream_domain = upstream; } else { var upstream_domain = upstream_mobile; } url.host = upstream_domain; if (url.pathname == '/') { url.pathname = upstream_path; } else { url.pathname = upstream_path + url.pathname; } 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.protocol + '//' + url_hostname); let original_response = await fetch(url.href, { method: method, headers: new_request_headers }) connection_upgrade = new_request_headers.get("Upgrade"); if (connection_upgrade && connection_upgrade.toLowerCase() == "websocket") { return original_response; } 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; if (disable_cache) { new_response_headers.set('Cache-Control', 'no-store'); } 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'); if (new_response_headers.get("x-pjax-url")) { new_response_headers.set("x-pjax-url", response_headers.get("x-pjax-url").replace("//" + upstream_domain, "//" + url_hostname)); } const content_type = new_response_headers.get('content-type'); if (content_type != null && content_type.includes('text/html') && content_type.includes('UTF-8')) { original_text = await replace_response_text(original_response_clone, upstream_domain, url_hostname); } 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; }{callout color="#4d9bef"}自己自定义前缀,点击保存并部署,会得到一个网址 https://*.workers.dev/此时打开链接应该是office登陆的界面{/callout}反代链接对接Cloudreve、onemanager{callout color="#ef4d5d"}Cloudreve V3.2.1版本加入了OneDrive反代功能,对接存储时把反代链接填上就行{/callout}{callout color="#ef4d75"}onemanager自带反代地址,直接填入即可{/callout}
2021年10月27日
1,422 阅读
2 评论
0 点赞
2021-05-30
Heroku免费容器服务申请-利用Cloudflare Workers搭建V2Ray方法教程
{message type="info" content="Heroku是一个支持多种编程语言的云平台即服务。目前支持Ruby、Java、Node.js、Scala、Clojure、Python、PHP和Perl等语言,基础操作系统是Debian。用于在 Heroku 上部署 V2Ray Websocket。Heroku 为我们提供了免费的容器服务,我们不应该滥用它,所以本项目不宜做为长期-翻-墙-使用。"/}配置Heroku{callout color="#f0ad4e"}首先注册Heroku账号,点击通过 {anote icon="fa-link" href="https://signup.heroku.com/" type="secondary" content="注册Heroku"/} 注册一个账号,注册时候不能使用QQ邮箱:{/callout}{callout color="#f0ad4e"}注册成功以后登录,登录以后点击 {anote icon="fa-link" href="https://dashboard.heroku.com/new?template=https%3A%2F%2Fgithub.com%2Fuxiaohan%2Fv2ray-heroku" type="success" content="立即部署"/} 部署应用!名称随便填写就行了,然后点击 Deploy app 系统会自动部署:{/callout}{callout color="#f0ad4e"}部署完成以后,点击 Settings 再点击 Reveal Config Vars 就可以看见 UUID了!记下自己的UUID等会还是用到:{/callout}{callout color="#f0ad4e"}接着下滑,看见Domains项后有个域名!https://*.herokuapp.com/ 记下域名,稍后配置CloudFlare 反向代理会用到:{/callout}配置CloudFlare反向代理{callout color="#f0ad4e"}首先登陆CloudFlare官网,然后点击 右侧的 Workers {anote icon="fa-link" href="https://dash.cloudflare.com/289204d24308d15850d019fdaad6aa16/workers/overview" type="info" content="前往 CloudFlare Workers"/} :{/callout}{callout color="#f0ad4e"}接着点击创建 Workers :{/callout}{callout color="#f0ad4e"}接着复制下方代码,并添加进去!注意把下面的中文替换成你之前在Domains项看见的那个域名前缀:{/callout}addEventListener( "fetch",event => { let url=new URL(event.request.url); url.hostname="你的heroku域名.herokuapp.com"; let request=new Request(url,event.request); event. respondWith( fetch(request) ) } ){callout color="#1b22ee"}至此!CF就配置完成了,接下来开始配置V2客户端!{/callout}配置V2Ray客户端博主是MAC ,顺便放一下MAC的V2Ray下载地址{cloud title="V2RayU" type="github" url="https://github.com/yanue/V2rayU/releases" password=""/}Windows 版本{cloud title="V2RayN" type="lz" url="https://ohan.lanzoui.com/iH2VRpqgmod" password=""/}{callout color="#f0ad4e"}配置客户端,请按照图片的要求设置,否则不能联网:{/callout}{callout color="#ef4d75"}⚠️ 注意我正方形圈出来的地方{/callout}速度测速{callout color="#f0ad4e"}博主打开Youtube秒加载{/callout}{callout color="#f0ad4e"}随便点开一个视频,进度条不用等待{/callout}简直爽爆了!
2021年05月30日
1,225 阅读
16 评论
3 点赞