Skip to content

qwqgong-ui/better-cloudflare-ip

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

better-cloudflare-ip

查找适合自己当前网络环境的优选 Cloudflare Anycast IP

使用申明

本项目侧重于研究任播技术中丢包率与网速的相互关系,仅供学习使用

禁止使用范围准则如下

a) 相关机构提示网页有威胁的,有非法信息提示的网站。

b) 医院类型网站(流产,皮肤病,性病等医院),未获得卫生部资质的网站。

c) 网站主体内容含有色情(视频交友,一夜情交友)、违法(办假证,贩卖仿真枪)、封建迷信、游戏私服、游戏外挂、网赚、两性、美女贴图和动漫贴图(尺度过大)、赌博(含贩卖赌博工具。)、博彩等内容。

d) 网站存在恶意流氓广告(存在非法内容视频链接,非法网页内容链接)。

e) 网站存在任何破坏或试图破坏网络安全的行为,以病毒、木马、恶意代码、钓鱼等方式,试图对网站、网络相关软硬件进行恶意扫描、非法侵入系统、非法获取数据等内容。

f) 网站内容存在版权风险的网站(视频,小说,音乐等网站)。

g) 网站含有药品销售、保健品销售,但未取得资质的,或严重夸大药效事实。

h) 网站主要业务为向非法网站提供支付、交易平台、担保,代理外国金融理财(炒股,炒现货,炒黄金)等服务的网站。

i) 网站中大量存在影响社会和谐稳定的内容的网站(涉嫌攻击国家,攻击领导人,攻击人民,言论煽动性质网站)。

j) 网站内容含有国家相关法律法规不允许的其他内容。

k) 网站内容含有VPN,网络代理等内容。

l) 通过技术手段或非技术手段干扰 Cloudflare 所有产品正常运营的网站。

m) 网站内容为发布虚假不实消息行为,或侵害了他人的合法权益行为的网站。

n) 获取网站内容需要通过登录等方式,无法直接查看造成内容无法审核的网站。

o) 提供影视、软件和应用等下载服务的网站。

用户数据安全声明

此版本不需要用户上传任何数据到服务器,服务器仅提供 IP 地址池维护以及下发!

功能菜单

  1. IPv4 优选 (TLS)
  2. IPv4 优选 (非 TLS)
  3. IPv6 优选 (TLS)
  4. IPv6 优选 (非 TLS)
  5. 单 IP 测速 (TLS)
  6. 单 IP 测速 (非 TLS)
  7. 清空缓存
  8. 更新数据

用户自定义数据

用户可自定义 ips-v4.txt 和 ips-v6.txt 的 IP 地址段,如果使用数据更新将会覆盖本地自定义的数据

自定义 ips-v4.txt 的内容格式为 x.x.x.x 或 x.x.x.x/x 的 CIDR 写法,自动识别前缀长度,保留前 3 段,最后一段随机生成

自定义 ips-v6.txt 的内容格式为 x:x:x:x:x:x:x:x 或 x:x:x:x:x:x:x:x/x 的 CIDR 写法,自动展开 :: 压缩,保留前 3 段,后 5 段随机生成

更多自定义玩法待用户自己发现

优选条件

