【源码分享】不只是检测代理! Node.js版 socks5代理检测工具
📺前言
最近发现了一个非常实用的代理检测工具——https://github.com/cmliu/CF-Workers-CheckSocks5。
这个项目设计得相当出色:
✅ 支持检测 SOCKS5 代理
✅ 获取出口 IP 地址
✅ 识别国家和区域
✅ 查询运营商信息
✅ 提供网页端批量检测功能
平常验证代理节点是否可用时特别方便。
但经过一段时间的使用,我注意到了一个关键问题:
Cloudflare Worker 的检测结果,并非总能准确反映我真实的网络环境。
比如同一个代理:
- 在 Cloudflare 节点上测试显示正常
- 但在我的宽带网络下却连接失败
再比如:
- Cloudflare 报告的延迟很低
- 实际使用时依然非常卡顿
对于普通代理用户来说,这个问题可能影响不大。但如果你经常折腾 IPTV 或运营商网络直播源,这种差异有时会直接误导判断。
于是我想:
🤔 能不能把这套检测逻辑部署到自己的服务器上?
这样检测结果就能真实反映我的 VPS、NAS 或家庭网络环境,而不再依赖 Cloudflare 的边缘节点。
正好最近 AI 编程工具越来越成熟。
我就把需求整理好,借助 AI 完成了这个 Node.js 项目。
整个项目参考了 CF-Workers-CheckSocks5 的 API 设计思路,但并没有简单移植,而是在 Node.js 环境下重新实现了代理检测、域名解析和出口 IP 查询等功能。
经过几天的实际使用,效果相当不错。
今天就和大家分享这个小工具。
❓为什么选择从 Cloudflare Worker 转向 Node.js?
这正是整个项目最具价值的地方。
Cloudflare 实际检测的对象是谁?
假设你使用的是湖南电信宽带,访问如下路径:
CF Worker
真实的检测流程大致为:
你 ↓ Cloudflare 新加坡节点 ↓ 代理服务器 ↓ 目标网站
最终获取的结果是:
👉 新加坡Cloudflare节点访问代理服务器得出的结果
而不是:
👉 湖南电信宽带访问代理服务器得出的结果

📺 IPTV场景下尤为突出
许多IPTV玩家实际测试的内容包括:
- 家庭宽带代理
- 运营商网络
- IPTV专用网络
- CDN节点
这些网络通常存在显著的地域性差异。
例如:
场景一
Cloudflare:
连接成功
实际家宽:
连接失败
场景二
Cloudflare:
延迟 50ms
本地网络:
延迟 300ms
场景三
部分运营商专网节点存在以下情况:
无法访问 Cloudflare
然而:
本地宽带可以正常访问
这种现象在实际中较为常见。
✅ Node.js 版本的优势是什么?
答案非常直接:
部署在哪里
检测位置的选择
例如:
广州电信 VPS
检测结果与广东电信用户的实际体验接近
上海联通服务器
检测结果与上海联通用户的实际体验接近
新加坡 VPS
检测结果能反映东南亚地区的网络状况
家庭 NAS
检测结果就是你家中宽带的真实表现
对于 IPTV 用户而言,这样的检测数据更具实际参考意义。
✨ 项目主要功能
🔍 SOCKS5 代理检测
兼容格式:
socks5://1.2.3.4:1080
系统会自动完成以下检测:
✅ 连接状态
✅ 对外显示的 IP 地址
✅ 所属国家与地区
✅ 网络服务提供商
✅ 请求响应时长
🌍 HTTP 代理检测
支持:
http://1.2.3.4:8080
🔒 HTTPS 代理检测
支持:
https://1.2.3.4:443
📡 域名解析
支持:
proxy.example.com
自动解析:
- IPv4
- IPv6
并返回全部可用地址。
⚡ 批量解析
支持一次性提交多个目标:
proxy1.example.com
proxy2.example.com
proxy3.example.com
适用于代理池的日常维护。
🌎 出口 IP 查询
借助多个公共渠道获取出口网络信息。
查询结果涵盖以下内容:
- IP 地址
- 归属国家或地区
- 所在城市
- ASN
- ISP
有助于快速评估节点质量。



