Scrapes a list of DNS-over-HTTPS (DoH) providers from curl's DNS-over-HTTPS wiki and tests each one against a set of domains, ranking them by success count and average response time.
python3 doh_scanner.py| Flag | Default | Description |
|---|---|---|
--timeout N |
5 |
Socket timeout per query (seconds) |
--parallel N |
20 |
Providers to test simultaneously |
Edit the variables at the top of the script:
DOMAINS = ["x.com", "youtube.com", "reddit.com", "discord.com", "gemini.google.com", "kimi.com"]
DOH_TIMEOUT = 5 # seconds per query
PARALLEL = 20 # providers tested at once- Scrape — Fetches the DoH provider list from curl's GitHub wiki
- Deduplicate — Removes duplicate URLs
- Test — For each provider, resolves all domains sequentially using daemon threads with a hard timeout (DNS resolution, TCP, TLS, and HTTP all bounded)
- Rank — Filters out providers with 0 successes, then sorts by success count (descending) then average ping (ascending)
- Python 3.x
- No external dependencies — uses only the standard library (
urllib,json,threading,concurrent.futures)
MIT