优选 CDN IP(CloudFlare、Gcore、AWS 或自定义等)
1.3K
一个基于 CloudflareSpeedTest 获取最佳 CDN IP 的工具,用于自动测速并更新最佳的 CDN IP 到 Cloudflare DNS 记录。
# 使用 pip 安装
pip install cdnbestip
# 使用 pip + git 安装
pip install git+https://github.com/idev-sig/cdnbestip.git
# 或使用 uv 安装
uv tool install git+https://github.com/idev-sig/cdnbestip.git
# 指定版本
uv tool install git+https://github.com/idev-sig/[email protected]
# 运行速度测试
cdnbestip -d example.com -p cf -s 2
# 测试并更新 DNS 记录
cdnbestip -t YOUR_API_TOKEN -d example.com -p cf -s 2 -n
详细使用说明请参阅 使用指南。
docker buildx bake
版本标签:
latest,main,<TAG>
| Registry | Image |
|---|---|
| Docker Hub | idevsig/cdnbestip |
| GitHub Container Registry | ghcr.io/idev-sig/cdnbestip |
| Tencent Cloud Container Registry(SG) | sgccr.ccs.tencentyun.com/idevsig/cdnbestip |
| Aliyun Container Registry(GZ) | registry.cn-guangzhou.aliyuncs.com/idevsig/cdnbestip |
# 拉取镜像
docker pull idevsig/cdnbestip:latest
# 或者
docker pull ghcr.io/idev-sig/cdnbestip:latest
先决条件:
# 使用 pip 安装
pip install git+https://github.com/idev-sig/cdnbestip.git
# 或使用 uv 安装
uv tool install git+https://github.com/idev-sig/cdnbestip.git
# 指定版本或分支
uv tool install git+https://github.com/idev-sig/[email protected]
# 基本用法(使用邮箱)
cdnbestip -a [email protected] -k api_key -d example.com -p cf -s 5 -n -o
# 使用 GCore IP 源(自动使用 GCore 测试端点)
cdnbestip -a [email protected] -k api_key -d example.com -p gc -s 5 -n -o -i gc
# 使用 GCore IP 源 + 自定义测试 URL
cdnbestip -a [email protected] -k api_key -d example.com -p gc -s 5 -n -o -i gc -u https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000
# 基本用法(使用邮箱)
docker run --rm idevsig/cdnbestip:latest cdnbestip -a [email protected] -k api_key -d example.com -p cf -s 5 -n -o
# 使用 GCore IP 源(自动使用 GCore 测试端点)
docker run --rm idevsig/cdnbestip:latest cdnbestip -a [email protected] -k api_key -d example.com -p gc -s 5 -n -o -i gc
# 使用 GCore IP 源 + 自定义测试 URL
docker run --rm idevsig/cdnbestip:latest cdnbestip -a [email protected] -k api_key -d example.com -p gc -s 5 -n -o -i gc -u https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000
docker-compose.yml 文件:services:
cdnbestip:
image: idevsig/cdnbestip:latest
container_name: cdnbestip
restart: unless-stopped
environment:
- [email protected]
- CLOUDFLARE_API_KEY=api_key
- TZ=Asia/Shanghai
command: ["daemon"]
docker compose up -d
# 添加定时计划 (每天凌晨4:15运行)
docker exec cdnbestip sh -c "echo '15 4 * * * cd /app; cdnbestip -d example.com -p cf -r -n -q 5' | crontab -"
# 启用定时服务
docker exec -d cdnbestip crond -b -l 8
# 管理定时服务
# 停止
docker exec cdnbestip pkill crond
# 重启
docker exec cdnbestip pkill -HUP crond
usage: cdnbestip [-h] [-a EMAIL] [-k API_KEY] [-t API_TOKEN] [-d DOMAIN] [-p PREFIX] [--type TYPE] [-s THRESHOLD] [-P PORT] [-u URL]
[-T SECONDS] [-q COUNT] [-i SOURCE] [-r] [-n] [-o] [-c URL] [-e STRING] [--debug] [-v]
[--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [--no-console-log] [--no-file-log] [--version]
CloudFlare DNS speed testing and management tool
options:
-h, --help show this help message and exit
--version show program's version number and exit
CloudFlare Credentials:
-a, --account EMAIL CloudFlare account email
-k, --key API_KEY CloudFlare API key
-t, --token API_TOKEN CloudFlare API token (alternative to key+email)
DNS Settings:
-d, --domain DOMAIN Domain name (required for DNS operations)
-p, --prefix PREFIX DNS record prefix (required for DNS operations)
-y, --type TYPE DNS record type (default: A)
Speed Test Settings:
-s, --speed THRESHOLD
Download speed threshold in MB/s (default: 2.0)
-P, --port PORT Speed test port (0-65535)
-u, --url URL Speed test URL
-T, --timeout SECONDS
Speed test timeout in seconds (default: 600)
-q, --quantity COUNT Number of DNS records to create (default: 0 = unlimited)
IP Data Source:
-i, --ipurl SOURCE IP data source: cf, gc, ct, aws, or custom URL
Operations:
-r, --refresh Force refresh result.csv file
-n, --dns Update DNS records after speed test
-o, --only Only update one DNS record (fastest IP)
Advanced Options:
-c, --cdn URL CDN URL for file acceleration
-e, --extend STRING Extended parameters for CloudflareSpeedTest (use -e="-param" or -e "\\-param")
-x, --proxy URL Proxy URL for Cloudflare API and IP list downloads
Logging and Debugging:
-g, --debug Enable debug mode with detailed logging
-v, --verbose Enable verbose output
-l, --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Set logging level (default: INFO)
-C, --no-console-log Disable console logging
-F, --no-file-log Disable file logging
Examples:
cdnbestip -a [email protected] -k api_key -d example.com -p cf -s 2 -n -o
export CLOUDFLARE_API_KEY="api_key"
export CLOUDFLARE_EMAIL="[email protected]"
cdnbestip -d example.com -p cf -s 2 -n -o
IP Data Sources:
cf - CloudFlare IPs
gc - GCore IPs
ct - CloudFront IPs
aws - Amazon AWS IPs
<url> - Custom IP data URL
Zone Types:
A, AAAA, CNAME, MX, TXT, SRV, NS, PTR
CloudFlare 认证:
-a/--account: CloudFlare 账号邮箱-k/--key: CloudFlare API 密钥
-t/--token: CloudFlare API 令牌(推荐,可替代 key+email)
DNS 设置:
-d/--domain: 域名(DNS 操作必需)
-p/--prefix: DNS 记录前缀(DNS 操作必需)
-y/--type: DNS 记录类型(默认:A)
速度测试设置:
-s/--speed: 下载速度阈值,单位 MB/s(默认:2.0)
-P/--port: 速度测试端口(0-65535)
-u/--url: 速度测试 URL
-T/--timeout: 速度测试超时时间,单位秒(默认:600)
-q/--quantity: 创建的 DNS 记录数量(默认:0 = 无限制)
IP 数据源:
-i/--ipurl: IP 数据源:cf, gc, ct, aws 或自定义 URL
操作选项:
-r/--refresh: 强制刷新 result.csv 文件
-n/--dns: 测试后更新 DNS 记录
-o/--only: 仅更新一条 DNS 记录(最快的 IP)
高级选项:
-c/--cdn: 文件加速的 CDN URL
-e/--extend: CloudflareSpeedTest 的扩展参数 (使用 -e="-参数" 或 -e "\-参数")
-x/--proxy: 代理服务器 URL,用于 Cloudflare API 和 IP 列表下载
日志和调试:
-g/--debug: 启用调试模式和详细日志
-v/--verbose: 启用详细输出
-l/--log-level: 设置日志级别
-C/--no-console-log: 禁用控制台日志
-F/--no-file-log: 禁用文件日志
-t 或设置环境变量 CLOUDFLARE_API_TOKEN-k + -a 或设置环境变量 CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL账号参数支持格式:
[email protected]b9b779dc8c2e097c2a467261a8fa0000(32位十六进制字符串)获取 API 令牌:CloudFlare Dashboard -> API Tokens -> Create Token
获取 API 密钥:CloudFlare Dashboard -> API Keys -> Global API Key
工具支持通过代理服务器进行 Cloudflare API 调用和 IP 列表下载。支持的代理类型:
http://proxy.example.com:8080https://proxy.example.com:8080使用方式:
# 命令行参数(长参数)
cdnbestip --proxy http://proxy.example.com:8080 -d example.com -p cf -s 2 -n
# 命令行参数(短参数)
cdnbestip -x http://proxy.example.com:8080 -d example.com -p cf -s 2 -n
# 环境变量
export CDNBESTIP_PROXY="http://proxy.example.com:8080"
cdnbestip -d example.com -p cf -s 2 -n
注意: 代理仅用于 Cloudflare API 调用和 IP 列表下载,不影响 CloudflareSpeedTest 工具的测速过程。
工具会根据选择的 IP 数据源自动配置相应的测试端点:
| IP 源 | 提供商 | 自动测试端点 | 需要 -u 参数? |
|---|---|---|---|
cf | CloudFlare | https://cf.xiu2.xyz/url | 否 |
gc | GCore | https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000 | 否 |
ct | CloudFront | 无 | 是 |
aws | Amazon AWS | 无 | 是 |
| 自定义 URL | 自定义 | 无 | 是 |
# 无 IP 源 - 使用 CloudflareSpeedTest 默认设置
cdnbestip -d example.com -p cf -s 2 -n
# CloudFlare IP 源 - 自动使用 CF 测试端点
cdnbestip -i cf -d example.com -p cf -s 2 -n
# GCore IP 源 - 自动使用 GCore 测试端点
cdnbestip -i gc -d example.com -p gc -s 2 -n
# CloudFront IP 源 - 需要指定测试 URL
cdnbestip -i ct -u https://example.cloudfront.net/test -d example.com -p ct -s 2 -n
# 自定义测试 URL(覆盖默认设置)
cdnbestip -i gc -u https://custom-test.example.com/test -d example.com -p gc -s 2 -n
# 使用扩展参数传递给 CloudflareSpeedTest
cdnbestip -d example.com -p cf -e="-cfcolo HKG" -s 2 -n
cdnbestip -d example.com -p cf -e "\-cfcolo HKG -a 1" -s 2 -n
# 使用代理服务器
cdnbestip -d example.com -p cf --proxy http://proxy.example.com:8080 -s 2 -n
-u 或 --url 参数)# CloudFlare 官方测试端点
https://speed.cloudflare.com/__down?during=download&bytes=104857600
# 第三方 CloudFlare 测试端点
https://cf.xiu2.xyz/url
bytes为文件大小。104857600为100MB。
香港:
https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=100
日本:
https://cc1-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=100
新加坡:
https://sg1-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=100
ckSize为文件大小,单位MB。可自行修改,最大为 100MB。
https://cachefly.cachefly.net/100mb.test
# AWS 静态资源端点示例
https://d1.awsstatic.com/logos/aws-logo-lockups/poweredbyaws/PB_AWS_logo_RGB_REV_SQ.8c88ac215fe4e441dc42865dd6962ed4f444a90d.png
本项目采用 Apache License 2.0 许可证。
Content type
Image
Digest
sha256:66202276b…
Size
41.3 MB
Last updated
10 months ago
docker pull idevsig/cdnbestip