Skip to content

ldg118/CF-Worker-BestIP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CF 优选 IP · 智能双池管理系统

version platform license

基于 Cloudflare Workers/Pages 的 IP 优选工具,集成带宽测试、延迟测试、智能 DNS 更新、多国家分流、Telegram 通知等功能。

⚠️ 重要提示:优选 IP 不等于落地 IP。本项目优选的 IP 是 Cloudflare CDN 节点的注册地 IP,实际网络流量可能会路由到不同的落地位置。地理位置显示为 IP 注册地,而非实际网络出口位置。

功能特性

核心功能

功能 描述
📡 IP 智能测速 自动发现、延迟测试、带宽测试
🎯 双池管理 带宽优质池 + 备用池智能分类
🌍 访客感知 自动识别访客地理位置,推荐最优 IP
🌐 DNS 自动更新 智能分流更新到不同国家/地区的域名
📱 Telegram 通知 测速完成、DNS 更新实时推送
📥 数据导出 支持 CSV 格式导出优质/备用 IP
🗑️ 自动清理 智能清理失效 IP 和黑名单
📝 日志管理 3-7 天自动清理,支持实时查看

界面特性

  • 🎨 卡片式布局 - 模块化设计,支持折叠展开
  • ⚙️ 可视化配置 - 参数设置一目了然
  • 📊 实时数据 - 测速结果即时展示
  • 🔍 智能搜索 - IP 快速筛选定位
  • 🌙 深色主题 - 护眼配色方案

登录界面

登录界面截图

操作界面

操作界面截图1 操作界面截图2

快速开始

方式一:一键部署到 Cloudflare Workers(推荐)

步骤 1:创建 Workers 项目

  1. 登录 Cloudflare Dashboard
  2. 进入 Workers 和 Pages
  3. 点击 创建服务
  4. 服务名称填写 cf-best-ip
  5. 点击 部署

步骤 2:上传代码

  1. 点击 编辑代码
  2. 删除默认代码
  3. 复制 worker.js混淆加密 全部内容粘贴进去
  4. 点击 保存并部署

注意:两种方式功能相同,任选其一即可。混淆加密版本代码经过压缩混淆,体积更小但不可读。

步骤 3:配置环境变量

进入 设置变量,添加:

ADMIN_PASSWORD = your_secure_password

步骤 4:创建并绑定 D1 数据库

  1. 进入 Workers 和 PagesD1
  2. 点击 创建数据库,名称 cf-best-ip-db
  3. 回到 Worker → 设置绑定添加
  4. 选择 D1 数据库,变量名 DB,选择刚创建的数据库

注意:数据库表结构会自动初始化,无需手动执行 SQL。

步骤 5:创建并绑定 KV

  1. 进入 Workers 和 PagesKV
  2. 点击 创建命名空间,名称 cf-best-ip-kv
  3. 回到 Worker → 设置绑定添加
  4. 选择 KV 命名空间,变量名 KV,选择刚创建的命名空间

步骤 6:配置定时任务(可选)

进入 设置触发器添加 Cron 触发器

0 * * * *    # 每小时执行一次

⚠️ 子请求限制说明: Cloudflare Workers 免费版每个请求最多 50 个子请求。代码已优化,使用完整 50 个子请求限制:

单域名模式(只设置主域名或只设置国家域名):

  • 测速阶段:最多 17 个 IP × 2 个子请求 = 34 个子请求
  • DNS 更新阶段:约 8-11 个子请求(查询 1 + 删除 2-3 + 创建 3 + KV 操作 2-4)
  • 通知:1 个子请求
  • 总计:约 48-50 个子请求 ✅

双域名模式(同时设置主域名和国家域名):

  • 测速阶段:最多 14 个 IP × 2 个子请求 = 28 个子请求
  • DNS 更新阶段:约 10-12 个子请求(双域名 DNS 操作 + KV 操作)
  • 通知:1 个子请求
  • 总计:约 48-50 个子请求 ✅

动态调整机制

  • 测速阶段根据实际子请求消耗动态控制 IP 数量
  • 单域名稳定上限:17 个 IP(超过可能无法完成 DNS 更新和通知)
  • 双域名稳定上限:14 个 IP(DNS 预算更多,测速 IP 相应减少)
  • DNS 更新支持 1-3 个 IP,根据剩余子请求自动调整
  • 国家域名采用轮询机制,每次只更新一个国家

