基于 Go 的 Cloudflare IP 优选工具,支持测速、DNS 更新、GitHub 同步与通知。
529
这是一个高性能的 Cloudflare IP 优选工具,已从 Python 迁移到 Go,提供更好的性能和并发能力。
cfx/
├── main.go # 主程序入口
├── go.mod # Go 模块依赖
├── config.yaml # 配置文件(YAML/JSON均可)
├── Dockerfile # Docker 构建文件
├── docker-compose.yml # Docker Compose 编排
├── internal/
│ ├── app.go # 应用层:管道编排
│ ├── model/
│ │ └── config.go # 配置结构体定义
│ ├── config/
│ │ ├── config.go # 配置加载 + 验证
│ │ └── zap_logger.go # 日志初始化
│ ├── constants/
│ │ └── constants.go # 常量(国家映射)
│ ├── utils/
│ │ ├── parser.go # 自适应节点解析引擎
│ │ ├── filter.go # 端口/国家过滤
│ │ ├── http.go # 数据源并发拉取
│ │ └── str_tools.go # 工具函数
│ ├── network/
│ │ ├── probe_tcp.go # TCP 连通性探测(高并发)
│ │ ├── availability.go # 可用性检测
│ │ └── bandwidth.go # 带宽测速
│ └── dns/
│ └── cloudflare.go # Cloudflare DNS 批量更新
└── cmd/ # (可选)子命令入口
确保已安装 Go 1.26.1 或更高版本:
go version
编辑 config.yaml 文件(也支持 config.json,键名需与 Go 结构体字段匹配),根据需要修改参数。关键配置项:
global:
enable: true # 全局模式
top_n: 10 # 全局保留节点数
additional_sources:
- url: "https://example.com/nodes.txt"
enabled: true
cloudflare:
enabled: false # Cloudflare DNS 更新开关
go build -o cfx .
./cfx
程序会自动:
ip.txt 文件| 参数 | 说明 | 默认值 |
|---|---|---|
USE_GLOBAL_MODE | 全局最优模式 | true |
GLOBAL_TOP_N | 全局模式节点数 | 15 |
PER_COUNTRY_TOP_N | 每国家节点数 | 1 |
BANDWIDTH_CANDIDATES | 带宽测速候选数 | 90 |
TCP_PROBES | TCP 探测次数 | 3 |
MIN_SUCCESS_RATE | 最低成功率 | 1.0 |
MAX_WORKERS | TCP 并发数 | 200 |
PRE_FILTER_PORT_ENABLED, PRE_FILTER_PORTSFILTER_COUNTRIES_ENABLED, ALLOWED_COUNTRIESPRE_FILTER_BLOCKED_ENABLED, PRE_FILTER_BLOCKED_COUNTRIES需要配置:
CF_API_TOKEN - Cloudflare API TokenCF_ZONE_ID - Zone IDCF_DNS_RECORD_NAME - DNS 记录名称WxPusher 配置:
WXPUSHER_APP_TOKEN - 应用 TokenWXPUSHER_UIDS - 用户 UID 列表相比 Python 版本,Go 版本具有以下优势:
文件名问题: Go 中 _test.go 后缀的文件仅用于测试,不会被普通编译包含。本项目中的 TCP 测试文件命名为 tcp.go 而非 tcp_test.go。
并发控制: 使用信号量(channel)控制并发数,避免资源耗尽。
超时设置: 所有网络操作都设置了连接超时和读取超时,防止永久阻塞。
重试机制: 关键操作(数据源获取、可用性检测、带宽测速、DNS 更新)都支持重试。
internal/ 下创建新包internal/app.go 或 main.go 中导入并使用fmt.Errorf 和 %w 包装MIT License
感谢 Python 版本的原作者提供了优秀的算法和架构设计。 根据这份内容帮我写一份不超过 100 字的镜像描述
Content type
Image
Digest
sha256:f44006a5d…
Size
7.7 MB
Last updated
5 months ago
docker pull baizw/cfnb