840+ platforms Β· Async Β· ML-powered detection
A terminal-based OSINT scanner that checks 840+ social networks and web platforms for a given username in seconds. It doesn't just check HTTP status codes β it uses a blend of ML and heuristic analysis across 30 structural signals to distinguish real profiles from error pages, login walls, and landing pages.
| Category | Features |
|---|---|
| Detection | ML + heuristic voting Β· 30-dim feature vectors Β· per-site fingerprints |
| Scanning | 840+ async sites Β· rate-limited Β· retry/backoff Β· Tor/proxy |
| Extraction | Display name, bio, avatar via OpenGraph, JSON-LD, and per-site CSS |
| Recursion | Extract usernames from bios and re-scan them (--recurse-depth N) |
| Correlation | Cluster profiles by avatar, bio, links (--correlate) Β· Domain checks (--domains) |
| Watch | Periodic re-scan with webhook alerts (--watch 6h --notify <url>) |
| ML lifecycle | Train custom models Β· hand-label uncertain results Β· self-check accuracy |
| Outputs | JSON, CSV, HTML, Markdown, PDF, XLSX, GEXF, Mermaid, Maltego |
| Batch scan | Scan from file (--from-file usernames.txt) |
| History | SQLite-backed scan history browsable via dashboard |
| Web UI | FastAPI dashboard (alians_eye web) |
| Completions | Shell autocompletion (--completion bash|zsh) |
| Extras | Playwright fallback Β· Textual TUI Β· MCP server for LLM agents |
pip install aliens-eye
# One-shot scan
aliens_eye username
# Or with Docker
docker build -t aliens-eye .
docker run --rm -it aliens-eye usernamepip install "aliens-eye[browser]" # Playwright for JS-heavy pages
pip install "aliens-eye[train]" # scikit-learn for retraining
pip install "aliens-eye[correlate]" # Pillow for avatar matching
pip install "aliens-eye[pdf]" # PDF report generation
pip install "aliens-eye[tui]" # Interactive terminal UI
pip install "aliens-eye[serve]" # MCP server for LLM agents
pip install "aliens-eye[web]" # Web dashboard (FastAPI)
pip install "aliens-eye[xlsx]" # Excel exportFrom source:
git clone https://github.com/DesusLove/Alian-s_Eye.git
cd Aliens_eye
pip install -e .aliens_eye username
aliens_eye username1 username2
aliens_eye username -l advanced
aliens_eye username --site github,redditaliens_eye username --format all --output results
aliens_eye username --format pdf
aliens_eye username --only-foundaliens_eye username --correlate --domains
aliens_eye username --recurse-depth 1
aliens_eye username --watch 6h --notify https://hooks.example/webhook
aliens_eye username --resume scan.jsonl
aliens_eye username --profile quickaliens_eye --from-file usernames.txt
aliens_eye --from-file usernames.txt -l advancedaliens_eye username --tor
aliens_eye username --proxy socks5://127.0.0.1:1080
aliens_eye username --no-nsfwaliens_eye diff results/old.json results/new.json
aliens_eye selfcheck --negatives 2
aliens_eye label results/report.json --out labeled.csv
aliens_eye tui username
aliens_eye serve
aliens_eye web --port 8765
aliens_eye --completion bash > /etc/bash_completion.d/alians_eyeEvery HTTP response is transformed into a 30-dimensional feature vector:
HTTP status β 200, 3xx, 404, 4xx, 5xx buckets
URL analysis β username in path Β· canoncial url Β· redirect patterns
Keywords β error keywords Β· positive keywords Β· meta analysis
DOM signals β images Β· forms Β· profile/error CSS classes
Structure β og:type=profile Β· JSON-LD Person schema
Timing β response time Β· redirect count
Fingerprints β per-site learned patterns from past scans
Two judges score each vector:
| Judge | Method | Weight |
|---|---|---|
| Heuristic engine | Weighted scoring over features | 60% |
| ML model | Logistic regression (trained on labeled data, runs in pure Python) | 40% |
The blended probability maps to one of three verdicts:
Found (β₯ threshold) β high-confidence profile match
Maybe (between thresholds) β uncertain, needs review
Not Found (β€ threshold) β no profile detected
If the ML model file is missing or corrupt, the scanner falls back to heuristics-only mode automatically.
pip install "aliens-eye[train]"
# 1. Collect labeled data
aliens_eye train collect --out dataset.csv --negatives 4
# 2. Train and export
aliens_eye train fit --data dataset.csv --out model.json
# 3. Use your custom model
aliens_eye username --model model.jsonScans are saved to the results/ directory with timestamped filenames:
| Format | File | Content |
|---|---|---|
| JSON | username_level_YYYYMMDD_HHMMSS.json |
Full per-site feature analysis |
| CSV | username_level_YYYYMMDD_HHMMSS.csv |
Flat rows for spreadsheets |
| HTML | username_level_YYYYMMDD_HHMMSS.html |
Standalone styled report |
| Markdown | username_level_YYYYMMDD_HHMMSS.md |
Found/Maybe summary |
username_level_YYYYMMDD_HHMMSS.pdf |
Investigator report with avatars | |
| GEXF / Mermaid / Maltego | Graph formats | Correlation visualization |
src/alians_eye/
βββ core/ β scanner, detector, analyzer, http, exporter,
β fingerprints, config, correlate, domains,
β watch, checkpoints, variations, expand
βββ ml/ β inference (pure Python), training, data collection,
β active labeling
βββ utils/ β rich console output, logging, colors
βββ data/ β sites.json (840+), model.json, nsfw filter,
β selfcheck ground-truth, site profiles
βββ tui/ β Textual interactive browser
βββ cli.py β CLI entry point
βββ mcp_server.py β MCP protocol for LLM agent integration
βββ selfcheck.py β Accuracy validation
Aliens Eye merges a JSON config file with CLI flags (CLI takes precedence). Config search path:
./config.json(current directory)~/.config/alians_eye/config.json(platform config dir)%LOCALAPPDATA%\alians_eye\config.json(Windows)
{
"concurrent": 50,
"timeout": 10.0,
"retries": 2,
"rate_limit_delay": 0.2,
"output_dir": "results",
"output_formats": ["json", "csv", "html", "md"],
"use_playwright": false,
"proxy": null,
"use_ml": true,
"exclude_nsfw": false,
"level": "basic"
}Custom platform definitions can be dropped as { "name": "https://site/{}" } JSON files into ./sites.d/ β they merge automatically.
All contributions welcome:
- Add sites β edit
src/alians_eye/data/sites.json - Improve detection β expand
selfcheck.jsonground-truth - Retrain model β collect better data, tune thresholds
- Fix bugs β PRs with passing tests appreciated
Before submitting:
ruff check src tests
pytestThis tool is for educational purposes and legitimate OSINT research only. Users are responsible for complying with all applicable laws and platform terms of service. The authors assume no liability for misuse.
