⭐ 如果觉得好用,点个 Star 支持一下~
这是一个全自动的 Cloudflare CDN 节点优选工具。它通过 TCP 延迟筛选 + IP 可用性二次检测 + HTTP 延迟及抖动检测 + 真实带宽测速 多重机制,从多个公开数据源中聚合节点,自动识别并解析任意格式(标准代码、中文名、emoji国旗、JSON等),筛选出当前网络环境下速度最快、延迟最低、抖动最小的 Cloudflare IP,并支持自动更新至 Cloudflare DNS 以及同步至 GitHub 仓库,同时支持微信实时通知。
[!IMPORTANT] 跨平台支持:本工具同时兼容 Windows 和 Linux 操作系统。
- Windows 自动推送依赖 PowerShell 脚本
git_sync.ps1- Linux 自动推送依赖 Bash 脚本
git_sync.sh
| 模块 | 说明 |
|---|---|
| 🌐 多模式筛选 | 全局最优 TopN / 分国家最优 TopN |
| ⚡ TCP 连接测试 | 并发测延迟,可设成功率阈值 |
| 🔍 可用性二次检测 | API 验证代理能力 |
| 🔍 HTTP 延迟与抖动检测 | 多次探测 HTTP 响应,计算平均延迟与抖动(标准差),过滤非 Cloudflare 节点,提升代理兼容性 |
| 📶 真实带宽测速 | curl 下载测速,实测吞吐量 |
| ⚖️ 综合加权排序 | 同时考虑带宽、TCP 延迟、HTTP 延迟与抖动,四个权重可自由调整,选出综合体验最优的节点 |
| 🧩 多源自适应聚合 | 支持多个数据源,自动识别并解析任意格式(标准代码、中文名、emoji国旗、JSON等),统一转换为标准格式 |
| ⚙️ 前置过滤(按序执行) | TCP 测试前按序:端口过滤 → 黑名单过滤 → 白名单过滤(均可开关) |
| 🚫 DNS 黑名单 | DNS 更新时剔除指定国家节点(仅作用于 DNS 更新环节) |
| 🛡️ IPv6 落地过滤 | 过滤落地仅 IPv6 的节点,保留 IPv4/双栈节点(仅作用于 DNS 更新环节) |
| 🔍 IP 风险等级过滤 | 仅允许低风险节点,高危自动回退(仅作用于 DNS 更新环节) |
| 🗺️ IP 地区校准 | 基于 ipinfo.io 异步并发查询,自动校正节点国家代码,结果缓存复用 |
| 🔒 强制直连模式 | 可配置开关,一键清除系统代理,确保所有测试流量走直连 |
| ☁️ Cloudflare DNS 更新 | 原子批量替换同名 A/TXT 记录 |
| 📬 微信实时通知 | 集成 WxPusher,异常/结果推送 |
| 🔄 定时自动运行 | Windows 计划任务 / Linux cron,每 5 分钟 |
| 🚀 一键部署 | setup.ps1 / setup.sh 自动安装依赖并配置 |
| 📤 GitHub 自动同步 | ip.txt 推送至仓库,方便订阅 |
| 🔒 隐私保护 | .gitignore 忽略敏感文件 |
| 🖥️ 跨平台兼容 | 同时支持 Windows 和 Linux |
| 🔧 Fork 修复 | 内置 update_fork.ps1 / update_fork.sh,解决 fork 后的历史冲突与认证问题 |
| 文件 | 说明 |
|---|---|
main.py |
核心优选程序(抓取、测试、筛选、更新、推送) |
config.json |
所有运行参数的配置文件(含详细注释) |
git_sync.ps1 |
Windows 推送脚本(强制推送 ip.txt 到 GitHub) |
git_sync.sh |
Linux 推送脚本(强制推送 ip.txt 到 GitHub) |
setup.ps1 |
Windows 一键部署脚本(安装依赖并配置计划任务) |
setup.sh |
Linux 一键部署脚本(安装依赖并配置 cron) |
ip.txt |
最终优选节点列表(每次运行覆盖) |
update_fork.ps1 |
Windows 仓库修复脚本(解决 fork 后冲突/认证) |
update_fork.sh |
Linux 仓库修复脚本(解决 fork 后冲突/认证) |
valid_tokens.txt |
ipinfo.io API Token 列表(每行一个,用于 IP 地区校准) |
requests, aiohttp, brotlicffiCode 按钮 → Download ZIP,下载压缩包后解压到本地。git clone https://github.com/你的用户名/仓库名.git
cd 仓库名
💡 部署脚本会自动安装
requests、aiohttp、brotlicffi三个 Python 依赖、创建.gitignore并配置定时任务(每 5 分钟整点运行)。
若你希望启用 GitHub 自动推送、Cloudflare DNS 更新或微信通知,请参考下表获取对应令牌。
| GitHub Personal Access Token | Cloudflare API Token | WxPusher 微信通知 |
|---|---|---|
| 1. 登录 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) | 1. 进入域名概览页,点击右侧API栏的获取您的 API 令牌 | 1. 访问 WxPusher 后台,微信扫码登录 |
| 2. Generate new token (classic),Note 任意填 | 2. 点击 创建令牌 → 选择 编辑区域 DNS 模板 | 2. 左侧菜单“应用管理”→“应用信息”→“新增应用”,填写名称后创建 |
3. Expiration 必须选 No expiration |
3. 权限已自动填好(区域 - DNS - 编辑),区域资源选择你的域名 | 3. 复制保存 AppToken(仅显示一次) |
| 4. Select scopes: 仅勾选 repo(自动勾全) | 4. 点击 继续以显示摘要 → 创建令牌 | 4. 左侧“关注应用”→微信扫码关注公众号 |
| 5. Generate token,保存 | 5. 立即复制并保存令牌(仅显示一次) | 5. 公众号菜单“我的”→“我的UID”获取 UID |
填入 git_sync.ps1 / git_sync.sh 的 github_token |
填入 config.json 的 CF_API_TOKEN 和 CF_ZONE_ID |
填入 config.json 的 WXPUSHER_APP_TOKEN 和 WXPUSHER_UIDS |
💡 若不需要某项功能,可跳过对应步骤或在配置中关闭开关:
- 无需微信通知:
config.json中设ENABLE_WXPUSHER: false- 无需 GitHub 推送:
config.json中设GITHUB_SYNC_MAX_RETRIES: 0- 无需 Cloudflare DNS 更新:
config.json中设CF_ENABLED: false
以管理员身份打开 PowerShell,逐行执行以下命令:
# 1. 进入项目目录
cd "C:\你的项目路径\cfnb"
# 2. 若提示脚本禁用,临时绕过(可选)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# 3. 运行部署脚本
.\setup.ps1
# 4. 编辑推送脚本,填入 GitHub 令牌等信息
notepad git_sync.ps1
# 5. 测试运行
python main.py
在终端中逐行执行以下命令:
# 1. 进入项目目录
cd /path/to/cfnb
# 2. 赋予执行权限
chmod +x setup.sh
# 3. 运行部署脚本(需要 sudo 安装软件包)
sudo ./setup.sh
# 4. 编辑推送脚本,填入 GitHub 令牌等信息
nano git_sync.sh
# 5. 测试运行
python3 main.py
适用于 fork 或修改远程仓库后,出现以下任一问题的情况:
git pull 报错:fatal: refusing to merge unrelated histories运行对应平台的一键修复脚本即可(前提:已按前文填写好 config.json 与推送脚本中的令牌)
| 平台 | 命令 |
|---|---|
| Windows PowerShell | .\update_fork.ps1 |
| Linux | chmod +x update_fork.sh && ./update_fork.sh |
脚本会自动完成:
💡 运行成功后,
main.py即可正常自动推送,不再有任何冲突或弹窗。
| 平台 | 方式 | 行为 |
|---|---|---|
| Windows | 计划任务 Cloudflare IP 优选 |
从下一个整 5 分钟开始,之后每 5 分钟永久重复 |
| Linux | cron 定时任务 | 分钟字段为 */5,整点对齐 |
日志查看:
tail -f cron.log[!NOTE] 默认参数基于 2核2G 云服务器 测试通过。若在 软路由、树莓派或低配 PC 上运行,建议适当降低
MAX_WORKERS、HTTP_TEST_WORKERS、BANDWIDTH_WORKERS。
所有参数均位于 config.json,以下为逐项说明。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
USE_GLOBAL_MODE |
boolean |
true |
true=全局优选;false=分国家优选 |
GLOBAL_TOP_N |
int |
15 |
全局模式保留节点数 |
PER_COUNTRY_TOP_N |
int |
1 |
分国家模式每国保留节点数 |
BANDWIDTH_CANDIDATES |
int |
150 |
进入测速的候选节点数 |
DNS_UPDATE_TARGET_COUNT |
int |
15 |
DNS 更新时写入的最大 IP 数量,独立于筛选模式 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
TCP_PROBES |
int |
1 |
每个节点 TCP 测试次数 |
MIN_SUCCESS_RATE |
float |
1.0 |
最低成功率阈值(0.0~1.0) |
TCP_LATENCY_WEIGHT |
float |
0.0 |
TCP延迟在综合排序中的权重(越大越排斥高TCP延迟) |
TIMEOUT |
float |
2.0 |
单次 TCP 连接超时(秒) |
SOCKET_DEFAULT_TIMEOUT |
int |
3 |
全局 Socket 默认超时(秒),防止永久阻塞 |
PROGRESS_PRINT_INTERVAL |
float |
1 |
进度打印刷新间隔(秒),避免频繁 I/O |
最终节点的排名由综合得分决定,公式为:
得分 = (SPEED_WEIGHT × 带宽) / (1 + TCP_LATENCY_WEIGHT × TCP延迟 + HTTP_LATENCY_WEIGHT × HTTP延迟 + JITTER_WEIGHT × HTTP抖动)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
HTTP_LATENCY_WEIGHT |
float |
3.0 |
HTTP延迟在综合排序中的权重(越大越排斥高HTTP延迟) |
JITTER_WEIGHT |
float |
3.0 |
HTTP延迟抖动(标准差)在综合排序中的权重(越大越排斥延迟波动大的节点) |
HTTP_JITTER_SAMPLES |
int |
3 |
HTTP延迟抖动测试次数(至少3次,建议3~5次,越大越准但越慢) |
SPEED_WEIGHT |
float |
3.0 |
带宽在综合排序中的权重(越大越看重带宽) |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
PRE_FILTER_PORT_ENABLED |
boolean |
true |
是否启用前置端口过滤 |
PRE_FILTER_PORTS |
array |
[443] |
TCP 测试前允许的端口列表(可多个) |
PRE_FILTER_BLOCKED_ENABLED |
boolean |
true |
是否启用前置黑名单过滤 |
PRE_FILTER_BLOCKED_COUNTRIES |
array |
["CN"] |
前置黑名单国家代码列表(TCP 测试前剔除) |
FILTER_COUNTRIES_ENABLED |
boolean |
false |
是否启用前置白名单过滤 |
ALLOWED_COUNTRIES |
array |
["US"] |
前置白名单国家代码列表(仅在开关开启时生效) |
💡 过滤执行顺序:前置端口过滤 → 前置黑名单 → 前置白名单。
所有前置过滤均在 TCP 测试前完成,可大幅减少无效测试。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
FORCE_DIRECT |
boolean |
false |
是否强制所有网络请求直连(true=清除系统代理,全部走直连) |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
FILTER_IPV6_AVAILABILITY |
boolean |
true |
仅作用于 DNS:是否过滤落地仅 IPv6 的节点(ipv6_only) |
FILTER_BLOCKED_COUNTRIES_ENABLED |
boolean |
true |
DNS 更新时是否启用黑名单过滤 |
BLOCKED_COUNTRIES |
array |
BD, BI, BY, CD, CF, CN, CU, DE, ET, HK,IR, KP, LY, MO, NG, NL, PK, RU, SD, SO,SY, TH, TW, UA, VE, VN, YE, ZW |
DNS 更新时需要剔除的国家代码列表(共 28 个) |
DNS_IP_RISK_FILTER_ENABLED |
boolean |
false |
是否启用 IP 风险等级过滤 |
DNS_IP_RISK_MAX_LEVEL |
string |
高风险 |
允许的最高风险等级(可选:极度纯净、纯净、轻微风险、高风险、极度危险) |
说明:
- 该过滤仅作用于 Cloudflare DNS 批量更新环节,不会影响
ip.txt的内容和 GitHub 推送。- DNS 更新时会同时应用以下条件,只有全部满足的节点才会写入 DNS:
- 端口必须为
443- 落地不能仅为 IPv6(即保留 IPv4 或双栈节点,需开启
FILTER_IPV6_AVAILABILITY)- 国家不在
BLOCKED_COUNTRIES黑名单中(需开启FILTER_BLOCKED_COUNTRIES_ENABLED)- IP 风险等级不高于设定阈值(需开启
DNS_IP_RISK_FILTER_ENABLED,若过滤后无节点则自动回退到未过滤列表)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ENABLE_WXPUSHER |
boolean |
true |
是否启用微信通知 |
WXPUSHER_APP_TOKEN |
string |
"your_app_token_here" |
【必填】 WxPusher 的 APP_TOKEN |
WXPUSHER_UIDS |
array |
["your_uid_here"] |
【必填】 接收通知的用户 UID 列表 |
WXPUSHER_API_URL |
string |
"https://wxpusher.zjiecode.com/api/send/message" |
消息发送 API 地址 |
NOTIFY_TIMEOUT |
int |
3 |
微信通知 API 读取超时(秒) |
NOTIFY_CONNECT_TIMEOUT |
int |
3 |
微信通知 API 连接超时(秒) |
💡 若不需要通知,将
ENABLE_WXPUSHER设为false即可。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
CF_ENABLED |
boolean |
true |
是否启用 DNS 自动更新 |
CF_API_TOKEN |
string |
"your_CF_API_TOKEN" |
Cloudflare API 令牌(Zone:DNS:Edit 权限) |
CF_ZONE_ID |
string |
"your_CF_ZONE_ID" |
域名区域 ID |
CF_DNS_RECORD_NAME |
string |
"your_CF_DNS_RECORD_NAME" |
完整子域名 |
CF_TTL |
int |
60 |
DNS 记录 TTL(秒) |
CF_PROXIED |
boolean |
false |
是否启用 Cloudflare CDN 代理 |
CF_DNS_CONNECT_TIMEOUT |
int |
3 |
Cloudflare API 连接超时(秒) |
CF_DNS_READ_TIMEOUT |
int |
3 |
Cloudflare API 读取超时(秒) |
DNS_RECORD_TYPE |
string |
"TXT" |
DNS 记录类型(A 或 TXT) |
💡 若不需要 DNS 更新,将
CF_ENABLED设为false即可。
[!NOTE] 本工具支持多个数据源同时使用,并内置了完全自适应的解析引擎。无论数据源是标准
IP:端口#代码格式,还是中文标签、emoji国旗、JSON数组/对象,甚至是混合无关文字的标签,程序都能自动识别并统一转换为标准格式。添加新数据源只需在ADDITIONAL_SOURCES数组中新增一个对象,无需任何代码修改。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ADDITIONAL_SOURCES |
array |
[] |
所有数据源列表,每个对象包含 url(必填)和 enabled(可选,默认true)。程序会自动识别并解析任何常见格式(标准代码/中文/emoji/JSON等) |
FETCH_MAX_RETRIES |
int |
3 |
获取节点列表失败时的最大重试次数 |
FETCH_RETRY_DELAY |
int |
3 |
获取节点列表重试间隔(秒) |
FETCH_TIMEOUT |
int |
3 |
获取节点列表读取超时(秒) |
FETCH_CONNECT_TIMEOUT |
int |
3 |
获取节点列表连接超时(秒) |
OUTPUT_FILE |
string |
"ip.txt" |
最终结果保存文件名 |
ENABLE_LOGGING |
boolean |
false |
是否启用运行日志(每次运行覆盖 LOG_FILE) |
LOG_FILE |
string |
"cfnb.log" |
运行日志文件名(仅在启用日志时生效) |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
IP_CALIBRATION_ENABLED |
boolean |
false |
是否启用 IP 地区校准(基于 ipinfo.io) |
TOKEN_FAILURE_THRESHOLD |
float |
1 |
Token连续失败多少次后跳过(达到该次数则切换下一个Token) |
IP_CALIBRATION_MIN_INTERVAL |
float |
0.1 |
请求最小间隔(秒) |
IP_CALIBRATION_TOKEN_FILE |
string |
"valid_tokens.txt" |
ipinfo.io Token 文件名 |
IP_CALIBRATION_CACHE_FILE |
string |
"ipinfo_cache.txt" |
校准结果缓存文件名 |
💡 校准结果会实时写入缓存文件,程序结束后自动按 IP 地址排序,下次运行可复用。
Token 文件每行一个 ipinfo.io 的 API Token,可在 ipinfo.io 注册免费获取(每月 5 万次)。
程序会自动校验 Token 有效性并显示进度,当所有 Token 均触发速率限制时,会通过微信通知。
💡 快速配置建议
- 通常只需修改
ALLOWED_COUNTRIES、WXPUSHER_APP_TOKEN、WXPUSHER_UIDS。- 启用 DNS 更新需正确填写
CF_API_TOKEN、CF_ZONE_ID、CF_DNS_RECORD_NAME。- 网络不稳定时可 ↑
TCP_PROBES/TIMEOUT,↓MIN_SUCCESS_RATE/MAX_WORKERS。- 希望更快出结果可 ↓
BANDWIDTH_CANDIDATES或BANDWIDTH_SIZE_MB。
程序运行完成后,会在本地生成 ip.txt 文件,每行格式为 IP地址:端口#国家代码,例如:
104.16.x.x:443#US
162.159.x.x:443#HK
重要说明:
ip.txt 中保存的是基于综合加权排序的结果,综合考虑了带宽、TCP 延迟、HTTP 延迟和抖动,以确保 GitHub 推送的节点列表完整且不丢失任何高速低延迟的 IP。FILTER_IPV6_AVAILABILITY(过滤落地 IPv6)、BLOCKED_COUNTRIES(屏蔽特定国家)、DNS_IP_RISK_FILTER_ENABLED(IP 风险等级过滤,可设定最高允许等级,过滤后无节点自动回退到无风险过滤列表)等过滤,仅将符合条件的 IP 写入 DNS 记录。本工具支持将优选出的 IP 地址列表自动更新到 Cloudflare DNS 的同名 A 记录,实现解析层面的多 IP 轮询负载均衡。
编辑 config.json,找到 Cloudflare DNS 配置部分,填入你的信息:
"CF_ENABLED": true,
"CF_API_TOKEN": "your_CF_API_TOKEN",
"CF_ZONE_ID": "your_CF_ZONE_ID",
"CF_DNS_RECORD_NAME": "your_CF_DNS_RECORD_NAME",
"CF_TTL": 60,
"CF_PROXIED": false
| 参数 | 说明 |
|---|---|
CF_ENABLED |
设为 true 启用 DNS 自动更新 |
CF_API_TOKEN |
上一步获取的 API Token |
CF_ZONE_ID |
上一步获取的 Zone ID |
CF_DNS_RECORD_NAME |
要更新的完整子域名 |
CF_TTL |
DNS 记录 TTL(秒),免费套餐最低 120 |
CF_PROXIED |
是否启用 Cloudflare CDN 代理(橙色云朵),通常设为 false |
💡 若不需要 DNS 更新功能,将
CF_ENABLED设为false即可。
python main.py(Windows)或 python3 main.py(Linux)。✅ Cloudflare DNS 批量更新成功!,则配置成功。每次运行时,脚本会:
FILTER_IPV6_AVAILABILITY)。本工具支持每次运行后将 ip.txt 自动推送到你指定的 GitHub 仓库,方便通过 Raw 链接订阅节点列表。
+ → New repository。cf-ip)。💡 如果你是通过网页下载的 ZIP 压缩包解压的,必须执行以下全部命令。
如果你是用git clone命令下载的,本地仓库已自动关联远程,可跳过此步,直接进入第三步。
根据你的操作系统选择对应标签页的命令,在项目根目录下打开终端执行:
# 1. 初始化仓库(若尚未初始化)
git init
# 2. 移除旧 origin 并添加你的远程地址(替换为你的仓库链接)
$null = git remote remove origin 2>&1
git remote add origin https://github.com/你的用户名/仓库名.git
# 3. 拉取远程数据并切换到默认分支(先 main 后 master)
git fetch origin
$null = git checkout main 2>&1
if ($LASTEXITCODE -ne 0) { $null = git checkout master 2>&1 }
# 1. 初始化仓库(若尚未初始化)
git init
# 2. 移除旧 origin 并添加你的远程地址(替换为你的仓库链接)
git remote remove origin 2>/dev/null
git remote add origin https://github.com/你的用户名/仓库名.git
# 3. 拉取远程数据,对齐远程默认分支名
git fetch origin
git checkout -b temp-branch 2>/dev/null || git checkout main 2>/dev/null || git checkout master 2>/dev/null
git branch -M $(git remote show origin | grep "HEAD branch" | cut -d " " -f5) 2>/dev/null || git branch -M main
⚠️ 如果远程仓库是完全空的(创建时未勾选任何初始化文件,无任何分支),上述命令会因没有可检出的分支而失败。
解决方法:先手动创建一个初始提交再重试:git commit --allow-empty -m "init"然后再次执行上面的第 3 步。
repo 权限,过期时间设为 No expiration)。git_sync.ps1git_sync.sh将脚本开头部分的四个变量替换为你的真实信息:
# Windows (git_sync.ps1)
$github_token = "your_github_personal_access_token_here"
$github_username = "your_github_username"
$repo_name = "your_repo_name"
$branch = "your_branch"
# Linux (git_sync.sh)
github_token="your_github_personal_access_token_here"
github_username="your_github_username"
repo_name="your_repo_name"
branch="your_branch"
ip.txt 文件(可先手动运行一次 python main.py 生成)。git_sync.ps1 或在 PowerShell 中执行 .\git_sync.ps1./git_sync.sh✅ ip.txt 已推送到 GitHub,则配置成功。main.py,程序都会自动调用推送脚本,无需人工干预。[!WARNING] 关于私有仓库的特别提醒
如果你将仓库设置为 Private(私有),则通过 Raw 链接访问
ip.txt时必须在 URL 后附加?token=xxxxxx参数才能获取内容,例如:https://raw.githubusercontent.com/用户名/仓库名/refs/heads/分支名/ip.txt?token=xxxxxx但请注意,部分代理工具或订阅解析器可能无法正确处理带 Token 参数的 URL,原因包括:
- 不支持自定义请求头(GitHub 要求完整的 User-Agent 等头信息)
- 无法解析带查询参数的链接
- 防火墙或网络环境限制
因此,如果你希望将
ip.txt作为订阅链接供代理工具使用,强烈建议将仓库设为 Public(公开)。公开仓库的 Raw 链接无需 Token 即可访问,兼容性最佳:
https://raw.githubusercontent.com/用户名/仓库名/refs/heads/分支名/ip.txt
推送成功后,访问 https://raw.githubusercontent.com/你的用户名/仓库名/refs/heads/分支名/ip.txt 即可获取最新节点列表,供代理工具订阅使用。
💡 若不需要 GitHub 同步功能,可在
config.json中设置GITHUB_SYNC_MAX_RETRIES: 0即可关闭。
EdgeTunnel (EDTunnel) 是基于 Cloudflare Workers 的隧道工具。使用本项目筛选出的 ip.txt 可以显著提升连接速度和稳定性。
https://raw.githubusercontent.com/你的用户名/仓库名/refs/heads/分支名/ip.txt
💡 如需指定端口,可在链接后添加
?port=443。
104.16.x.x:443#US
162.159.x.x:443#HK
如果你已启用 Cloudflare DNS 批量更新,可以直接将你的子域名(如 cf.yourdomain.com)填入 EdgeTunnel:
方式一:通过“优选订阅生成”
cf.yourdomain.com)。方式二:通过“Cloudflare CDN 访问设置”
cf.yourdomain.com)。该域名会自动解析到当前最优的多个 IP 之一,实现零配置动态切换。
main.py 已经通过 TCP 握手筛选出了延迟最低的节点。curl 下载测试,排在前面的节点具有更强的并发吞吐能力。AVAILABILITY_CHECK_API 过滤了那些能 Ping 通但无法正常通过代理请求的无效 IP。许可证:本项目采用 MIT License 开源。