2026-01-29 14:03:08 +03:30
2026-01-29 14:03:08 +03:30
2026-01-28 15:56:15 +03:30
2026-01-29 14:03:08 +03:30
2026-01-29 14:03:08 +03:30
2026-01-28 03:42:36 +03:30
2026-01-28 03:42:36 +03:30
2026-01-28 16:08:34 +03:30

Find Me Internet 🌐

Find Me Internet is a high-performance, scalable proxy scanner and tester written in Go. It is designed to ingest thousands of proxy links (VLESS, VMess, Trojan, Reality, etc.) from files or URLs, filter out dead nodes efficiently using "cheap" network checks, and rigorously test survivors using a real Sing-box core.

It uses a "Funnel Architecture" to minimize resource usage, allowing it to scan 100,000+ proxies without crashing your system.

🚀 Architecture

The system processes proxies through a multi-stage pipeline:

graph LR
    A[Source File/URL] --> B(Parser)
    B --> C{Dedup}
    C -- New --> D{Cheap Filter}
    C -- Duplicate --> X[Discard]
    D -- TCP/TLS OK --> E(Sing-box Core)
    D -- Fail --> X
    E -- Latency OK --> F(GeoIP Enricher)
    E -- Fail --> X
    F --> G[JSONL Sink]
    F --> H[TXT Sink]

🛠️ Prerequisites

  1. Go 1.21+ installed.
  2. Sing-box Binary: The engine that powers the tests.
  3. GeoLite2 Database (Optional): For country detection.

📦 Installation

1. Clone & Dependencies

git clone https://github.com/sajadMRjl/find-me-internet.git
cd find-me-internet
go mod tidy

2. Install Sing-box

Download the latest release for your OS from Sing-box Releases.

  • Extract the binary.
  • Place it in the ./bin/ folder (or anywhere you like).
  • Linux/macOS: Ensure it is executable: chmod +x ./bin/sing-box

3. Setup GeoIP (Optional)

  • Register for a free MaxMind account.
  • Download the GeoLite2-Country.mmdb.
  • Place it in ./data/.

⚙️ Configuration

Create a .env file in the root directory:

# --- General ---
LOG_LEVEL=INFO           # Options: DEBUG, INFO, WARN, ERROR
MAX_WORKERS=50           # Concurrency limit for Sing-box instances

# --- Timeouts ---
TCP_TIMEOUT=2s           # Max time for "Cheap" TCP connect
TEST_TIMEOUT=10s         # Max time for "Expensive" HTTP test
TEST_URL=http://cp.cloudflare.com  # The target to fetch

# --- Paths ---
SING_BOX_PATH=./bin/sing-box
INPUT_PATH=./data/proxies.txt            # Default input source
OUTPUT_PATH=./data/valid_proxies.jsonl   # Detailed output
TXT_OUTPUT_PATH=./data/valid_proxies.txt # Simple list output
GEOIP_PATH=./data/GeoLite2-Country.mmdb

🏃 Usage

You can run the scanner in three ways:

1. Default Mode

Reads the input path defined in your .env file (INPUT_PATH).

go run cmd/main.go

2. File Override

Pass a specific local file path as an argument.

go run cmd/main.go ./my_new_proxies.txt

3. URL Streaming

Pass a URL (starting with http:// or https://) to fetch and scan a remote subscription directly.

go run cmd/main.go https://raw.githubusercontent.com/example/proxies/main/list.txt

📊 Viewing Results

The scanner generates two output files in your data/ folder:

  1. valid_proxies.txt: A clean list of working proxy links, ready to copy-paste into V2Ray clients.
  2. valid_proxies.jsonl: Detailed JSON logs for analysis.
# Watch results in real-time
tail -f data/valid_proxies.jsonl

Output Example (JSONL)

{"link":"vless://uuid@1.2.3.4:443...","type":"vless","address":"1.2.3.4","port":443,"latency_ms":145,"country":"DE"}
{"link":"vmess://...","type":"vmess","address":"5.6.7.8","port":80,"latency_ms":210,"country":"US"}

⚠️ Disclaimer

This tool is for educational purposes and network analysis only. The user is responsible for ensuring they have permission to test the networks and proxies they scan.

Description
No description provided
Readme 16 MiB
Languages
Go 100%