扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速

Cloudflare的CDN系统基本上每个站长都家喻户晓,大家都知道大陆对于搭建网站的审核力度,以至于Cloudflare并没有大陆的泛播节点,有也是只有香港节点。但是这些节点对于海外是加速效果,对于大陆就是一个字慢,晚高峰的情况下更是惨不忍睹。

这个时候就涉及到了又要免费又要好用又要延迟低,不严格的上来讲Cloudflare全占了,但是对于大陆网络环境来说就只是延迟高了一点,那么有没有什么办法使用Cloudflare保护我们的IP,体验它的加速效果和CDN服务,还能在大陆有一个良好的体验,再此之前会有人使用优选IP去接入,可能会有所优化 但是并不是一个特别好的解决办法,于是现在我们可以去使用哪些反代Cloudflare的IP进行一个加速效果。

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图

使用教程:

一个网站不仅仅是需要线路优秀,还是需要一台强悍的服务器来处理数据请求,服务器这里我推荐伍六七云:https://www.vps567.com/ 香港2H2G 5M服务器只需要20元

还有国内外高防服务器,免费虚拟主机以及全球CDN加速挂机宝等业务。

扩展阅读:Cloudflare 使用 CNAME 接入自定义域名

通过 CloudFlare+SaaS 回源优选 IP 使国内用户高速访问网站

Cloudflare for SaaS

看了 Cloudflare 官方文档并没有发现收费这一项目,可以添加100个域名,超出就收费0.1美金。

获取反代 IP:

首先我们打开:https://fofa.info 打开后大家可以先注册一个账号,后续大家可以导出下载。

参考搜索语法:

国内反代IP:server==“cloudflare” && port==“80” && header=“Forbidden” && country==“CN”

剔除CF:asn!=“13335” && asn!=“209242”

阿里云:server==“cloudflare” && asn==“45102”

甲骨文韩国:server==“cloudflare” && asn==“31898” && country==“KR”

搬瓦工:server==“cloudflare” && asn==“25820”

加速网站:

首先我们添加一个 A 记录解析,解析 IP 就是我们服务器真实 IP:

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图1

然后侧边栏 SSL/TLS - 自定义主机名:

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图2

回退源这里填写你刚刚解析的域名,保存后回退源状态为有效再来接下的操作:

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图3

再添加一个自定义主机名(你需要加速的域名):

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图4扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图5

证书验证方式有 HTTP 验证和 TXT 验证,大家自己随便选择一个就好了,然后你就会获取到像下图一样需要解析的内容:

扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图6扫描反代Cloudflare的IP 给网站CDN加速 免费制作自己的CDN加速插图7

把域名验证解析好了,再把你需要加速的域名解析 A 记录到反代 Cloudflare 的 IP 上就可以了,可以提供工具去筛选出再国内延迟比较低的 IP。

检查工具:

找 AI 写了一个 go 代码,可以筛选出正常 443 端口的节点 IP,复制下面的代码创建一个 go 文件,再创建好一个 ip.txt 和 443.txt. 在 ip.txt 写入你需要检查的 IP 节点就好了,正常的 IP 会写入到 443.txt 中。

