SenPaiScanner: Tool scan IP Cloudflare nhẹ nhàng, viết bằng Go
Một open-source scanner giúp tìm IP Cloudflare hoạt động tốt nhất cho proxy VLESS/Trojan, với TUI trực quan và không cần nhớ command nào.
Nguyễn Nhật Long
@nguyennhatlong1303
Nếu bạn từng ngồi thử từng IP Cloudflare một để tìm cái nào có latency thấp, connection ổn định cho proxy config của mình, thì bạn biết cảm giác đó khổ như thế nào. Giờ có một tool viết bằng Go, gọn nhẹ, chạy ngay trên terminal mà không cần nhớ bất kỳ flag nào chỉ cần paste config vào và để nó làm việc.
SenPaiScanner vừa đạt 844 stars trên GitHub, và cộng đồng đang tăng trưởng khá nhanh. Mình thấy đây là một project đáng để anh em dev Việt Nam biết đến, đặc biệt là những ai hay làm việc với Cloudflare CDN, proxy, hay network tooling nói chung.
SenPaiScanner là gì và giải quyết vấn đề gì?
SenPaiScanner là một lightweight Cloudflare IP scanner với giao diện TUI (Terminal UI). Nói đơn giản: bạn có một config VLESS hoặc Trojan, bạn muốn tìm IP Cloudflare nào kết nối tốt nhất qua proxy đó tool này sẽ tự động quét và cho bạn kết quả.
Vấn đề nó giải quyết rất thực tế: trên nhiều mạng, latency không ổn định, connection bị drop liên tục, và DPI (Deep Packet Inspection) có thể can thiệp. Thay vì bạn phải manually test từng IP, SenPaiScanner tự động hóa toàn bộ quá trình này.
Điều mình thấy hay là tool không yêu cầu bạn phải nhớ bất kỳ CLI flag nào. Chạy senpaiscanner, nó mở ra một menu đơn giản, bạn navigate bằng arrow keys và Enter. Xong. Không có learning curve đáng kể.
Cách nó hoạt động 2 phase rõ ràng
SenPaiScanner chạy qua hai giai đoạn khi scan:
Phase 1 Connectivity scan: Tool lấy thông tin từ config URL của bạn (SNI, host, WebSocket path, port) rồi probe các candidate Cloudflare IP. Nó kiểm tra trace reachability và quan trọng với WebSocket config, nó test xem TLS connection có survive qua DPI hay không. Đây là bước lọc thô.
Phase 2 Xray validation: Những IP pass Phase 1 sẽ được test end-to-end bằng một embedded xray instance, chạy thực tế qua config VLESS/Trojan của bạn. Kết quả hiển thị đầy đủ:
Sau khi Phase 2 xong, bạn nhấn c để copy các working IP:port vào clipboard và tự động save ra file ips.txt. Rất tiện.
| Metric | Mô tả |
|---|---|
| Endpoint | IP:port đã test |
| Transport type | Loại transport (WS, gRPC, etc.) |
| Download speed | Tốc độ download thực tế |
| Latency (TTFB) | Time to first byte |
| Status | Pass hoặc Fail |
Theo kinh nghiệm của mình, việc tách thành 2 phase như này là design decision khá thông minh. Phase 1 lọc nhanh hàng trăm IP chỉ bằng connectivity check (rẻ về resource), Phase 2 mới chạy full validation trên tập nhỏ hơn. Nếu chạy xray validation trên toàn bộ IP pool thì thời gian scan sẽ lâu hơn nhiều.
Cài đặt đa nền tảng, nhiều cách
Tool hỗ trợ khá đầy đủ các platform:
Linux/macOS cài nhanh nhất bằng script:
| Platform | Architecture | File |
|---|---|---|
| Linux | x86_64 | `senpaiscanner_linux_x86_64.tar.gz` |
| Linux | ARM64 | `senpaiscanner_linux_arm64.tar.gz` |
| macOS | Intel | `senpaiscanner_darwin_x86_64.tar.gz` |
| macOS | Apple Silicon | `senpaiscanner_darwin_arm64.tar.gz` |
| Windows | x86_64 | `senpaiscanner_windows_x86_64.zip` |
1curl -fsSL https://github.com/MatinSenPai/SenPaiScanner/raw/refs/heads/main/install.sh | bash
Muốn dùng pre-release:
1curl -fsSL https://github.com/MatinSenPai/SenPaiScanner/raw/refs/heads/main/install.sh | bash -s -- --prerelease
Từ source thì đơn giản:
1go install github.com/matinsenpai/senpaiscanner/cmd/senpaiscanner@latest
Mình khuyến khích cài từ source nếu bạn muốn đọc code trước khi chạy đây là network tool, nên việc audit code là thói quen tốt.
Điểm đáng chú ý về mặt kỹ thuật
Nhìn vào cấu trúc repo, project được tổ chức khá chuẩn theo Go project layout:
Một vài điểm mình đánh giá cao:
| Thư mục | Vai trò |
|---|---|
| `cmd/senpaiscanner` | Entry point, main package |
| `internal` | Business logic, không export ra ngoài |
| `pkg/version` | Version management |
| `.goreleaser.yaml` | CI/CD cho release automation |
- Embedded xray instance: Thay vì yêu cầu user cài xray riêng, tool embed trực tiếp. Giảm friction khi setup.
- TUI thay vì CLI flags: Đây là trend mình thấy ngày càng nhiều trong Go tooling (charmbracelet/bubbletea ecosystem). UX tốt hơn hẳn cho interactive tool.
- DPI detection: Không chỉ check connectivity đơn thuần mà còn test xem WebSocket TLS connection có bị DPI block hay không. Đây là feature thực tế mà nhiều scanner khác bỏ qua.
- Cross-platform: Build cho cả Linux, macOS (cả Intel lẫn Apple Silicon), và Windows. Dùng GoReleaser nên release process tự động.
Project có 44 commits, 21 issues đang mở, và 2 pull requests. Cộng đồng đang active có file CONTRIBUTING.md rõ ràng nếu bạn muốn contribute.
Ai nên quan tâm?
Thẳng thắn mà nói, tool này hướng đến một nhóm user cụ thể:
- Anh em làm việc với Cloudflare CDN và cần tìm optimal IP cho proxy setup.
- Network engineers muốn test connectivity qua các Cloudflare edge server khác nhau.
- Những ai dùng VLESS/Trojan proxy và muốn tự động hóa việc tìm IP hoạt động tốt.
- Go developers muốn học cách build TUI application, embed external binary, hoặc tổ chức Go project.
Nếu bạn không thuộc các nhóm trên, tool này có thể không liên quan trực tiếp. Nhưng nếu bạn đang build network tooling bằng Go, source code của project này là reference khá tốt.
Một vài lưu ý
Mình muốn nhấn mạnh: đây là tool liên quan đến network scanning và proxy. Hãy chắc chắn bạn hiểu rõ mục đích sử dụng và tuân thủ quy định pháp luật tại Việt Nam cũng như nơi bạn đang ở. Tool được release dưới MIT license, tức là tác giả không chịu trách nhiệm cho cách bạn sử dụng.
Ngoài ra, với 21 issues đang mở, tool vẫn đang trong giai đoạn phát triển tích cực. Nếu gặp bug, hãy report trên GitHub project có vẻ responsive với community feedback.
Điều mình rút ra được
- SenPaiScanner giải quyết một pain point thực tế: tự động tìm Cloudflare IP hoạt động tốt cho proxy config, thay vì test thủ công.
- TUI-first approach giúp tool dễ dùng mà không cần đọc docs dài dòng.
- 2-phase scanning (connectivity → xray validation) là thiết kế thông minh, cân bằng giữa tốc độ và độ chính xác.
- Go project structure chuẩn chỉnh, đáng để tham khảo nếu bạn đang build tool tương tự.
Bạn có thể xem source code và download tại GitHub repo. Nếu thấy hữu ích, drop một star open-source maintainer cần motivation, và star là cách đơn giản nhất để thể hiện điều đó.
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.
Thấy hay? Chia sẻ cho bạn bè!