projects771/portscanner-backend

GitHub: projects771/portscanner-backend

一款基于 Node.js 和 WebSocket 的实时 TCP 端口扫描器后端,提供流式结果推送、服务检测和数据导出功能。

Stars: 0 | Forks: 0

# PortScan — 实时 IP 端口扫描器 一款具备实时流式 UI 的全栈端口扫描工具。前端基于 React + Vite + Tailwind CSS 构建,后端使用 Node.js + Express + Socket.io。 ## 功能特性 - **实时流传输** — 端口结果在发现时通过 WebSocket 实时流式传输 - **5 种扫描预设** — Top 20、Top 100、Web、Database、Remote - **自定义端口范围** — 支持扫描最多 10,000 个端口的任意范围 - **服务检测** — 识别 40 多种已知服务(HTTP、SSH、MySQL、Redis 等) - **响应时间** — 测量每个端口的延迟 - **导出 CSV** — 下载开放端口的结果 - **实时输出** — 以滚动终端样式输出所有已扫描的端口 - **取消扫描** — 可在扫描过程中随时中止 - **速率限制** — 每个客户端每分钟限制 30 次请求 - **输入验证** — 防范错误的端口范围和无法解析的主机 ## 项目结构 ``` port-scanner/ ├── server/ │ ├── index.js # Express + Socket.io server │ ├── scanner.js # TCP connect scanner logic │ └── package.json ├── client/ │ ├── src/ │ │ ├── App.jsx │ │ ├── hooks/ │ │ │ └── useScanner.js # WebSocket state management │ │ └── components/ │ │ ├── ScanForm.jsx # Inputs + preset selector │ │ ├── ProgressBar.jsx # Animated progress │ │ ├── OpenPortsPanel.jsx # Open ports list + export │ │ └── LiveFeed.jsx # Scrolling live terminal │ └── package.json └── README.md ``` ## 本地设置 ### 1. 启动后端服务器 ``` cd server npm install npm run dev # runs on http://localhost:4000 ``` ### 2. 启动 React 前端 ``` cd client npm install npm run dev # runs on http://localhost:5173 ``` 在浏览器中打开 **http://localhost:5173** ## 部署 ### 后端 — Railway(推荐) 1. 将 `server/` 文件夹推送到 GitHub 仓库 2. 访问 [railway.app](https://railway.app) → New Project → Deploy from GitHub 3. 设置环境变量:`CLIENT_URL=https://your-vercel-app.vercel.app` 4. Railway 将自动检测 Node.js 并进行部署 ### 前端 — Vercel 1. 将 `client/` 文件夹推送到 GitHub 2. 访问 [vercel.com](https://vercel.com) → Import Project 3. 设置环境变量:`VITE_SERVER_URL=https://your-railway-app.up.railway.app` 4. 部署 ## 工作原理 扫描器使用 **TCP connect 扫描** —— 这是最可靠的方法,不需要 root/admin 权限: 1. 对于每个端口,Node.js 通过 `net.createConnection` 尝试建立 TCP 连接 2. 如果连接成功 → 端口为 **开放 (open)** 3. 如果服务器立即拒绝 → 端口为 **关闭 (closed)** 4. 如果连接超时 → 端口为 **被过滤 (filtered)**(防火墙丢弃了数据包) 端口扫描的并发数为 150,这意味着任何时候都有 150 个同时进行的连接尝试。这使得在本地网络上扫描 1,000 个端口只需约 2–5 秒。 ## 法律与道德声明 请仅扫描您**拥有**或获得**明确书面授权**的 IP 地址和主机。未经授权的端口扫描可能违反法律,包括《计算机欺诈和滥用法》(CFAA)以及其他国家的同等立法。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | React 18, Vite, Tailwind CSS 3 | | 后端 | Node.js, Express 4 | | 实时通信 | Socket.io 4 | | 扫描器 | Node.js `net` 模块 (TCP) | | 部署 | Vercel (前端) + Railway (后端) |
标签:DNS枚举, GNU通用公共许可证, MITM代理, Node.js, React, Syscall, Syscalls, Websocket, Web开发, 全栈项目, 插件系统, 数据统计, 端口扫描, 网络安全工具, 自定义脚本