⚠️ 与原版 Worker 的差异
此处作专门说明。
原版 CF-Workers-CheckSocks5 支持以下类型:
✅ SOCKS5
✅ HTTP
✅ HTTPS
✅ TURN
✅ SSTP
而当前 Node.js 版本仅保留:
✅ SOCKS5
✅ HTTP
✅ HTTPS
以下功能尚未移植:
❌ TURN
turn://user:pass@server:3478
❌ SSTP
sstp://user:pass@server:443
因此不能看作完整的移植版本。
更精准的描述是:
这是一个借鉴 CF-Workers-CheckSocks5 设计理念,在 Node.js 环境下重新实现的代理检测工具。
不过前端页面完全沿用原项目。
🔌 API 概述
该项目还提供 REST API 接口。
便于与其他工具进行集成。
代理检测
GET /api/check
使用示例:
/api/check?proxy=socks5://1.2.3.4:1080
/api/check?proxy=http://1.2.3.4:8080
/api/check?proxy=https://1.2.3.4:443
响应结果:
{
"success": true,
"responseTime": 523,
"exit": {
"ip": "203.0.113.10",
"country": "Japan"
}
}
域名解析
GET /api/resolve
例如:
/api/resolve?proxyip=proxy.example.com:1080
结果返回:
[
"198.51.100.10:1080",
"[2001:db8::10]:1080"
]
批量解析
POST /api/resolve-batch
适用于代理池的维护场景。


🖥️ 使用 1Panel 进行部署
以下为 Node.js 的部署方式,以我的 N1 盒子(运行 Armbian 系统)为例,通过 1Panel 工具完成部署。
第一步:上传项目
将项目上传至服务器。
例如:
/var/www/node
第二步:搭建 Node 项目
导航到相关位置:
网站 → 运行环境 → Node.js
点击“创建运行环境”按钮。
填写以下配置信息:
项目路径
/var/www/node
启动指令
node server.js
端口监听
示例端口:
3000

创建完成后,通过 http://ip:3000 访问即可

📝 获取源代码
源代码已托管至Github,你只需直接访问并下载即可。
https://github.com/wind005/TVlive/tree/main/工具/node.js

📌 总结
如果说 Cloudflare Worker 版更适合:
🌍 全球范围内快速测试代理
那么 Node.js 版本则更契合:
📺 IPTV 玩家
🖥️ NAS 用户
☁️ VPS 用户
🔍 网络测试爱好者
它的核心优势可以概括为一句话:
检测结果来自你的自有服务器,而非 Cloudflare 的网络环境。
这意味着,当你需要测试国内运营商网络、IPTV 专网、家宽代理或海外直播源时,这类结果往往更具实际参考价值。
如果你手上正好有一台 VPS、NAS 或者 1Panel 服务器,不妨部署体验一下,它可能成为你日常网络诊断中的得力工具。🚀
⚠️ 免责声明
本项目仅限用于网络学习、代理测试、网络故障排查等合法场景。请严格遵守当地法律法规及相关服务条款,严禁用于非法网络访问或其它违规行为。
全文完
评论区 (3)
发表评论
共有 3 条评论
刚按教程在自己的腾讯云轻量上部署成功了,检测结果确实比之前用的在线工具准多了,IPTV源筛选效率直接翻倍,好评!
文章写得很详细,不过对于没有独立服务器的用户来说门槛还是有点高。能不能考虑打包成Docker镜像?这样直接拉取运行,不用配置环境,对新手上手会更友好。
看完很想试试,但自己还不太会部署Node项目。请问这个工具对新手友好吗?有没有一键部署的教程或者Docker版本?