homay

command module
v0.0.0-...-89510bb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 26 Imported by: 0

README

Homay v2.0

A high-performance, zero-dependency, multi-CDN clean IP scanner built in Go 1.21. Designed for network-restricted environments and mobile devices running Termux.

Features

  • Zero Dependencies — only Go standard library
  • O(k) Reservoir Sampling — memory-efficient scanning of large CDN ranges
  • Anti-DPI Padding — random HTTP headers to defeat deep packet inspection (optimized for Iran)
  • HTTPing — real HTTP latency measurement, not just TCP ping
  • TLS Detection — reports TLS version (1.0/1.1/1.2/1.3) and HTTP/2 support
  • Multi-CDN — Cloudflare, Fastly, Gcore, switchable from the menu (option 8)
  • Cross-Platform — Linux amd64 and Android arm64 (Termux)
  • Live Spinner — animated progress indicator during scans
  • Score Gradient & Per-Colo Colors — 5-level color scoring, consistent color per datacenter
  • Scan Summary — best IP, average score, and total time after each scan
  • Optional Emoji Badges — TLS 1.3 / HTTP2 / colo status icons (off by default; toggle in Settings or -emoji)
  • Clipboard Export — copy the best VLESS/Trojan link straight to the clipboard on Termux (needs Termux:API)
  • History / Compare — each scan is diffed against the previous one: best-score delta, new IPs, dropped IPs
  • Favorites — save specific IP:Port pairs and re-test just those later without a full scan

Installation on Termux (Android)

# 1. Update packages
pkg update && pkg upgrade -y

# 2. Install Go and Git
pkg install golang git -y

# 3. Clone the repo
git clone https://github.com/FSB-scanner/homay.git
cd homay

# 4. Build
go build -o homay .

# 5. Run
./homay

Or, without cloning first:

go install github.com/FSB-scanner/homay@latest
$(go env GOPATH)/bin/homay

Same steps work on regular Linux (amd64) — just skip the pkg commands and install Go/Git through your distro's package manager instead.


Main Menu

1) Quick scan   — 300 sampled IPs from the selected CDN, port 443
2) Deep scan    — 2000 sampled IPs from the selected CDN, port 443
3) Custom CIDR  — Enter your own IP range and ports
4) VLESS/Trojan — Paste a proxy link, find clean IPs, get updated link
                  (optionally copies the best link to clipboard)
5) Single bench — Test one specific IP
6) Discover DC  — Find nearest Cloudflare datacenter
7) Settings     — Adjust all parameters
8) Change CDN   — Switch Quick/Deep/Custom scan target between
                  Cloudflare, Fastly, and Gcore
9) Favorites    — Save/re-test specific IP:Port pairs
0) Exit

Discover DC (option 6) always targets Cloudflare regardless of the selected CDN, since colo discovery relies on Cloudflare's own /cdn-cgi/trace endpoint.

After every scan (Quick/Deep/Custom/VLESS-Trojan), Homay also shows a COMPARE box against the previous scan (best-score delta, new IPs, dropped IPs) and offers to save the best IP to your favorites.


Clipboard Export

After scanning a VLESS/Trojan link (option 4), Homay offers to copy the best-scoring updated link straight to your clipboard via termux-clipboard-set. This requires the Termux:API add-on app plus:

pkg install termux-api

If it's not installed, the copy fails gracefully with an explanation — your scan results are unaffected either way.


Settings

# Setting Default Description
1 Ports 443,8443,2053,2083,2087,2096 TLS ports to scan
2 Concurrency 32 Worker count (lower on weak mobile)
3 Ping count 4 HTTP pings per IP
4 Timeout ms 2000 Connection timeout
5 Max loss % 30 Filter IPs with high packet loss
6 Max lat ms 400 Filter IPs with high latency
7 Top-K keep 15 How many results to keep
8 Bench top-N 5 How many IPs to speed-test
9 Bench secs 8 Download test duration
10 HTTPing true Use real HTTP measurement
11 Padding true Anti-DPI random headers
12 Colo filter (empty=all) Filter by datacenter e.g. FRA,GYD
13 SNI speed.cloudflare.com TLS server name
14 Emoji false Status badges (✅/⚡/🌍); off by default in case your terminal font can't render them
15 Reset — Reset all settings to defaults

Scan Results

IP              PORT  LAT ms  JIT ms  LOSS  TLS  H2  COLO  SCORE
------------------------------------------------------------------------
104.16.155.171  443   92      3       0     1.3  y   FRA   94.2
Column Meaning
LAT ms Average HTTP latency — lower is better
JIT ms Jitter (stability) — lower is better
LOSS Packet loss % — 0 is ideal
TLS TLS version (1.3 is best)
H2 HTTP/2 support (y = yes)
COLO Cloudflare datacenter code
SCORE 0–100 composite score

⚠️ Non-TLS ports (80, 8080, ...): these can never carry a TLS-based VLESS/Trojan config, so even with perfect latency their score is capped at 60 — a fast plain-TCP handshake alone doesn't mean the port is actually usable for your proxy. Stick to TLS ports (443, 8443, 2053, 2083, 2087, 2096) unless you have a specific non-TLS use case.


Output Files

After each scan, three files are saved automatically:

File Format Use
homay-DATE.json JSON Full data with all fields
homay-DATE.csv CSV Open in Excel/Sheets
homay-DATE.txt Text ip:port per line — paste into V2Ray/Xray/Sing-box

Two more files are kept and overwritten each scan (not timestamped):

File Use
homay-last.json Snapshot used to build the COMPARE box next scan
homay-favorites.json Your saved favorite IP:Port list

Warnings

⚠️ Memory on Full Scan: Setting -sample 0 or using Full Scan expands all Cloudflare IPs (~1.5M addresses) into RAM. On mobile devices this may use 100MB+. Use Quick Scan or set a sample limit via Settings.

⚠️ IPv4 Only: IPv6 is not supported yet. All CIDR ranges must be IPv4.

⚠️ CIDR Limit: For safety, subnets larger than /10 are rejected automatically.


CLI Usage

./homay                          # interactive menu
./homay -cdn cloudflare -top 20  # quick scan via CLI
./homay -cidr 104.16.0.0/20 -colo FRA,GYD
./homay -link vless://...
./homay -sample 500 -c 16 -t 1500
./homay -cdn cloudflare -top 20 -emoji  # with status emoji badges

License

MIT — see LICENSE.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL