Cloudflare 常用操作
一、域名托管到cloudflare
登录cloudflare->添加站点->填写域名(例如阿里云)->继续选择free套餐->继续->保存cloudflare分配的DNS地址->进入阿里云域名管理->进入DNS管理/DNS修改把DNS地址修改为cloudflare分配的两个DNS->保存->回到cloudflare->网站中域名打上对号表示托管成功(修改DNS成功后cloudflare会发邮件一般几分钟就配置成功了)->进入网站/SSL/TLS开启始终使用HTTPS就可以免费使用SSL
二、加速访问GitHub
登录cloudflare->Workers 和 Pages->创建->创建 Worker->保存->进入刚创建的Worker->编辑代码worker.js修改为以下代码->保存部署->进入刚刚的Worker->设置/触发器中添加自定义域名因为cloudflare自动分配的域名访问慢->通过自定义域名就可以畅快的访问GitHub了
// 你要镜像的网站.
const upstream = 'github.com'// 镜像网站的目录,比如你想镜像某个网站的二级目录则填写二级目录的目录名,镜像 google 用不到,默认即可.
const upstream_path = '/'// 镜像站是否有手机访问专用网址,没有则填一样的.
const upstream_mobile = 'github.com'// 屏蔽国家和地区.
const blocked_region = ['KP', 'SY', 'PK', 'CU']// 屏蔽 IP 地址.
const blocked_ip_address = ['0.0.0.0', '127.0.0.1']// 镜像站是否开启 HTTPS.
const https = true// 文本替换.
const replace_dict = {'$upstream': '$custom_domain', '//github.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 = nulllet url = new URL(request.url)let url_hostname = url.hostnameif (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_domainif (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.methodlet request_headers = request.headerslet new_request_headers = new Headers(request_headers)new_request_headers.set('Host', url.hostname)new_request_headers.set('Referer', url.hostname)let original_response = await fetch(url.href, {method: method,headers: new_request_headers})let original_response_clone = original_response.clone()let original_text = nulllet response_headers = original_response.headerslet new_response_headers = new Headers(response_headers)let status = original_response.statusnew_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_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, jfor (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 = truefor (var v = 0; v < agents.length; v++) {if (user_agent_info.indexOf(agents[v]) > 0) {flag = falsebreak}}return flag
}
相关文章:
Cloudflare 常用操作
一、域名托管到cloudflare 登录cloudflare->添加站点->填写域名(例如阿里云)->继续选择free套餐->继续->保存cloudflare分配的DNS地址->进入阿里云域名管理->进入DNS管理/DNS修改把DNS地址修改为cloudflare分配的两个DNS->保存->回到cloudflare->…...
elementUI的table使用展开功能( type=“expand“ ),展开时合起上一次展开的内容,始终保持展开内容为一个,并且再次点击合起自身
直接上代码了没什么可讲的,主要是用到 row-key"id" :expand-row-keys"expands row-click"handleRowClick" <template><div class"ele-body"><el-card shadow"never"><!-- 数据表格 --><ele-pro-t…...
【金】?Y? python网页前端streamlit
1、如何从 Google Colab Notebook 启动 streamit参考-How to Launch Streamlit App from Google Colab Notebook !streamlit run web.py & npx localtunnel --port 8501 & curl ipv4.icanhazip.com...
数据仓库之Lambda架构
Lambda架构是一种设计大规模数据处理系统的架构模式,它结合了批处理和实时处理的优点,以应对大数据的多样性、速度和规模问题。该架构主要由三个层次组成:批处理层(Batch Layer)、速度层(Speed Layer&#…...
Apriori 处理ALLElectronics事务数据
通过Apriori算法挖掘以下事务集合的频繁项集: 流程图 代码 # 导入必要的库 from itertools import combinations# 定义Apriori算法函数 def apriori(transactions, min_support, min_confidence):# 遍历数据,统计每个项的支持度 item_support {}for tr…...
Content Provider:深入解析Android数据共享的核心组件
在Android开发中,Content Provider是一个重要的组件,它允许应用程序之间共享数据。它扮演着“数据访问中间层”的角色,为不同应用程序提供了一个统一的数据访问接口。以下将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面&#x…...
069、Python 函数的递归调用
函数可以自己调用自己吗??? 这就涉及函数的递归的用法了。 递归的概念: 函数递归是指函数在其定义中直接或间接调用自身的过程。 递归是一种强有力的编程技术,通常用于解决可以被分解为相同问题的子问题的情况&…...
数仓开发那些事_番外
一位神州的正式员工(没错,就是之前文章中出现的实习生):一闪,你今年涨工资了吗? 一闪:mad,一年辛苦到头只涨了500米 神州员工:你去年绩效不是优秀吗,怎么就涨…...
Vue3+TypeScript项目实战——打造雨雪交加的智慧城市
个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 …...
经典游戏案例:植物大战僵尸
学习目标:植物大战僵尸核心玩法实现 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using Random UnityEngine.Random;public enum Z…...
Go 与 Java 字符编码选择:UTF-8 与 UTF-16 的较量
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...
vscode+picgo+gitee实现Markdown图床
vscode中编辑Markdown文件,复制的图片默认是保存在本地的。当文档上传csdn时,会提示图片无法识别 可以在gitee上创建图床仓库,使用picgo工具上传图片,在Markdown中插入gitee链接的方式来解决该问题。 一、 安装picgo工具 1.1 v…...
【thinkphp问题栏】tp5.0分页技巧
一、调用内置方法paginate thinkphp内置了一个paginate方法支持分页功能 该方法位于library\think\db\Query.php内 /*** 分页查询* param int|array $listRows 每页数量 数组表示配置参数* param int|bool $simple 是否简洁模式或者总记录数* param array $config 配…...
获取时间戳是使用System.currentTimeMillis()还是使用new Date().getTime()(阿里开发规范)?
1.阿里规范 在阿里的Java开发手册中强制要求使用System.currentTimeMillis() 2.为什么(源码详解) new Date().getTime()它实际上也是调用的System.currentTimeMillis(),源码分析。 这个fastTime是它的成员变量,在new Date()的时候就被赋值了。 扩展一…...
仿饿了么加入购物车旋转控件 - 自带闪转腾挪动画 的按钮
, mWidth - mCircleWidth, mHeight - mCircleWidth); canvas.drawRoundRect(rectF, mHintBgRoundValue, mHintBgRoundValue, mHintPaint); //前景文字 mHintPaint.setColor(mHintFgColor); // 计算Baseline绘制的起点X轴坐标 int baseX (int) (mWidth / 2 - mHintPaint.m…...
Docker部署nacos集群
docker拉取nacos镜像,本文使用nacos2.0.3 三台服务器都要执行以下命令 docker pull nacos/nacos-server:v2.2.0准备挂载的日志目录和配置文件目录 日志:mkdir /usr/local/software/nacos/logs 配置文件:/usr/local/software/nacos/conf在配…...
centos查找文件 及 操作写入的进程
du -sh * 查看目录空间占用、发现大文件,确定进程,结束 yum install lsof 安装lsof 查看文件写入的 进程 2. lsof /root/.influxdbv2/engine/data/bab49411e5f7cbce/autogen/1/000000036-000000002.tsm COMMAND PID USER FD TYPE …...
构建高可用Java微服务架构的秘籍
构建高可用Java微服务架构的秘籍 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着云计算和分布式系统的快速发展,微服务架构已成为构建大型应用…...
VBA学习(18):VBA制作任意工作表均可使用的聚光灯
在需要制作聚光的工作簿,按<ALTF11>组合键,打开VBE编辑器。在右侧[工程资源管理器窗格]选中ThisWorkbook模块,将以下代码复制粘贴到该模块的代码窗口。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target …...
【STM32-启动文件 startup_stm32f103xe.s】
STM32-启动文件 startup_stm32f103xe.s ■ STM32-启动文件■ STM32-启动文件主要做了以下工作:■ STM32-启动文件指令■ STM32-启动文件代码详解■ 栈空间的开辟■ 栈空间大小 Stack_Size■ .map 文件的详细介绍■ 打开map文件 ■ 堆空间■ PRESERVE8 和 THUMB 指令…...
NoFences:Windows桌面分区终极免费解决方案
NoFences:Windows桌面分区终极免费解决方案 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 在Windows系统中,桌面图标管理一直是用户面临的常见挑战。…...
在Python项目中集成多模型API实现智能对话功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Python项目中集成多模型API实现智能对话功能 对于需要在应用中集成AI对话能力的Python开发者而言,直接对接多个模型厂…...
应对2026知网维普算法更新:论文降AI全攻略,实测3款主流工具与手动微调方法
自从央视公开探讨初稿写作的AI味儿现象:据相关数据显示,近六成师生习惯使用生成式辅助,其中近三成学生将其用于核心初稿的撰写,各高校针对AIGC的审查便日益严格。 正是因为这种大背景,四月一到,定稿通知刚…...
如何重新定义macOS兼容性:OpenCore Legacy Patcher的完整实践指南
如何重新定义macOS兼容性:OpenCore Legacy Patcher的完整实践指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 在技术快速迭代的时代ÿ…...
LabVIEW PC端软件开发:架构设计、性能优化与工程化实践
1. 项目概述:为什么选择在PC上深耕LabVIEW开发?当大家谈论起LabVIEW,很多人的第一印象可能还停留在它与各种数据采集卡、PLC、嵌入式硬件绑定的场景里。作为一个在这个图形化编程环境里摸爬滚打了十多年的老工程师,我想说…...
在线水印怎么去除?2026年最新在线水印去除方法与工具推荐
图片、视频上的水印是版权保护的常见方式,但在内容创作、素材整理或个人使用时,有时需要移除这些标记。在线水印去除工具因为无需下载安装、跨平台兼容而成为不少人的选择。本文汇总了2026年实用的在线水印去除方法和工具推荐,帮你快速找到适…...
新手避坑指南:用ROS Melodic在Ubuntu 18.04上为Dofbot机械臂配置MoveIt!
新手避坑指南:用ROS Melodic在Ubuntu 18.04上为Dofbot机械臂配置MoveIt! 第一次为Dofbot机械臂配置ROS Melodic和MoveIt时,很多新手会在环境搭建、依赖安装和配置文件调试等环节遇到各种"坑"。这些看似简单的问题往往耗费大量时间…...
如何快速为音乐库批量下载完美歌词?ZonyLrcToolsX 终极指南
如何快速为音乐库批量下载完美歌词?ZonyLrcToolsX 终极指南 【免费下载链接】ZonyLrcToolsX ZonyLrcToolsX 是一个能够方便地下载歌词的小软件。 项目地址: https://gitcode.com/gh_mirrors/zo/ZonyLrcToolsX 还在为音乐播放器缺少歌词而烦恼吗?是…...
【MATLAB】基于MATLAB的图像加密传输平台【GUI+源码+项目说明】
【MATLAB】基于MATLAB的图像加密传输平台【GUI源码项目说明】 一、项目介绍 数字图像具有数据量大、像素间相关性强、视觉冗余度高的特点, 传统的字节级加密 (如 AES) 直接作用于图像比特流虽能保密, 但无法破坏图像在空间域的统计特征. 本项目采用 “Arnold 置乱 明文相关 Lo…...
NotebookLM脑机接口安全红线清单,3类合规风险已致2家医疗AI公司终止临床试验
更多请点击: https://intelliparadigm.com 第一章:NotebookLM脑机接口研究 NotebookLM 是 Google 推出的基于用户自有文档进行深度理解与推理的 AI 助手,其核心能力在于语义锚定(semantic grounding)与多源文档交叉推…...
