Skip to content

Repository files navigation

ProxyScope

Synthient have add a UAM ("Just a moment...") Cloudflare Challenge so the script DON'T WORK anymore. You can pass the UAM Challenge by Famous solver like https://nslsolver.com/ or https://www.capsolver.com/. You can always use the script for IP Intell on other than Synthient.

Hammer your proxy. Know your IPs.

Load-test any HTTP/SOCKS5 proxy pool and get live multi-source intel on every exit IP — risk score, network type, rDNS, ASN, Tor/VPN/abuse flags, and more.

 Exit IP           Risk  Net           Country  ISP                    Proxy?  IPQS  Abuse
 ─────────────────────────────────────────────────────────────────────────────────────────
 103.149.x.x         12  RESIDENTIAL   TH       True Internet           no       5      0
 185.220.x.x         87  DATACENTER    DE       Frantech                YES    100    100
 178.69.x.x          88  RESIDENTIAL   RU       Rostelecom              YES     72     43

By ImAnonFR


Setup

1. Install

pip install -r requirements.txt

2. Fill proxies.txt — these are the proxies the Synthient intel API uses to rotate its own source IP and stay under rate limits. They are not the proxies being tested.

http://user:pass@eu-1.yourprovider.com:8080
http://user:pass@us-1.yourprovider.com:8080
socks5://user:pass@gate.yourprovider.com:1080

Terminal 1 — Start the Synthient intel API

uvicorn synthient.api:app --host 0.0.0.0 --port 8000

The API reads proxies.txt on startup and uses them to enrich exit IPs in the background. Leave this running.


Terminal 2 — Run the bench against your target proxy

python bench_proxy.py --proxy http://user:pass@gate.yourprovider.com:8080

--proxy is the proxy pool you want to test (a single gateway, rotating proxy endpoint, or SOCKS5 tunnel). ProxyScope hammers it with requests, collects every unique exit IP, and enriches each one via the intel API.

Results are saved to a JSON file automatically.


Optional providers

Beyond Synthient, ProxyScope can enrich each exit IP with up to 4 more sources.
All are opt-in — copy .env.example to .env and fill in only the keys you have:

cp .env.example .env
# edit .env — any missing key is silently skipped
Provider Env var(s) Extra fields you get
AbuseIPDB ABUSEIPDB_API_KEY abuse score, is_tor, rDNS hostnames, distinct reporters, last report date
IP-API Pro IPAPI_API_KEY proxy/hosting flag, ASN name, rDNS, org, continent, lat/lon
IPQualityScore IPQS_API_KEY fraud score, VPN/Tor/bot flags
Scamalytics SCAMALYTICS_USERNAME + SCAMALYTICS_API_KEY fraud risk score + label

When providers are active, extra columns appear in the live table and the JSON output gains a structured verdict + sources block per IP:

"verdict": {
  "risk_score": 91,
  "is_proxy":   true,
  "confidence": "confirmed",
  "flags":      ["residential_proxy", "tor", "vpn"],
  "rdns":       "berlin01.tor-exit.artikel10.org",
  "asn":        "TORSERVERS-NET",
  "continent":  "Europe"
},
"sources": {
  "abuseipdb": { "score": 100, "is_tor": true, "distinct_reporters": 85 },
  "ipqs":      { "score": 100, "vpn": true, "tor": true },
  "ipapi":     { "proxy": true, "asn": "TORSERVERS-NET", "rdns": "berlin01.tor-exit..." }
}

You can find a lot of things with a good GitHub search 😉


Common options

# More concurrency + longer test
python bench_proxy.py \
    --proxy http://user:pass@gateway.com:8080 \
    --max-workers 100 \
    --sustained-duration 120

# Match --intel-workers to the number of proxies in proxies.txt
python bench_proxy.py \
    --proxy http://user:pass@gateway.com:8080 \
    --intel-workers 100

# No intel (no API needed)
python bench_proxy.py --proxy http://user:pass@gateway.com:8080 --no-intel

# Save results to a specific file
python bench_proxy.py --proxy ... --output my_audit.json
Flag Default What it does
--proxy Your proxy URL (HTTP or SOCKS5)
--max-workers 40 Concurrent requests
--sustained-duration 30 How long to run the sustained test (seconds)
--intel-workers 50 Parallel IP lookups — set to your proxies.txt count
--no-intel Skip all enrichment
--output auto JSON output file (bench_YYYYMMDD_HHMMSS.json)

Intel API — scaling

The intel API (synthient/) looks up each exit IP via Synthient. It uses proxies.txt to rotate source IPs and stay under rate limits.

More proxies = more throughput. With 100 proxies you get ~100 lookups/s.

All optional providers (AbuseIPDB, IPQS, etc.) are queried in parallel with Synthient — total time per IP = slowest provider, not the sum.

# Higher concurrency on Linux/WSL
SYNTHIENT_THREAD_LIMIT=500 uvicorn synthient.api:app \
    --host 0.0.0.0 --port 8000 --loop uvloop

Check pool health:

curl http://localhost:8000/pool
curl http://localhost:8000/iplookup/8.8.8.8?summary=true

What you get

A live dashboard during the run:

╭──────────────────────── Live Stats ────────────────────────────╮
│ Requests  847/940  90.1%  15.2 req/s  avg 412ms  p95 980ms     │
│ Unique IPs  73      intel pending: 4                            │
│ Extra:  AbuseIPDB, IP-API, IPQS, Scamalytics active            │
╰────────────────────────────────────────────────────────────────╯

A final enriched table per exit IP, then a JSON file with the full breakdown:

{
  "pool_quality": {
    "avg_risk_weighted": 84.2,
    "proxy_confidence": { "confirmed": 312, "likely": 980, "possible": 14, "clean": 2 },
    "top_flags": { "residential_proxy": 1290, "mobile_proxy": 340, "tor": 12 },
    "network_breakdown": { "RESIDENTIAL": 1280, "DATACENTER": 42 }
  }
}

Confidence levels:

  • confirmed — Synthient + at least one other provider agree
  • likely — Synthient alone flags it
  • possible — only optional providers flag it
  • clean — no provider detected a proxy

Requirements

  • Python ≥ 3.12
  • Any HTTP or SOCKS5 proxy endpoint

Node.js ≥ 18 is optional — only needed if you want the gate bearer token (off by default).


Legal

  • This project is for educational and research purposes only
  • The author is not responsible for any misuse of this tool
  • Synthient is a third-party service — respect their rate limits and terms of service
  • Only check proxies you own or have explicit permission to test

Contact

Discord: imanonfr

About

Load-test any HTTP/SOCKS5 proxy pool and get live Synthient intel on every exit IP - risk score, network type, and provider pool membership.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages