IP 工具箱:纯 Node.js 零依赖的在线检测工具

番星

背景与原理

简单说,这是一个跑在浏览器里的 IP 工具箱,用纯 Node.js 内置模块(httphttpsdnsnetfsurl)写的,没有任何 npm 依赖,clone 下来就能跑。

它解决的是我自己来回切换多个在线工具的麻烦:想查本机 IP 要看一个站,查归属地要看另一个,查 DNS 污染又得开第三个。与其到处找,不如写一个把这些都收在一起的。

目前提供的功能:

  • 本机 IP 检测 — 本地 IP、公网 IPv4/IPv6、内网判断
  • IP 归属地 — 通过第三方 API 获取城市级位置
  • IP 纯净度 — 识别 IP 是不是代理 / VPN / 数据中心
  • 代理分流识别 — 对比国内外双栈 IP,看出科学上网分流模式
  • 端口检测 — 检测 80/443/8080/8443 远程可达性
  • 上传 / 下载测速 — 浏览器端直接测
  • DNS 解析(DoH) — 用多家独立 DoH 解析器对比结果,识别 DNS 污染(仅限 GitHub 相关域名)
  • 国外出口 IP 污染度 — 检测科学上网场景下出口 IP 的纯净度与风险
  • GitHub 优选 IP — 每 4 小时自动扫描 GitHub 各服务域名,选出延迟最低的可达 IP

项目地址:https://gitee.com/knight3fax/ip-toolkit


部署

环境要求

Node.js >= 20(README 里推荐 v24)。

启动

1
2
cd /root/ip-checker
node server.js

默认监听 127.0.0.1:3001

systemd 保活

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=IP Checker Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/ip-checker
ExecStart=/root/.nvm/versions/node/v24.18.0/bin/node server.js
Restart=always
RestartSec=5
StartLimitIntervalSec=0

[Install]
WantedBy=multi-user.target
1
2
systemctl daemon-reload
systemctl enable --now ip-checker

nginx 反向代理

默认只监听 127.0.0.1,要外网访问就得配个反代:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 8080;
server_name _;
client_max_body_size 16m;

location / {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

这里容易踩坑:不改反代就没法从外网访问,因为服务默认绑在回环地址上;另外 DoH 污染对比的功能只针对 GitHub 相关域名,不是所有域名都能用。


总结

如果你经常排查网络问题、折腾代理,或者想要一个部署起来最省事的自用检测站,这个工具挺合适。零依赖让它几乎可以在任何低配机器上跑,也不用担心 npm 依赖过期。

项目链接:https://gitee.com/knight3fax/ip-toolkit

  • 标题: IP 工具箱:纯 Node.js 零依赖的在线检测工具
  • 作者: 番星
  • 创建于 : 2026-08-22 10:15:00
  • 更新于 : 2026-08-25 16:45:08
  • 链接: https://xingbox.me/ip-toolkit-ip-toolbox/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
IP 工具箱:纯 Node.js 零依赖的在线检测工具