方式二:Cloudflare Pages 部署

Pages 部署适合需要快速部署前端界面,同时支持后端 Functions 的场景。注意:Pages 不支持 Cron 定时任务

方案 A:Git 仓库自动部署(推荐)

步骤 1:Fork 本仓库

点击右上角 Fork 按钮,将项目复制到你的 GitHub 账户。

步骤 2:准备 Pages 部署目录

项目使用 pages/ 目录作为部署根目录:

pages/
├── _worker.js              # 主程序入口
├── wrangler.toml           # 配置文件
├── package.json            # 依赖配置
├── migrations/
│   └── 001_init.sql        # 数据库初始化脚本
└── public/
    └── index.html          # 静态页面
步骤 3:创建 D1 和 KV(提前准备)
  1. 创建 D1 数据库
    • 登录 Cloudflare Dashboard
    • 进入 Workers 和 PagesD1
    • 点击 创建数据库,名称填写 cf-best-ip-db
    • 记录数据库 ID
  2. 创建 KV 命名空间
    • 进入 Workers 和 PagesKV
    • 点击 创建命名空间,名称填写 cf-best-ip-kv
    • 记录命名空间 ID

编辑 pages/wrangler.toml,填入数据库和 KV ID:

[[d1_databases]]
binding = "DB"
database_name = "cf-best-ip-db"
database_id = "your-database-id"  # 替换为你的数据库 ID

[[kv_namespaces]]
binding = "KV"
id = "your-kv-id"               # 替换为你的 KV ID
preview_id = "your-kv-preview-id"
步骤 4:配置 Cloudflare Pages
  1. 登录 Cloudflare Dashboard
  2. 进入 Workers 和 Pages创建项目Pages
  3. 点击 连接到 Git
  4. 授权并选择你 Fork 的仓库
  5. 构建设置:
    • 框架预设None
    • 构建命令:留空(无需构建)
    • 构建输出目录:留空
    • 根目录pages ← 关键配置,指向 pages 目录
  6. 点击 保存并部署
步骤 5:绑定 D1 和 KV
  1. 进入 Pages 项目 → 设置函数
  2. KV 命名空间绑定
    • 变量名:KV
    • 选择刚创建的 KV 命名空间
  3. D1 数据库绑定
    • 变量名:DB
    • 选择刚创建的 D1 数据库
  4. 点击 保存
步骤 6:配置环境变量

在 Pages 项目 → 设置环境变量 中添加:

ADMIN_PASSWORD = your_secure_password
步骤 7:重新部署

在 Pages 控制台点击 重新部署,使绑定和环境变量生效。

注意:数据库表结构会在首次访问时自动初始化,无需手动执行 SQL。

方案 B:直接上传部署

适合不想使用 Git 的用户。

步骤 1:准备文件
  1. 下载本仓库代码
  2. 进入 pages/ 目录,确保文件结构如下:
    pages/
    ├── _worker.js
    ├── wrangler.toml
    ├── package.json
    ├── migrations/
    │   └── 001_init.sql
    └── public/
        └── index.html
    
  3. pages/ 目录内的文件打包成 zip 压缩包
步骤 2:创建 Pages 项目
  1. 登录 Cloudflare Dashboard
  2. 进入 Workers 和 Pages创建项目Pages
  3. 点击 直接上传
  4. 项目名称填写 cf-best-ip
  5. 上传准备好的 zip 压缩包
  6. 点击 部署
步骤 3:创建并绑定资源

同方案 A 的步骤 3、5、6。


配置说明

必需配置

变量名 说明 示例
ADMIN_PASSWORD 管理员密码 MySecureP@ss123

可选配置

变量名 说明 默认值 范围
DEFAULT_IP_COUNT 默认返回 IP 数量 3 1-10
DEFAULT_TEST_COUNT 默认测试 IP 数量 30 10-100
DEFAULT_THREAD_COUNT 默认测试线程数 10 1-10
DEFAULT_BANDWIDTH_FILE_SIZE 带宽测试文件大小(MB) 3 3-10
FAILED_IP_COOLDOWN_DAYS 失败 IP 冷却天数 15 1-30
MAX_HIGH_QUALITY_POOL_SIZE 带宽优质池最大容量 20 10-50

使用指南

