首页
友链
壁纸
留言
今日热榜
更多
关于
时光
推荐
精品流量卡
Search
1
都二十多年了,你的梦为什么还没碎!
57,087 阅读
2
2022年5个好用的 BT/ 磁力链接下载工具推荐 |Windows 、安卓系统
37,356 阅读
3
nps内网穿透实现外网访问树莓派
32,424 阅读
4
实践利用宝塔建emlog个人博客-超详细【原创】
26,132 阅读
5
Typecho-Joe-Theme主题帮助文档
24,616 阅读
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
登录
Search
标签搜索
PHP
HTML
API
Javascript
源码
JS
Vue
Github
CloudFlare
接口
函数
SQL
ASP.NET
MVC
EF
T4模板
后台管理
CDN
微信小程序
MAC
韩小韩
累计撰写
261
篇文章
累计收到
1,305
条评论
首页
栏目
闲杂乱码
Python
网站源码
微信小程序
娱乐分享
Is相册
软件工具
页面
友链
壁纸
留言
今日热榜
关于
时光
推荐
精品流量卡
搜索到
3
篇与
反代
的结果
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,660 阅读
0 评论
1 点赞
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,426 阅读
2 评论
0 点赞
2021-09-06
统一用户头像获取聚合API
{callout color="#f0ad4e"}统一用户头像获取聚合API 支持15款+ 头像API对接,速度给力!{/callout}官方网站{abtn icon="fa-link" color="#ff6800" href="https://avatar.vvhan.com/" radius="" content="韩小韩聚合头像API"/}调用示例Facebook<img src="https://avatar.vvhan.com/facebook/:username" /> https://avatar.vvhan.com/facebook/uxiaohanGitHub<img src="https://avatar.vvhan.com/github/:username" /> https://avatar.vvhan.com/github/uxiaohanGravatar<img src="https://avatar.vvhan.com/gravatar/:email" /> https://avatar.vvhan.com/gravatar/1655466387@qq.comInstagram<img src="https://avatar.vvhan.com/instagram/:username" /> https://avatar.vvhan.com/instagram/uxiaohanTelegram<img src="https://avatar.vvhan.com/telegram/:username" /> https://avatar.vvhan.com/telegram/uxiaohanTwitter<img src="https://avatar.vvhan.com/twitter/:username" /> https://avatar.vvhan.com/twitter/uxiaohanYouTube<img src="https://avatar.vvhan.com/youtube/:username" /> https://avatar.vvhan.com/youtube/uxiaohanClearbit<img src="https://avatar.vvhan.com/clearbit/:email" /> https://avatar.vvhan.com/clearbit/uxiaohanDeviantArt<img src="https://avatar.vvhan.com/deviantart/:username" /> https://avatar.vvhan.com/deviantart/uxiaohanDribbble<img src="https://avatar.vvhan.com/dribbble/:username" /> https://avatar.vvhan.com/dribbble/uxiaohanReddit<img src="https://avatar.vvhan.com/reddit/:username" /> https://avatar.vvhan.com/reddit/uxiaohanSoundCloud<img src="https://avatar.vvhan.com/soundcloud/:username" /> https://avatar.vvhan.com/soundcloud/uxiaohan
2021年09月06日
1,851 阅读
2 评论
4 点赞