package mainimport ("bufio""crypto/tls""fmt""net""os""strings""sync""time"
)func main() {// 打开 ip.txt 文件file, err := os.Open("ip.txt")if err != nil {fmt.Println("无法打开文件:", err)return}defer file.Close()// 创建一个文件用于写入合格的 IP 地址outFile, err := os.OpenFile("443.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)if err != nil {fmt.Println("无法创建文件:", err)return}defer outFile.Close()// 创建一个 bufio.Scanner 用于逐行读取文件内容scanner := bufio.NewScanner(file)tasks := make(chan string, 5) // 并发任务通道results := make(chan string)  // 结果通道var wg sync.WaitGroup         // 等待所有任务完成// 开启并发任务处理for i := 0; i < 5; i++ {wg.Add(1)go handleTask(tasks, results, &wg)}// 逐行读取文件内容并发送到并发任务通道for scanner.Scan() {ip := scanner.Text()tasks <- ip}// 关闭并发任务通道,等待所有任务完成close(tasks)go func() {wg.Wait()close(results)}()// 从结果通道中读取合格的 IP 地址并写入到文件中for ip := range results {outFile.WriteString(ip + "n")}if err := scanner.Err(); err != nil {fmt.Println("读取文件时发生错误:", err)return}fmt.Println("处理完毕,合格的 IP 已追加到 443.txt 文件中")
}// 函数用于处理并发任务
func handleTask(tasks <-chan string, results chan<- string, wg *sync.WaitGroup) {defer wg.Done()for ip := range tasks {// 检查 IP 的 443 端口是否可访问,超时设置为 5 秒if isPortOpenWithTimeout(ip, "443", 5*time.Second) {// 如果 443 端口可访问,继续检查证书是否来自 cloudflare-dns.comif checkCertificate(ip, "cloudflare-dns.com") {// 如果证书来自 cloudflare-dns.com,写入到结果通道中fmt.Println(ip, "合格")results <- ip} else {fmt.Println(ip, "不合格,证书不是来自 cloudflare-dns.com")}} else {fmt.Println(ip, "不合格,443端口不可访问或超时")}}
}// 函数用于检查指定 IP 和端口是否可访问,并设置超时时间
func isPortOpenWithTimeout(ip, port string, timeout time.Duration) bool {conn, err := net.DialTimeout("tcp", ip+":"+port, timeout)if err != nil {return false}defer conn.Close()return true
}// 函数用于检查指定 IP 的证书是否来自指定的域名
func checkCertificate(ip, domain string) bool {config := tls.Config{ServerName: domain}conn, err := tls.Dial("tcp", ip+":443", &config)if err != nil {return false}defer conn.Close()// 获取证书certs := conn.ConnectionState().PeerCertificatesif len(certs) < 1 {return false}// 检查证书是否匹配指定的域名for _, cert := range certs {if strings.Contains(cert.Subject.CommonName, domain) || cert.VerifyHostname(domain) == nil {return true}}return false
}

如果你要用,那么就需要忍受速度不稳定和随时不可用的情况,因为也会有人拿来加速节点 动不动去跑一些 4k8k 视频或者下载任务。而且有些节点本身就很慢这个时候我们使用就会是反向加速。于是拿出 AI 写了一个 go 代码。

img.a8tool.com 和 https://img.a8dog.com/i/2024/04/30/loux3b.jpg 修改成你自己的,jpg 文件建议有个 5M 或以上,到 go 程序同目录下创建一个 dns.txt 文件,写入测速节点 IP。

package mainimport ("fmt""io""io/ioutil""log""net/http""os""os/exec""strings""time"
)// backupHostsFilePath 存储 hosts 文件的备份路径
var backupHostsFilePath = "C:\Windows\System32\drivers\etc\hosts.backup"func main() {// 打开 DNS 文件dnsFile, err := os.Open("dns.txt")if err != nil {log.Fatalf("无法打开 DNS 文件:%v", err)}defer dnsFile.Close()// 读取 DNS 文件中的 IPips, err := ioutil.ReadAll(dnsFile)if err != nil {log.Fatalf("无法读取 DNS 文件:%v", err)}// 创建日志文件logFile, err := os.OpenFile("dns.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)if err != nil {log.Fatalf("无法创建日志文件:%v", err)}defer logFile.Close()// 备份原 hosts 文件err = backupHostsFile()if err != nil {log.Fatalf("备份 hosts 文件失败:%v", err)}// 以行为单位遍历 IPipList := strings.Split(string(ips), "n")for _, ip := range ipList {ip = strings.TrimSpace(ip)if ip == "" {continue}// 检查当前IP是否已经是目标IPif !checkHostIP("img.a8dog.com", ip) {// 修改本地 host 文件if err := modifyHosts("img.a8dog.com", ip); err != nil {log.Printf("修改 host 文件失败:%v", err)continue}// 刷新 DNS 缓存err := flushDNSCache()if err != nil {log.Printf("刷新 DNS 缓存失败:%v", err)}// 等待一段时间,确保 host 文件生效time.Sleep(5 * time.Second)// 再次检查当前IP是否已经是目标IPif !checkHostIP("img.a8dog.com", ip) {log.Printf("域名未指向目标 IP:%s", ip)continue}}// 删除旧的图片文件err := deleteFile("downloaded_image.jpg")if err != nil {log.Printf("删除旧的图片文件失败:%v", err)}// 下载图片start := time.Now()_, err = downloadFile("https://img.a8dog.com/i/2024/04/30/loux3b.jpg", "downloaded_image.jpg")if err != nil {log.Printf("下载图片失败:%v", err)continue}duration := time.Since(start)// 记录下载时间和下载速度speed := float64(fileSize("downloaded_image.jpg")) / duration.Seconds() / 1024 // KB/s// 打印记录信息并写入日志文件logMsg := fmt.Sprintf("IP: %s, 下载时间: %v, 下载速度: %.2f KB/s", ip, duration, speed)fmt.Println(logMsg)if _, err := logFile.WriteString(logMsg + "n"); err != nil {log.Printf("写入日志文件失败:%v", err)}// 恢复原 hosts 文件err = restoreHostsFile()if err != nil {log.Fatalf("恢复 hosts 文件失败:%v", err)}}
}// 修改本地 hosts 文件
func modifyHosts(hostname, ip string) error {hostsFilePath := "C:\Windows\System32\drivers\etc\hosts"hostsFile, err := os.OpenFile(hostsFilePath, os.O_APPEND|os.O_WRONLY, 0644)if err != nil {return err}defer hostsFile.Close()_, err = hostsFile.WriteString(fmt.Sprintf("%s %sn", ip, hostname))if err != nil {return err}return nil
}// 下载文件
func downloadFile(url, filename string) (int64, error) {resp, err := http.Get(url)if err != nil {return 0, err}defer resp.Body.Close()file, err := os.Create(filename)if err != nil {return 0, err}defer file.Close()size, err := io.Copy(file, resp.Body)if err != nil {return 0, err}return size, nil
}// 获取文件大小
func fileSize(filename string) int64 {info, err := os.Stat(filename)if err != nil {return 0}return info.Size()
}// 备份 hosts 文件
func backupHostsFile() error {src, err := os.Open("C:\Windows\System32\drivers\etc\hosts")if err != nil {return err}defer src.Close()dst, err := os.Create(backupHostsFilePath)if err != nil {return err}defer dst.Close()_, err = io.Copy(dst, src)if err != nil {return err}return nil
}// 恢复 hosts 文件
func restoreHostsFile() error {src, err := os.Open(backupHostsFilePath)if err != nil {return err}defer src.Close()dst, err := os.Create("C:\Windows\System32\drivers\etc\hosts")if err != nil {return err}defer dst.Close()_, err = io.Copy(dst, src)if err != nil {return err}return nil
}// 刷新 DNS 缓存
func flushDNSCache() error {cmd := exec.Command("ipconfig", "/flushdns")err := cmd.Run()if err != nil {return err}return nil
}// 删除文件
func deleteFile(filename string) error {err := os.Remove(filename)if err != nil {return err}return nil
}// 检查域名是否指向目标 IP
func checkHostIP(hostname, expectedIP string) bool {addrs, err := net.LookupIP(hostname)if err != nil {log.Printf("无法解析域名:%s", err)return false}for _, addr := range addrs {if addr.String() == expectedIP {return true}}return false
}

原文地址:https://www.4awl.net/6266.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript异步编程——02-Ajax入门和发送http请求

同步和异步回顾 同步和异步的简单理解 同步&#xff1a;必须等待前面的任务完成&#xff0c;才能继续后面的任务。 异步&#xff1a;不受当前任务的影响。 拿排队举例&#xff1a; 同步&#xff1a;在银行排队时&#xff0c;只有等到你了&#xff0c;才能够去处理业务。 异…

【C/C++】设计模式——单例模式

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

如何去官网下载windows10操作系统iso镜像

文章目录 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去二、然后按图示一步步点进去三、点击下载工具这个工具会帮你生成windows操作系统iso文件四、下载好后一步步按图示要求成功操作一、先从微软中国官网https://www.microsoft.com/zh-cn/进去 二、然后按图示一…

分享三维地理模型制作实践

前言 地理信息系统&#xff08;GIS&#xff09;是一种用于捕获、存储、检查和显示与地球表面位置相关的数据的计算机系统。GIS可以在一张地图上显示许多不同类型的数据&#xff0c;如街道、建筑物和植被。这使人们能够更容易地看到、分析和理解模式和关系。 GIS可以使用包括位…

Nginx从入门到精通速成

文章目录 一. **Nginx** **的简介**1.1 什么是 **nginx**1.2 正向代理1.3 反向代理1.4 **负载均衡**1.5 动静分离 二. **Nginx** **的安装**三. **Nginx** **的常用的命令**四. **Nginx** **的配置文件**五. **Nginx** **配置实例**反向代理实例**1**5.1 实现效果5.2 准备工作5…

织梦云端:网络信号原理的艺术解码

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《织梦云端&#xff1a;网络信号原理的艺术解码》&#xff0c;在这篇文章中&#xff0c;你将会学习到网络信号原理以及应用&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图…

Elasticsearch:使用 MongoDB connector 同步数据到 Elasticsearch

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。Elasticsearch 是一个高效强…

Windows Server 2019虚拟机安装

目录 第一步、准备工作 第二步、部署虚拟机 第三步、 Windows Server 2019系统启动配置 第一步、准备工作 下载Windows Server 2019系统镜像 官网下载地址&#xff1a;Windows Server 2019 | Microsoft Evaluation Center VMware Workstation 17下载地址&#xff1a; 链…

excel如何将多列数据转换为一列?

这个数据整理借用数据透视表也可以做到&#xff1a; 1.先将数据源的表头补齐&#xff0c;“姓名” 2.点击插入选项卡&#xff0c;数据透视表&#xff0c;在弹出对话框中&#xff0c;数据透视位置选择 现有工作表&#xff0c;&#xff08;实际使用时新建也没有问题&#xff09;…

Spring的基本应用

概述&#xff1a;Spring是由Rod Johnson组织开发的一个分层的java SE/EE一站式的轻量级开源框架&#xff0c;以IOC(控制反转)和AOP&#xff08;面向切面&#xff09;为核心&#xff0c;的开发模式。 注&#xff1a;喜欢的朋友可以关注公众号“JAVA学习课堂”系统学习相关技术&a…

Python自动化实战 —— 使用Selenium进行Web自动化!

为了完成一项重复的任务&#xff0c;你需要在网站上进行大量的点击和操作&#xff0c;每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中&#xff0c;我们将会介绍如何使用Python的Selenium库进行Web自动化&#xff0c;以及如何将它应…

学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

什么是CPU缓存利用率&#xff08;命中率&#xff09;&#xff0c;我们首先要把内存搞清楚。 硬盘是什么&#xff0c;内存是什么&#xff0c;高速缓存是什么&#xff0c;寄存器又是什么&#xff1f; 我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的&#…

快速修改禅道系统的管理员密码

目录 通过 web 登录页面忘记密码&#xff08;推荐&#xff09;通过数据库&#xff0c;修改 zt_user 表 通过 web 登录页面忘记密码&#xff08;推荐&#xff09; 只能修改管理员密码。 打开禅道地址&#xff0c;点击忘记密码会显示下面的页面&#xff1a; 根据提示在服务器的相…

【busybox记录】【shell指令】shuf

目录 内容来源&#xff1a; 【GUN】【shuf】指令介绍 【busybox】【shuf】指令介绍 【linux】【shuf】指令介绍 使用示例&#xff1a; 打乱内容 - 默认输出 打乱内容 - 最多输出n行 打乱内容 - 将输出写入文件 打乱内容 - 重复输出 打乱内容 - 打乱本条指令的参数 打…

并发控制互斥笔记

整理总结自蒋炎岩老师的b站课程&#xff0c;https://jyywiki.cn/OS/2022/index.html 多处理器系统中数据的一致性和互斥访问 所有的CPU的一级缓存都是连着的&#xff0c;如果是多个CPU的话&#xff0c;用在内存中放置标志位&#xff0c;来保证对当前内容的原子性读取&#xff0…

第六代移动通信介绍、无线网络类型、白皮书

关于6G 即第六代移动通信的介绍&#xff0c; 图解通信原理与案例分析-30&#xff1a;6G-天地互联、陆海空一体、全空间覆盖的超宽带移动通信系统_6g原理-CSDN博客文章浏览阅读1.7w次&#xff0c;点赞34次&#xff0c;收藏165次。6G 即第六代移动通信&#xff0c;6G 将在5G 的基…

经常发文章的你是否想过定时发布是咋实现的?

前言 可乐他们团队最近在做一个文章社区平台,由于人手不够,前后端都是由前端同学来写。后端使用 nest 来实现。 某一天周五下午,可乐正在快乐摸鱼,想到周末即将来临,十分开心。然而,产品突然找到了他,说道:可乐,我们要做一个文章定时发布功能。 现在我先为你解释一…

「代码与养生」 :当下程序员的养生指南

前言 众所周知&#xff0c;程序员是死的比较快的一类人。因为天天加班、睡眠不足、久坐不动、长时间面对电子屏幕辐射、长时间高强度用脑等不好避免的问题。因此&#xff0c;要想活的时间长一点&#xff0c;就要多了解一些养生之道 下面&#xff0c;根据个人看的一些博客、书…

表空间的创建

目录 表空间创建的语法 表空间创建的例子 创建一个永久性表空间&#xff0c;设置表空间初始大小为100MB&#xff0c;自动扩展为 100MB&#xff0c;无最大大小限制&#xff0c;并且该表空间为在线状态&#xff0c;产生日志 创建一个永久性表空间&#xff0c;通过本地化管理方…

面向新手在无人机竞速场景下的飞行辅助系统——浙大 FAST-Lab 高飞团队 ICRA 论文三项 Best Paper 入围

恭喜浙江大学 FAST-Lab 钟宇航同学的论文 A Trajectory-based Flight Assistive System for Novice Pilots in Drone Racing Scenario 顺利发表 ICRA 2024&#xff0c;并同时入选三项 Finalist&#xff1a; the IEEE ICRA Best Conference Paper Awardthe IEEE ICRA Best Pape…