A fast, concurrent proxy checker for HTTP, SOCKS4, and SOCKS5 proxies — with a fully dark, modern GUI.
Overview • Installation • Usage • Configuration • Troubleshooting
ProxyChecker verifies HTTP, SOCKS4, and SOCKS5 proxy lists by sending concurrent test requests. v2.0 is a ground-up rewrite: the codebase is split into focused modules, a thread-safe concurrency model replaces the original fragile implementation, and the GUI is fully rebuilt with a dark theme, live results table, and persistent settings.
- Python 3.8 or later
pip
-
Clone the repository:
git clone https://github.com/Jesewe/proxy-checker.git cd proxy-checker -
Install dependencies:
pip install -r requirements.txt
python main.pyThe app opens on the Settings tab. Configure your sources and parameters, then click ▶ Start Checking.
- Settings tab — configure checker parameters, proxy sources, and output directory
- Click ▶ Start Checking — the app switches to the Log tab and begins fetching
- As working proxies are found, the app switches to the Live Results tab automatically
- After checking completes, the enrichment pass fills in anonymity tiers and country data in-place
- Use 🔍 View Full Results to open the filterable results dialog, or 💾 Save Log to export the log
| Button | Action |
|---|---|
| ▶ Start Checking | Begin the full fetch → check → enrich → export pipeline |
| ⏸ Pause / ▶ Resume | Suspend or continue checking with zero CPU overhead |
| ✕ Cancel | Stop all threads and abort gracefully |
| 🔍 View Full Results | Open filterable results dialog (available after run completes) |
| 💾 Save Log | Save the log output to a text file |
All settings are persisted automatically between sessions.
| Setting | Description | Default |
|---|---|---|
| Timeout (s) | Per-request timeout | 3 |
| Max Retries | Retry attempts for failed source fetches | 3 |
| Retry Delay (s) | Delay between retry attempts | 1.0 |
| Max Workers | Concurrent checking threads | 50 |
| Test URL | URL used to verify each proxy | http://www.google.com |
| User-Agent | Custom User-Agent header (optional) | — |
| Detailed Results | Enable response time, anonymity tier, and geo-location | Off |
| Export Format | Output file format: txt, csv, or json |
txt |
Working proxies are saved to the chosen output directory (default: ~/Documents/proxy-checker). One file is created per proxy type (e.g. http.txt, socks4.csv). A history.log is appended after each run.
The sources table lists the proxy list URLs to fetch. Each row has an enable/disable checkbox, a type label (used as the output filename), and a URL. Rows can be added or removed at runtime.
Default sources (from TheSpeedX/PROXY-List):
| Type | URL |
|---|---|
| http | https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt |
| socks4 | https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks4.txt |
| socks5 | https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks5.txt |
When Detailed Results is enabled, each confirmed working proxy goes through a second enrichment pass:
- Response time — measured during the checking phase (millisecond precision)
- Anonymity tier — classified as
elite,anonymous, ortransparentviahttpbin.org/get - Geo-location — country, region, and city fetched via
ip-api.com/batch(rate-limited automatically)
Enrichment runs concurrently after the main checking pass and updates the live results table in-place as each proxy is processed.
The View Full Results dialog supports filtering by maximum response time and exporting the filtered table to CSV.
Many connection errors / low working count Reduce Max Workers or increase Timeout. Some proxy sources have high churn; try re-running shortly after.
Geo-location shows empty for many proxies
ip-api.com has a free-tier rate limit of 45 requests/minute. The built-in rate limiter handles this automatically, but very large working sets will take longer to enrich.
Anonymity detection shows "unknown"
httpbin.org may be blocked or rate-limiting. The checker treats failed anonymity lookups as unknown and continues — it does not block the export.
App starts slowly Client IP detection runs in the worker thread and does not block the UI. If startup feels slow, check your network connection.
Output directory permission error Choose a directory your user account has write access to, or run with appropriate permissions.
MIT License — see the LICENSE file for details.