一个功能强大的跨平台Cloudflare测速工具,支持全球97个数据中心机场码映射,提供常规测速和优选反代功能。
当前版本:v2.2.3
ips_ports.txt反代配置| 平台 | 架构 | 状态 |
|---|---|---|
| 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-compose.yml 中配置:
environment:
- CRON_SCHEDULE=0 2 * * * # 每天凌晨2点
- CRON_COMMAND=python3 /app/cloudflare_speedtest.py --mode beginner --count 10 --speed 1 --delay 1000
或使用Docker命令:
docker run -d --name cloudflare-speedtest \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
-e CRON_SCHEDULE="0 2 * * *" \
-e CRON_COMMAND="python3 /app/cloudflare_speedtest.py --mode beginner --count 10 --speed 1 --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 后台运行)
ghcr.io/byjoey/yx-tools:latest./config/crontab,容器重启后自动恢复-d 参数后台运行,退出终端不影响容器运行./data 目录中./config 目录中(包括crontab)Asia/Shanghai 时区# 查看容器状态
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设置为不走代理:
添加规则:源地址为容器IP(如 192.168.1.100),动作选择"直连"或"不走代理"
PassWall/Clash:
添加设备规则:IP地址为容器IP,策略选择"直连"或"DIRECT"
V2Ray/Xray:
json
{
"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
优选反代模式
# 从默认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 |
--csv |
CSV文件路径(优选反代模式) | result.csv | ❌ | --csv result.csv |
--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文件路径 | cloudflare_ips.txt | ❌ | --file-path 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 --count 20 --speed 5 --delay 300 \
--upload github \
--repo username/cloudflare-ips --token ghp_xxx \
--file-path hkg_ips.txt
# 测试新加坡地区
python3 cloudflare_speedtest.py --mode normal \
--region SIN --count 20 --speed 5 --delay 300 \
--upload github \
--repo username/cloudflare-ips --token ghp_xxx \
--file-path sin_ips.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会累积): ```bash python3 cloudflare_speedtest.py --mode beginner \ --count 20 --speed 2 --delay 500 \ --upload api \ --worker-dom
$ claude mcp add yx-tools \
-- python -m otcore.mcp_server <graph>