一个功能强大的跨平台Cloudflare测速工具,支持全球97个数据中心机场码映射,提供常规测速、多地区并发测速、自定义测速地址和优选反代功能。
当前版本:v2.2.4
- 全球97个数据中心 - 支持完整的Cloudflare机场码映射
- 智能测速 - 自动下载最新IP列表,支持自定义参数
- 多地区并发 - 支持同时测试多个地区,结果分别保存和上传
- 自定义测速地址 - 支持设置任意测速URL,适配不同网络环境
- 结果分析 - 生成详细的CSV格式测速报告
- IPv4/IPv6支持 - 支持IPv4和IPv6地址测速
- 一键测速 - 简单输入3个参数即可开始测试
- 全自动模式 - 无需选择地区,自动测试所有IP
- 适合新手 - 专为新手设计,操作简单
- CSV文件处理 - 从测速结果中提取最优IP
- 反代列表生成 - 自动生成
ips_ports.txt反代配置 - 多格式支持 - 兼容各种CSV文件格式
- Cloudflare Workers API - 支持上报到Cloudflare Workers API
- GitHub仓库上传 - 支持上传到GitHub公开仓库
- 多地区分别上传 - 使用
{region}占位符自动为每个地区生成独立文件 - 批量上传 - 支持批量上传优选IP结果
- 自动格式化 - 自动格式化IP列表(包含注释)
- 命令行模式 - 支持命令行参数运行
- 自动化脚本 - 适合集成到自动化流程
- 参数配置 - 支持所有功能的命令行参数配置
- 自动检测环境 - 自动检测Linux和OpenWrt系统
- Cron任务设置 - 支持设置Cron定时任务
- 智能检测 - 自动检测是否已有类似任务
- 灵活管理 - 支持清理现有任务或继续添加
- 使用绝对路径 - 自动使用绝对路径,确保定时任务正确执行
- Docker镜像 - 提供官方Docker镜像,开箱即用
- Docker Compose - 支持Docker Compose一键部署
- 数据持久化 - 支持挂载数据目录,保存测速结果
- 多架构支持 - 支持amd64和arm64架构
- 环境隔离 - 容器化运行,环境干净整洁
| 平台 | 架构 | 状态 |
|---|---|---|
| Windows | x64 | 完全支持 |
| Windows | ARM64 | 完全支持 |
| macOS | Intel | 完全支持 |
| macOS | Apple Silicon | 完全支持 |
| Linux | x64 | 完全支持 |
| Linux | ARM64 | 完全支持 |
# 克隆项目
git clone https://github.com/byJoey/yx-tools.git
cd yx-tools
# 安装依赖
pip install -r requirements.txt
# 运行程序(交互式模式)
python3 cloudflare_speedtest.py# 克隆项目
git clone https://github.com/byJoey/yx-tools.git
cd yx-tools
# 安装依赖
pip install -r requirements.txt
# 运行程序(命令行模式)
python3 cloudflare_speedtest.py --mode beginner --count 10 --speed 1 --delay 1000
# 查看帮助
python3 cloudflare_speedtest.py --help从 Releases 页面下载对应平台的可执行文件:
CloudflareSpeedTest-windows-amd64.exe- Windows x64CloudflareSpeedTest-macos-amd64- macOS IntelCloudflareSpeedTest-macos-arm64- macOS Apple SiliconCloudflareSpeedTest-linux-amd64- Linux x64CloudflareSpeedTest-linux-arm64- Linux ARM64
# 拉取最新镜像
docker pull ghcr.io/byjoey/yx-tools:latest
# 运行容器(交互模式 - 前台运行)
# 如果设置了定时任务,容器会自动保持运行
docker run -it --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest
# 运行容器(交互模式 - 后台运行,退出终端不中断)
# 推荐方式:先后台运行,再进入容器设置
docker run -d --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest
# 然后进入容器设置定时任务
docker exec -it cloudflare-speedtest python3 /app/cloudflare_speedtest.py
# 运行容器(命令行模式)
docker run -it --rm \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
ghcr.io/byjoey/yx-tools:latest \
--mode beginner --count 10 --speed 1 --delay 1000
# 拉取特定版本
docker pull ghcr.io/byjoey/yx-tools:v2.2.3
# 查看所有可用标签
# 访问: https://github.com/byJoey/yx-tools/pkgs/container/yx-tools# 克隆项目
git clone https://github.com/byJoey/yx-tools.git
cd yx-tools
# 创建数据目录
mkdir -p data config
# 使用Docker Compose运行(交互模式)
docker-compose run --rm cloudflare-speedtest
# 使用Docker Compose运行(命令行模式)
docker-compose run --rm cloudflare-speedtest --mode beginner --count 10 --speed 1 --delay 1000# 克隆项目
git clone https://github.com/byJoey/yx-tools.git
cd yx-tools
# 构建镜像
docker build -t cloudflare-speedtest:latest .
# 运行容器(交互模式)
docker run -it --rm \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
cloudflare-speedtest:latest
# 运行容器(命令行模式)
docker run -it --rm \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
cloudflare-speedtest:latest \
--mode beginner --count 10 --speed 1 --delay 1000
# 后台运行并设置定时任务
docker run -d --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
cloudflare-speedtest:latest \
--mode beginner --count 10 --speed 1 --delay 1000容器内已集成cron服务,支持在容器内设置定时任务,定时任务会自动持久化到 /app/config/crontab 文件,容器重启后会自动恢复。
方法一:交互模式设置(推荐)
方式A:前台运行(使用 -it)
# 1. 前台运行容器(交互模式)
docker run -it --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest
# 2. 在交互模式中选择设置定时任务
# 3. 设置完成后,定时任务会自动保存到 ./config/crontab
# 4. 容器会保持运行,定时任务会按计划执行
# 5. 使用 Ctrl+P, Ctrl+Q 分离容器(不停止容器)
# 6. 或者直接关闭终端,容器会继续运行(因为设置了 --restart unless-stopped)
# 7. 即使容器重启,定时任务也会自动恢复方式B:后台运行(使用 -d,推荐)
# 1. 后台运行容器
docker run -d --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest
# 2. 进入容器设置定时任务(交互模式)
docker exec -it cloudflare-speedtest python3 /app/cloudflare_speedtest.py
# 3. 在交互模式中选择设置定时任务
# 4. 设置完成后,定时任务会自动保存到 ./config/crontab
# 5. 容器会保持运行,定时任务会按计划执行
# 6. 退出终端不影响容器运行
# 7. 即使容器重启,定时任务也会自动恢复方法二:使用环境变量自动设置(推荐自动化)
容器支持通过环境变量直接配置测速任务,无需手写完整命令。docker-entrypoint.sh 会自动根据环境变量组装命令:
environment:
- MODE=normal
- REGIONS=HKG SIN NRT
- COUNT=20
- SPEED=5
- DELAY=500
- UPLOAD=github
- REPO=owner/repo
- TOKEN=ghp_xxx
- FILE_PATH={region}_ips.txt
- UPLOAD_COUNT=10也可以配合定时任务一起使用:
environment:
- CRON_SCHEDULE=0 2 * * * # 每天凌晨2点
- MODE=beginner
- COUNT=10
- SPEED=1
- DELAY=1000使用Docker命令:
# 直接执行测速(通过环境变量)
docker run -it --rm \
-v $(pwd)/data:/app/data \
-e MODE=normal \
-e REGIONS="HKG SIN" \
-e COUNT=20 \
-e SPEED=5 \
-e UPLOAD=github \
-e REPO=owner/repo \
-e TOKEN=ghp_xxx \
-e FILE_PATH="{region}_ips.txt" \
ghcr.io/byjoey/yx-tools:latest
# 后台定时任务(通过环境变量)
docker run -d --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
-e CRON_SCHEDULE="0 2 * * *" \
-e MODE=beginner \
-e COUNT=10 \
-e SPEED=1 \
-e DELAY=1000 \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest方法三:手动编辑crontab
# 进入容器
docker exec -it cloudflare-speedtest bash
# 编辑crontab
crontab -e
# 查看定时任务
crontab -l
# 退出容器后,定时任务会自动保存Cron时间格式示例:
0 2 * * *- 每天凌晨2点0 */6 * * *- 每6小时*/30 * * * *- 每30分钟0 3 * * 1- 每周一凌晨3点
定时任务持久化说明:
- ✅ 定时任务自动保存到
./config/crontab文件 - ✅ 容器重启后自动恢复定时任务
- ✅ 每5分钟自动保存一次,确保不丢失
- ✅ 退出终端不影响容器运行(使用
-d后台运行)
- 预构建镜像:可直接从 GitHub Container Registry 拉取,无需本地构建
- 镜像地址:
ghcr.io/byjoey/yx-tools:latest - 定时任务:容器内已集成cron服务,支持在容器内设置定时任务(容器需24小时运行)
- 定时任务持久化:定时任务自动保存到
./config/crontab,容器重启后自动恢复 - 后台运行:使用
-d参数后台运行,退出终端不影响容器运行 - 数据持久化:结果文件会保存在
./data目录中 - 配置文件:配置文件会保存在
./config目录中(包括crontab) - 网络访问:容器需要网络访问来下载IP列表和上传结果
- 时区设置:默认使用
Asia/Shanghai时区 - 架构支持:镜像包含 amd64 和 arm64 版本的 CloudflareST 可执行文件,支持多架构自动选择
# 查看容器状态
docker ps -a | grep cloudflare-speedtest
# 查看容器日志
docker logs cloudflare-speedtest
# 查看定时任务
docker exec -it cloudflare-speedtest crontab -l
# 编辑定时任务
docker exec -it cloudflare-speedtest crontab -e
# 停止容器
docker stop cloudflare-speedtest
# 启动容器(定时任务会自动恢复)
docker start cloudflare-speedtest
# 重启容器(定时任务会自动恢复)
docker restart cloudflare-speedtest
# 删除容器(不会删除数据,数据在挂载的目录中)
docker rm cloudflare-speedtest在软路由环境中使用Docker时,建议为容器分配独立IP,并在软路由中将该IP设置为不走代理。
方法一:使用 Docker Compose 配置独立网络
# docker-compose.yml
version: '3.8'
services:
cloudflare-speedtest:
build:
context: .
dockerfile: Dockerfile
image: cloudflare-speedtest:latest
container_name: cloudflare-speedtest
volumes:
- ./data:/app/data
- ./config:/app/config
networks:
isolated_network:
ipv4_address: 172.20.0.10 # 指定独立IP
environment:
- TZ=Asia/Shanghai
- PYTHONUNBUFFERED=1
restart: unless-stopped
networks:
isolated_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
gateway: 172.20.0.1方法二:使用 Docker 命令配置独立网络
# 1. 创建独立网络
docker network create \
--driver bridge \
--subnet=172.20.0.0/16 \
--gateway=172.20.0.1 \
isolated_network
# 2. 运行容器并指定独立IP
docker run -d --name cloudflare-speedtest \
--network isolated_network \
--ip 172.20.0.10 \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest方法三:使用 Macvlan 网络(推荐软路由)
Macvlan 网络允许容器直接使用物理网络接口,获得独立的 MAC 地址和 IP:
# 1. 创建 Macvlan 网络(需要根据实际网络接口调整)
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=eth0 \
macvlan_network
# 2. 运行容器并指定独立IP
docker run -d --name cloudflare-speedtest \
--network macvlan_network \
--ip 192.168.1.100 \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--restart unless-stopped \
ghcr.io/byjoey/yx-tools:latest软路由代理设置
配置独立IP后,需要在软路由中将该IP设置为不走代理:
-
OpenWrt/Lede:
- 进入"网络" → "负载均衡" → "规则"
- 添加规则:源地址为容器IP(如
192.168.1.100),动作选择"直连"或"不走代理"
-
PassWall/Clash:
- 进入"访问控制" → "局域网设备"
- 添加设备规则:IP地址为容器IP,策略选择"直连"或"DIRECT"
-
V2Ray/Xray:
- 在路由规则中添加:
{ "type": "field", "ip": ["192.168.1.100/32"], "outboundTag": "direct" }
注意事项:
- 确保容器IP与软路由在同一网段
- 确保容器IP未被其他设备占用
- 配置后测试容器网络连接是否正常
- Macvlan 网络需要根据实际网络接口名称调整
parent参数(如eth0、br-lan等)
chmod 755 可执行文件拽到终端回车
可执行文件拽到终端回车
如果还是不行 请执行sudo spctl --master-disable
依然不行 xattr -d com.apple.quarantine 可执行文件拽到终端回车python3 cloudflare_speedtest.py选择功能:
功能选择:
1. 小白快速测试 - 简单输入,适合新手
2. 常规测速 - 测试指定机场码的IP速度
3. 优选反代 - 从CSV文件生成反代IP列表
请选择功能 [默认: 1]: 1
命令行模式适合自动化脚本、定时任务、CI/CD等场景,支持所有功能通过参数配置。
小白快速测试模式
# 使用默认参数(10个IP,速度1MB/s,延迟1000ms)
python3 cloudflare_speedtest.py --mode beginner
# 指定测试参数
python3 cloudflare_speedtest.py --mode beginner --count 20 --speed 2 --delay 500
# 使用IPv6测试
python3 cloudflare_speedtest.py --mode beginner --ipv6
# 高质量测试(50个IP,速度5MB/s,延迟200ms)
python3 cloudflare_speedtest.py --mode beginner --count 50 --speed 5 --delay 200
# 快速测试(5个IP,速度0.5MB/s,延迟2000ms)
python3 cloudflare_speedtest.py --mode beginner --count 5 --speed 0.5 --delay 2000常规测速模式
# 测试指定地区(香港)
python3 cloudflare_speedtest.py --mode normal --region HKG --count 10
# 测试指定地区(新加坡),指定速度和延迟
python3 cloudflare_speedtest.py --mode normal --region SIN --count 20 --speed 5 --delay 300
# 测试指定地区(东京),使用IPv6
python3 cloudflare_speedtest.py --mode normal --region NRT --count 15 --ipv6
# 测试指定地区(洛杉矶),高质量测试
python3 cloudflare_speedtest.py --mode normal --region LAX --count 50 --speed 10 --delay 200
# 同时测试多个地区(并发测速)
python3 cloudflare_speedtest.py --mode normal --region HKG SIN NRT --count 20 --max-workers 3
# 使用自定义测速地址
python3 cloudflare_speedtest.py --mode normal --region HKG --count 20 --speedtest-url https://your-cdn.com/__down?bytes=99999999优选反代模式
# 从默认CSV文件生成反代列表
python3 cloudflare_speedtest.py --mode proxy
# 从指定CSV文件生成反代列表
python3 cloudflare_speedtest.py --mode proxy --csv result.csv
# 从自定义路径的CSV文件生成反代列表
python3 cloudflare_speedtest.py --mode proxy --csv /path/to/result.csv| 参数 | 说明 | 默认值 | 必需 | 示例 |
|---|---|---|---|---|
--mode |
运行模式 | - | ✅ | beginner/normal/proxy |
--ipv6 |
使用IPv6(默认IPv4) | IPv4 | ❌ | --ipv6 |
--count |
测试IP数量 | 10 | ❌ | --count 20 |
--speed |
下载速度下限 (MB/s) | 1.0 | ❌ | --speed 2 |
--delay |
延迟上限 (ms) | 1000 | ❌ | --delay 500 |
--region |
地区码(常规测速模式需要,支持多个) | - | --region HKG SIN |
|
--csv |
CSV文件路径(优选反代模式) | result.csv | ❌ | --csv result.csv |
--speedtest-url |
自定义测速地址 | https://speed.cloudflare.com/__down?bytes=99999999 |
❌ | --speedtest-url https://xxx.com/test |
--max-workers |
多地区测速最大并发数 | 3 | ❌ | --max-workers 5 |
--upload |
上传方式 | none | ❌ | api/github/none |
--worker-domain |
Worker域名(API上传需要) | - | --worker-domain example.com |
|
--uuid |
UUID或路径(API上传需要) | - | --uuid abc123 |
|
--repo |
GitHub仓库路径(GitHub上传需要) | - | --repo owner/repo |
|
--token |
GitHub Token(GitHub上传需要) | - | --token ghp_xxx |
|
--file-path |
GitHub文件路径(可用{region}占位符按地区分别上传) |
cloudflare_ips.txt | ❌ | --file-path '{region}_ips.txt' |
--upload-count |
上传IP数量 | 10 | ❌ | --upload-count 20 |
--clear |
上传前清空现有IP(避免IP累积,推荐使用) | false | ❌ | --clear |
说明:
- ✅ 必需参数:必须提供
⚠️ 条件必需:在特定模式下需要- ❌ 可选参数:可以不提供,使用默认值
场景1:定时自动测速并上报到API
# 每天凌晨2点自动测速并上报(清空现有IP,推荐)
python3 cloudflare_speedtest.py --mode beginner \
--count 20 --speed 2 --delay 500 \
--upload api \
--worker-domain example.com --uuid abc123 \
--upload-count 20 --clear
# 每天凌晨2点自动测速并上报(IP会累积)
python3 cloudflare_speedtest.py --mode beginner \
--count 20 --speed 2 --delay 500 \
--upload api \
--worker-domain example.com --uuid abc123 \
--upload-count 20场景2:测试多个地区并上传到GitHub
# 同时测试香港和新加坡,结果分别上传到不同文件
python3 cloudflare_speedtest.py --mode normal \
--region HKG SIN --count 20 --speed 5 --delay 300 \
--upload github \
--repo username/cloudflare-ips --token ghp_xxx \
--file-path '{region}_ips.txt'
# 分别测试多个地区,使用固定文件名前缀
python3 cloudflare_speedtest.py --mode normal \
--region HKG SIN NRT --count 20 --speed 5 --delay 300 \
--upload github \
--repo username/cloudflare-ips --token ghp_xxx \
--file-path 'cf_{region}.txt'场景3:快速测试IPv6
# 快速测试IPv6地址
python3 cloudflare_speedtest.py --mode beginner \
--ipv6 --count 10 --speed 1 --delay 1000场景4:高质量测试(适合对速度要求高的场景)
# 测试50个IP,速度要求5MB/s以上,延迟200ms以内
python3 cloudflare_speedtest.py --mode beginner \
--count 50 --speed 5 --delay 200场景5:批量生成反代列表
# 从多个CSV文件生成反代列表
python3 cloudflare_speedtest.py --mode proxy --csv result1.csv
python3 cloudflare_speedtest.py --mode proxy --csv result2.csv
python3 cloudflare_speedtest.py --mode proxy --csv result3.csv上报到 Cloudflare Workers API
完整示例(清空现有IP,推荐):
python3 cloudflare_speedtest.py --mode beginner \
--count 20 --speed 2 --delay 500 \
--upload api \
--worker-domain example.com \
--uuid abc123 \
--upload-count 20 \
--clear完整示例(IP会累积):
python3 cloudflare_speedtest.py --mode beginner \
--count 20 --speed 2 --delay 500 \
--upload api \
--worker-domain example.com \
--uuid abc123 \
--upload-count 20参数说明:
--upload api:指定上传方式为API--worker-domain:您的Worker域名(例如:example.com)--uuid:UUID或路径(例如:abc123 或 351c9981-04b6-4103-aa4b-864aa9c91469)--upload-count:要上传的IP数量(默认10个)--clear:上传前清空现有IP,避免IP累积(推荐使用)
上报到 GitHub 仓库
完整示例:
python3 cloudflare_speedtest.py --mode beginner \
--count 20 --speed 2 --delay 500 \
--upload github \
--repo username/repo-name \
--token ghp_xxxxxxxxxxxxxxxxxxxx \
--file-path cloudflare_ips.txt \
--upload-count 20参数说明:
--upload github:指定上传方式为GitHub--repo:GitHub仓库路径,格式:owner/repo(例如:username/repo-name)--token:GitHub Personal Access Token(需要repo权限)--file-path:上传的文件路径(默认:cloudflare_ips.txt)--upload-count:要上传的IP数量(默认10个)
获取GitHub Token:
- 访问 https://github.com/settings/tokens
- 点击 "Generate new token (classic)"
- 勾选
repo权限 - 生成并复制Token
快速测试组合
python3 cloudflare_speedtest.py --mode beginner --count 5 --speed 0.5 --delay 2000标准测试组合
python3 cloudflare_speedtest.py --mode beginner --count 20 --speed 2 --delay 500高质量测试组合
python3 cloudflare_speedtest.py --mode beginner --count 50 --speed 5 --delay 200地区测试组合
# 香港
python3 cloudflare_speedtest.py --mode normal --region HKG --count 20 --speed 5 --delay 300
# 新加坡
python3 cloudflare_speedtest.py --mode normal --region SIN --count 20 --speed 5 --delay 300
# 东京
python3 cloudflare_speedtest.py --mode normal --region NRT --count 20 --speed 5 --delay 300# 查看完整帮助信息
python3 cloudflare_speedtest.py --help
# 查看帮助信息(包含使用示例)
python3 cloudflare_speedtest.py -h常见错误及解决方法:
- 缺少必需参数
# 错误:缺少 --mode 参数
python3 cloudflare_speedtest.py --count 20
# 解决:添加 --mode 参数
python3 cloudflare_speedtest.py --mode beginner --count 20- 常规测速模式缺少地区码
# 错误:常规测速模式需要 --region 参数
python3 cloudflare_speedtest.py --mode normal --count 20
# 解决:添加 --region 参数
python3 cloudflare_speedtest.py --mode normal --region HKG --count 20- 上传模式缺少必需参数
# 错误:API上传缺少 --worker-domain 或 --uuid
python3 cloudflare_speedtest.py --mode beginner --upload api
# 解决:添加必需参数
python3 cloudflare_speedtest.py --mode beginner --upload api \
--worker-domain example.com --uuid abc123Linux/Mac 定时任务(crontab)
# 编辑crontab
crontab -e
# 每天凌晨2点自动测速并上报到API(清空现有IP,推荐)
0 2 * * * cd /path/to/project && python3 cloudflare_speedtest.py --mode beginner --count 20 --speed 2 --delay 500 --upload api --worker-domain example.com --uuid abc123 --clear >> /var/log/cloudflare_speedtest.log 2>&1Windows 计划任务
@echo off
cd /d C:\path\to\project
python cloudflare_speedtest.py --mode beginner --count 20 --speed 2 --delay 500 --upload api --worker-domain example.com --uuid abc123 --clearShell脚本示例
#!/bin/bash
# 自动测速脚本
# 同时测试多个地区,结果分别上传
python3 cloudflare_speedtest.py --mode normal \
--region HKG SIN NRT --count 20 --speed 5 --delay 300 \
--upload github \
--repo username/cloudflare-ips --token ghp_xxx \
--file-path '{region}_ips.txt'专为新手设计,只需简单输入几个参数即可开始:
📊 第一步:设置测试IP数量
请输入要测试的IP数量 [默认: 10]: 20
⏱️ 第二步:设置延迟上限
请输入延迟上限(ms) [默认: 1000]: 500
🚀 第三步:设置下载速度下限
请输入下载速度下限(MB/s) [默认: 1]: 2
⚡ 第四步:设置延迟测速线程数
请输入延迟测速线程数 [默认: 200]: 200
🔗 第五步:自定义测速地址(可选)
是否自定义测速地址?[默认直接回车跳过]
地区选择流程
- 程序自动扫描所有 Cloudflare IP,获取可用地区列表
- 显示带编号的可用地区(如
1. HKG - 香港 (可用32个IP)) - 输入地区编号选择,支持多选(多个编号用逗号分隔,如
1,3,5) - 多选时会同时并发测速,每个地区生成独立的
result_{地区}.csv
自定义参数
自定义配置:
请输入要测试的IP数量 [默认: 10]: 20
请输入下载速度下限 (MB/s) [默认: 1]: 5
请输入延迟上限 (ms) [默认: 1000]: 500
自定义测速地址
- 常规测速开始前会提示输入自定义测速地址
- 直接回车使用默认地址:
https://speed.cloudflare.com/__down?bytes=99999999 - 也可以输入自己的测速 URL,适配不同网络环境
优选反代模式
==================================================
此功能将从CSV文件中提取IP和端口信息,生成反代IP列表
CSV文件格式要求:
- 包含 'IP 地址' 和 '端口' 列
- 或包含 'ip' 和 'port' 列
- 支持逗号分隔的CSV格式
==================================================
请输入CSV文件路径 [默认: result.csv]:
Cloudflare Workers API 上报
- 需要提供 Worker 域名和 UUID或者路径
- 支持批量上传
- 多地区测速时:会自动合并所有地区的
result_{地区}.csv,然后一次性批量上传 - 自动格式化IP列表(包含注释)
GitHub 仓库上传
- 需要提供 GitHub Personal Access Token
- 支持上传到公开仓库
- 文件格式:
IP:端口#地区名-速度MB/s - 使用换行符分隔,不使用逗号
- 多地区分别上传:支持
{region}占位符,例如{region}_ips.txt会自动生成hkg_ips.txt、sin_ips.txt等 - 交互模式下选择 GitHub 上传时,会提示输入文件路径并支持使用
{region}占位符
单地区 / 小白快速测试:result.csv
IP 地址,端口,延迟,下载速度 (MB/s),上传速度 (MB/s)
1.2.3.4,443,10.5,150.2,120.8
5.6.7.8,80,15.2,200.1,180.5多地区常规测速:每个地区独立保存
result_HKG.csv- 香港地区结果result_SIN.csv- 新加坡地区结果result_LAX.csv- 洛杉矶地区结果
1.2.3.4:443
5.6.7.8:80
9.10.11.12:8080
1.2.3.4:443#香港-5.23MB/s
5.6.7.8:443#新加坡-8.45MB/s
9.10.11.12:443#东京-6.78MB/s
- 使用换行符分隔,每行一个IP
- 包含注释信息(#后面的内容)
- 格式:
IP:端口#地区名-速度MB/s(井号前后无空格) - 多地区上传时支持
{region}占位符自动生成文件名,如{region}_ips.txt
- HKG - 香港
- NRT - 东京
- SIN - 新加坡
- SYD - 悉尼
- ICN - 首尔
- TPE - 台北
- LHR - 伦敦
- FRA - 法兰克福
- AMS - 阿姆斯特丹
- CDG - 巴黎
- MAD - 马德里
- FCO - 罗马
- LAX - 洛杉矶
- SFO - 旧金山
- DFW - 达拉斯
- ORD - 芝加哥
- JFK - 纽约
- YYZ - 多伦多
完整列表包含97个全球数据中心,支持所有主要城市和地区。
脚本会自动将 API / GitHub 上传配置保存到 .cloudflare_speedtest_config.json,避免每次重复输入:
{
"worker_domain": "example.com",
"uuid": "abc123",
"repo_info": "owner/repo",
"github_token": "ghp_xxx",
"file_path": "cloudflare_ips.txt"
}在 Docker 中运行时,支持通过环境变量完整配置测速任务,无需手写命令:
environment:
- MODE=normal
- REGIONS=HKG SIN NRT
- COUNT=20
- SPEED=5
- DELAY=500
- SPEEDTEST_URL=https://speed.cloudflare.com/__down?bytes=99999999
- MAX_WORKERS=3
- UPLOAD=github
- REPO=owner/repo
- TOKEN=ghp_xxx
- FILE_PATH={region}_ips.txt
- UPLOAD_COUNT=10
- CLEAR=true详见 DOCKER.md 获取完整环境变量说明。
cloudflare-speedtest/
├── cloudflare_speedtest.py # 主程序
├── requirements.txt # 依赖文件
├── .github/
│ └── workflows/
│ └── build-all-platforms.yml # 自动构建
├── README.md # 说明文档
└── LICENSE # 许可证
我们欢迎所有形式的贡献!
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
如果您发现任何问题,请:
- 检查 Issues 是否已存在
- 创建新的 Issue,详细描述问题
- 提供系统信息和错误日志
- ✨ 新增多地区并发测速
- 支持同时测试多个地区,自动并发执行
- 各地区生成独立的
result_{地区}.csv结果文件 - 支持通过
--max-workers控制并发数
- ✨ 新增自定义测速地址
- 支持通过
--speedtest-url/-u参数指定任意测速 URL - 交互模式下也支持输入自定义测速地址
- 支持通过
- ✨ 新增多地区分别上传
- GitHub 上传支持
{region}占位符,自动生成按地区命名的文件 - API 上传时自动合并多地区结果后一次性批量上报
- GitHub 上传支持
- ✨ 增强 Docker 环境变量支持
- 容器支持通过完整环境变量配置测速任务
docker-entrypoint.sh自动根据环境变量组装命令- 支持
CRON_SCHEDULE+ 环境变量自动生成定时任务
- 🔧 改进地区扫描逻辑
- 增加线程数和测速次数,确保扫描更全更快
- 🔧 改进交互式多地区上传体验
- 新增统一的多地区结果上报界面
- API 模式自动合并,GitHub 模式支持
{region}占位符输入
- ✨ 新增Docker支持
- 提供官方Docker镜像,开箱即用
- 支持Docker Compose一键部署
- 支持多架构(amd64/arm64)
- 数据持久化支持
- 环境隔离,运行更稳定
- ✨ 新增定时任务设置功能(Linux/OpenWrt)
- 自动检测Linux和OpenWrt环境
- 支持设置Cron定时任务
- 智能检测现有任务,支持清理或继续添加
- 自动使用绝对路径,确保定时任务正确执行
- 支持交互模式和命令行模式
- 🔧 改进命令生成功能
- 自动使用实际应用名(支持改名的.py文件和封装后的可执行文件)
- 使用绝对路径生成命令,确保定时任务正确执行
- 🔧 改进GitHub上传功能
- 添加配置保存功能,避免每次都要输入Token和仓库信息
- 改进网络错误处理,自动使用curl备用方案
- 🐛 修复命令行模式下GitHub上传的网络错误问题
- ✨ 新增命令行参数支持
- ✨ 新增小白快速测试模式
- ✨ 新增结果上报功能(Cloudflare Workers API 和 GitHub)
- ✨ 新增IPv6支持
- ✨ 新增GitHub仓库上传功能
- 🐛 修复编码问题(GBK解码错误)
- 🐛 修复NoneType strip错误
- 🔧 改进错误处理和用户提示
- 📝 更新文档说明
- 🔧 优化UUID格式验证(支持任意格式)
- 🔧 改进GitHub上传功能(支持公开仓库,包含注释)
- 重构代码结构
- 优化用户体验
- 改进错误处理机制
- 初始版本发布
- 支持97个全球数据中心
- 常规测速功能
- 优选反代功能
- 跨平台支持
- 预编译可执行文件
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Cloudflare - 提供全球CDN服务
- CloudflareSpeedTest - 原始测速工具
- 所有贡献者和用户的支持
如果这个项目对您有帮助,请给我们一个星标!