优选流程支持设置以下期望条件:

  • 期望带宽:单位 Mbps,默认 1 Mbps。
  • 期望延迟:单位毫秒,留空表示不限制。程序会在 RTT 测试后过滤超过该延迟的 IP。
  • 期望数据中心位置:留空表示不限制。可输入 Cloudflare 数据中心三字码、城市名、区域名或国家/地区代码,例如 HKGHong KongAsia-PacificHK
  • 期望个数:默认 1,最大 100。程序会持续测试,直到找到指定数量的优选 IP。
  • RTT 测试数量:默认 100。可输入数字指定每轮生成并测试的 IP 数量,输入 all 表示每轮测试全部子网各随机生成的 1 个 IP。
  • RTT 测试进程数:默认 50,最大 100,只控制 RTT 阶段的并发数量。
  • RTT 超时:默认 250ms,最低 100ms。网络环境较差时建议使用默认值或更高值,否则可能测不出有效结果。
  • RTT TLS SNI:TLS 模式默认使用 cloudflare-ech.com,也可在每次优选开始时输入自定义主机名;HTTP Host 会与 SNI 保持一致。
  • 延迟替换:初次选满后可再输入一个更低的延迟阈值,程序会继续寻找符合该延迟的新 IP,并优先替换当前候选中延迟最高的 IP。
  • 有效 IP 记录:每轮速度测试只要测出有效 IP,就立即更新 valid-ips.jsonvalid-ips.txt,按延迟升序、同延迟按速度降序排序。
  • 速度显示:结果以 Mbps 为主,同时保留 kB/s 方便核对原始测速值。
  • 超时控制:RTT 连接与单次请求默认压制到 250ms,可手动降低到最低 100ms;测速阶段设置了连接超时和 4 秒总超时,用于更快跳过不可用 IP。
  • 测速方式:速度测试阶段保持单线程逐个下载,避免多个候选同时测速互相抢占带宽导致失真;每轮候选测完后按峰值速度降序选出最快的达标 IP。

当设置了多个期望条件时,优选 IP 需要同时满足带宽、延迟、数据中心位置和个数要求。

测试流程

  1. 随机生成 IP — 从子网列表中随机抽样,IPv4 保留前 3 段末尾随机,IPv6 保留前 3 段后 5 段随机
  2. RTT 测试 — 并发 TCP 握手 + HTTP GET,验证 CF-RAY 头,记录 RTT 阶段数据中心,3 次取平均延迟,按延迟升序排序,并按期望延迟和期望数据中心提前过滤
  3. 速度测试 — 单线程逐个下载测速文件,每 1 秒滑动窗口计算瞬时峰值速度,同时再次匹配测速响应的数据中心位置,收集达到设定条件的 IP,并按峰值速度降序选择本轮最快结果
  4. 去重测试 — 同一轮优选中已生成测试过的 IP 不会重复测试,替换候选时也会跳过当前已选 IP
  5. 结果记录 — 每轮测出的有效 IP 会立即落盘并排序;达到期望个数后输出全部优选结果,可继续输入新的延迟阈值替换当前最高延迟候选

编译运行

确保已安装 Go 1.22 及以上版本,然后执行:

本机 Native 优化构建 Windows exe:

powershell -ExecutionPolicy Bypass -File .\build-native.ps1

脚本只构建当前 Windows 主机的 better-cloudflare-ip.exe。在 amd64 机器上会自动探测可运行的最高 GOAMD64 等级,也可以手动指定:

powershell -ExecutionPolicy Bypass -File .\build-native.ps1 -GOAMD64 v3

脚本默认使用 Go PGO 的 auto 模式。目录中存在 default.pgo 时会自动用于优化;也可以手动指定或关闭:

powershell -ExecutionPolicy Bypass -File .\build-native.ps1 -PGO .\default.pgo
powershell -ExecutionPolicy Bypass -File .\build-native.ps1 -PGO off

生成本项目可用的 PGO profile:

$env:BCFI_CPU_PROFILE = "default.pgo"
go run main.go
Remove-Item Env:\BCFI_CPU_PROFILE

运行时按你的常用方式完成一次典型优选流程并从菜单退出,生成的 default.pgo 会在下一次 native 构建时自动生效。

通用构建:

go build -o better-cloudflare-ip main.go && ./better-cloudflare-ip

或直接运行:

go run main.go

引用声明

对于 Cloudflare ASN https://bgp.he.net/AS13335 ,Cloudflare IP Ranges 来自 https://www.cloudflare.com/zh-cn/ips/

About

查找适合自己当前网络环境的优选cloudflare anycast IP

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 92.4%
  • PowerShell 7.6%