https://github.com/jesewe/proxy-checker
This script is designed to check the availability of HTTP, SOCKS4, and SOCKS5 proxies from various online sources.
https://github.com/jesewe/proxy-checker
gui proxy proxy-checker proxy-list pyqt6 python python3
Last synced: 10 days ago
JSON representation
This script is designed to check the availability of HTTP, SOCKS4, and SOCKS5 proxies from various online sources.
- Host: GitHub
- URL: https://github.com/jesewe/proxy-checker
- Owner: Jesewe
- License: mit
- Created: 2024-03-15T12:47:51.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-04-11T14:49:00.000Z (3 months ago)
- Last Synced: 2026-04-11T16:27:27.185Z (3 months ago)
- Topics: gui, proxy, proxy-checker, proxy-list, pyqt6, python, python3
- Language: Python
- Homepage: https://github.com/Jesewe/proxy-checker
- Size: 399 KB
- Stars: 10
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
ProxyChecker
A fast, concurrent proxy checker for HTTP, SOCKS4, and SOCKS5 proxies — with a fully dark, modern GUI.




Overview •
Installation •
Usage •
Configuration •
Troubleshooting
---
## Overview
**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.
---
## Installation
### Prerequisites
- Python 3.8 or later
- `pip`
### Steps
1. Clone the repository:
```bash
git clone https://github.com/Jesewe/proxy-checker.git
cd proxy-checker
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
---
## Usage
### Launching
```bash
python main.py
```
The app opens on the **Settings** tab. Configure your sources and parameters, then click **▶ Start Checking**.
### Workflow
1. **Settings tab** — configure checker parameters, proxy sources, and output directory
2. Click **▶ Start Checking** — the app switches to the Log tab and begins fetching
3. As working proxies are found, the app switches to the **Live Results** tab automatically
4. After checking completes, the enrichment pass fills in anonymity tiers and country data in-place
5. Use **🔍 View Full Results** to open the filterable results dialog, or **💾 Save Log** to export the log
### Controls
| 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 |
---
## Configuration
All settings are persisted automatically between sessions.
### Checker Settings
| 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` |
### Output Directory
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.
### Proxy Sources
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](https://github.com/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` |
---
## Detailed Results Mode
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`, or `transparent` via `httpbin.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.
---
## Troubleshooting
**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.
---
## License
MIT License — see the [LICENSE](LICENSE) file for details.