首次使用

  1. 访问部署后的域名(如 https://cf-best-ip.your-subdomain.workers.dev
  2. 输入管理员密码登录
  3. 进入 DNS 设置 配置:
    • Cloudflare API Token
    • 区域 ID
    • 域名映射
  4. 进入 运行参数 调整测试配置
  5. 点击 开始测速

多国家 DNS 分流

DNS 设置国家域名映射 中配置:

国家 域名
CN cf-cn.your-domain.com
US cf-us.your-domain.com
JP cf-jp.your-domain.com

系统会自动将对应国家的 IP 更新到相应域名。

Telegram 通知配置

  1. 创建 Telegram Bot(@BotFather
  2. 获取 Chat ID(@userinfobot
  3. DNS 设置Telegram 通知 中填入

获取 API Token

  1. 登录 Cloudflare Dashboard
  2. 点击右上角头像 → My Profile
  3. 选择 API TokensCreate Token
  4. 使用 Custom token 模板
  5. 权限配置:
    • Zone:Read
    • Zone.DNS:Edit
    • Cloudflare Pages:Edit(如使用 Pages)
    • D1:Edit
    • Workers Scripts:Edit
  6. 资源选择你的账户和域名
  7. 点击 Create Token

项目结构

cf-best-ip/
├── worker.js              # 主程序入口
├── migrations/
│   └── 001_init.sql       # 数据库初始化脚本
├── public/
│   └── index.html         # 静态页面(可选)
├── wrangler.toml          # Wrangler 配置
├── package.json           # 项目依赖
└── README.md              # 本文件

部署文件说明

文件 Workers 部署 Pages 自动部署(Git) Pages 直接上传 说明
worker.js ✅ 直接使用 ✅ 直接使用 ⚠️ 可选(优先使用 _worker.js) 主程序文件
_worker.js ❌ 不使用 ❌ 不使用 ✅ 直接使用 主程序文件(Pages 专用)
functions/[[path]].js ❌ 不使用 ✅ 推荐使用 ✅ 推荐使用 Pages Functions 入口(推荐)
wrangler.toml ✅ 必需 ⚠️ 可选 ⚠️ 可选 配置文件
migrations/001_init.sql ✅ 必需 ✅ 必需 ✅ 必需 数据库初始化脚本

注意

  • Pages 自动部署(Git):推荐使用 functions/[[path]].js,这是 Pages 的现代推荐方式
  • Pages 直接上传:可以使用 _worker.jsfunctions/[[path]].js
  • Workers 部署:直接使用 worker.js,无需重命名

部署方式对比

方式 文件要求 定时任务 推荐度
方式一 Workers worker.js ✅ 支持 ⭐⭐⭐ 最推荐
方式二 A Pages 自动部署(Git) functions/[[path]].js ❌ 不支持 ⭐⭐ 推荐
方式二 B Pages 直接上传 _worker.jsfunctions/[[path]].js ❌ 不支持 ⭐⭐ 推荐

常见问题

Q: 部署后提示 "DB is not defined"

A: 未正确绑定 D1 数据库。请检查 Workers/Pages 设置中的绑定配置。

Q: DNS 更新失败

A: 检查 API Token 是否有 Zone.DNS:Edit 权限,以及区域 ID 是否正确。

Q: Telegram 通知收不到

A: 确认 Bot Token 和 Chat ID 正确,且已向 Bot 发送过 /start

Q: Pages 部署后定时任务不执行

A: Pages 不支持 Cron 触发器,如需定时任务请使用 Workers 部署。

Q: Pages 上传部署后提示 Worker 错误

A: 确认根目录存在 _worker.js 文件,这是 Pages 识别 Worker 的必要条件。


技术栈

  • 运行时: Cloudflare Workers / Pages Functions
  • 数据库: Cloudflare D1 (SQLite)
  • 缓存: Cloudflare KV
  • 前端: 原生 HTML + CSS + JavaScript
  • 部署: Cloudflare Dashboard 控制台

更新日志

v4.6.2

  • 优化双池智能管理算法
  • 新增访客地理位置感知
  • 改进 UI 响应式设计
  • 修复 DNS 批量更新问题

许可证

MIT License


如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!

About

⚡ 基于 Cloudflare Workers/Pages 的 IP 优选工具,集成带宽测试、延迟测试、智能 DNS 更新、多国家分流、Telegram 通知等功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors