【源码分享】不只是检测代理! 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 服务器,不妨部署体验一下,它可能成为你日常网络诊断中的得力工具。🚀

⚠️ 免责声明

本项目仅限用于网络学习、代理测试、网络故障排查等合法场景。请严格遵守当地法律法规及相关服务条款,严禁用于非法网络访问或其它违规行为。

全文完

0 0

评论区 (3)

发表评论

共有 3 条评论

avatar
代码小白菜27 天前

刚按教程在自己的腾讯云轻量上部署成功了,检测结果确实比之前用的在线工具准多了,IPTV源筛选效率直接翻倍,好评!

avatar
网络探险家28 天前

文章写得很详细,不过对于没有独立服务器的用户来说门槛还是有点高。能不能考虑打包成Docker镜像?这样直接拉取运行,不用配置环境,对新手上手会更友好。

avatar
熬夜学习中的菜鸟1 个月前

看完很想试试,但自己还不太会部署Node项目。请问这个工具对新手友好吗?有没有一键部署的教程或者Docker版本?