Releases: Jesewe/proxy-checker
ProxyChecker v2.0.0
Summary
Breaking Changes
- Entry point changed from
proxy-checker.pytomain.py - Project must now be run from the repository root:
python main.py - Output directory defaults to
~/Documents/proxy-checkerinstead of aproxies/folder relative to the working directory - Settings are no longer read from the UI on each run - they are persisted via
QSettingsand restored automatically
Architecture
- Modular split - rewrote the single-file 500-line monolith into focused modules:
core/checker.py,core/fetcher.py,core/geo.py,core/exporter.py,worker.py, and thegui/package CheckerConfigdataclass - all checker parameters are now held in a single dataclass passed through the stack; adding a new setting no longer requires changes in three separate places- No I/O in constructors -
ProxyChecker.__init__no longer makes network calls; client IP detection runs in the worker thread viaprepare()
Correctness Fixes
- Race condition on progress counter -
overall_processed_countwas incremented from multiple threads without a lock; now guarded bythreading.Lock - CPU-burning pause - the previous
while pause_event.is_set(): time.sleep(0.1)spin loop ran inside every worker thread for the entire duration of a pause; replaced withthreading.Event.wait()(zero CPU overhead) - Cancel while paused deadlock - cancelling a paused run now correctly unblocks all waiting threads before stopping
- Anonymity logic reversed - the original implementation classified a proxy as transparent when
proxy_ip == client_ip, which is the opposite of the correct definition; fixed - Socket leak - each
check_proxycall created arequests.Session(which allocates a connection pool) that was never closed; replaced with directrequests.getwith per-call proxy kwargs
Performance
- Parallel source fetching - all proxy list URLs are fetched concurrently via
ThreadPoolExecutor; previously fetched serially, blocking the start of checking until all sources responded - Two-pass enrichment - geo and anonymity lookups were previously performed inside the hot checking loop, blocking a thread slot for each working proxy; they now run as a dedicated post-checking phase
- Concurrent anonymity checks - the enrichment pass uses its own bounded thread pool (capped at 20) instead of processing proxies serially
- Batched geo API - geo lookups now use
ip-api.com/batch(up to 100 IPs per request) with automatic rate limiting; the previous implementation made one HTTP request per proxy
Anonymity Detection
- Upgraded from binary transparent/anonymous classification to three tiers:
elite,anonymous,transparent - Detection now inspects actual request headers via
httpbin.org/getrather than comparing origin IPs, which is more reliable and handles edge cases correctly
GUI
- Full dark theme - Fusion palette and comprehensive QSS stylesheet applied to the entire application; the previous version only styled the log text area
- Live stat cards - five real-time counters: Total Fetched, Checked, Working, Success %, Avg RTT
- Tabbed layout - Settings, Live Results, and Log in separate tabs instead of a single stacked layout
- Live results table - working proxies appear row-by-row during the checking phase; anonymity and country columns update in-place after enrichment without duplicating rows
- Dynamic proxy sources - sources are managed in an editable table; rows can be added or removed at runtime
- Persistent settings - all configuration is saved via
QSettingsand restored on next launch; no more reconfiguring after every restart - Output directory picker - dedicated field with a folder browser; defaults to
~/Documents/proxy-checker - Non-blocking update check - update notifications appear as a status bar banner instead of a blocking modal dialog on startup
- Copy proxies button - one-click copy of all working proxies from the live results tab
ProxyChecker v1.3.0
Summary
-
Automatic Update Check: Update detection runs automatically after startup.
-
Pause/Resume: Users can now pause and resume the proxy-checking process via a dedicated button.
-
Custom User-Agent: A new option to specify a custom User-Agent for all HTTP requests.
-
History Logging: Summary statistics are logged to a
history.logfile after each run.
ProxyChecker v1.2.9
Summary
-
GUI-Only Version: Removed all command-line interface (CLI) functionality. The application now launches directly into the PyQt6 graphical user interface.
-
Anonymity Detection: Added functionality to determine whether a proxy is transparent (revealing the client’s IP) or anonymous.
-
Geo-Location Lookup: Integrated geo-location data retrieval using the ip-api.com API to display country, region, and city details for each working proxy.
ProxyChecker v1.2.8
Summary
- A new "Check for Update" button has been added.
- In GUI mode, check the "Detailed Results" box to record response times. Then choose the export format ("txt" or "csv") from the combo box. In console mode, use
--detailedand--export-formataccordingly. - After a run, you can click "Show Statistics" to view a summary or "Save Log" to store the log output.
ProxyChecker v1.2.7
New Features:
- Overall Progress Bar: Added a progress bar in the GUI to display the overall progress of proxy checking.
- Custom Test URL: Users can now specify a custom URL for testing proxies.
- Show Results Dialog: After completion, a dialog displays the working proxies saved in the output directory.
Improvements:
- Improved code structure with enhanced inline documentation and refactoring for clarity.
- Enhanced error handling and logging for better troubleshooting.
- Optimized multi-threading performance and resource management.
Bug Fixes:
- Resolved issues related to proxy cancellation during processing.
- Fixed minor UI glitches in the PyQt6 interface.
- Corrected errors in file output handling to ensure reliable saving of working proxies.
ProxyChecker v1.2.6
New Features
- GUI Cancellation: Implemented a real cancellation mechanism in the GUI, allowing users to stop the proxy checking process on demand.
- Command-Line Interface (CLI) Enhancements: Added CLI arguments for running the tool in console mode, giving users the flexibility to set timeouts, retry counts, and more directly from the command line.
Improvements
- Enhanced Logging: Refined logging functionality with a unified callback approach, making it easier to track progress both in the console and within the GUI.
- Code Structure: Streamlined the code for better readability and maintainability by clearly separating GUI components, worker threads, and backend logic.
- Retry Logic: Optimized the retry mechanism for fetching proxy lists to provide better handling of network issues.
Bug Fixes
- Cancellation Handling: Fixed issues where cancellation requests were not properly interrupting ongoing proxy checks, ensuring the process stops as expected.
- Concurrency Issues: Resolved race conditions in the multi-threaded proxy checking process, resulting in more stable and reliable performance.
- File Writing Errors: Addressed edge cases in saving working proxies to file, preventing errors when the output directory does not exist.
Proxy Checker v1.2.5
This release improves the overall stability, reliability, and traceability of the proxy-checking process, especially under unstable network conditions:
- Logging integration for detailed tracking of each process with log levels (INFO, WARNING, ERROR).
- Retry functionality for fetching proxy lists, allowing configurable retries and delay to improve reliability.
- Optimized concurrent checking and session management, enhancing efficiency and control.
- Modularized the code with a
ProxyCheckerclass, making it more readable and easier to extend. - Added error handling for file writing operations and structured logging outputs.
Full Changelog: v1.2.4...v1.2.5
Proxy Checker v1.2.4
- Fetches proxy lists from specified URLs for HTTP, SOCKS4, and SOCKS5 proxies.
- Uses multithreading to efficiently check the availability of proxies.
- Saves working proxies into separate files based on their type.
- Includes configurable parameters for timeout and number of threads.
- Displays progress and results in the terminal.
Full Changelog: v1.2.3...v1.2.4
Proxy Checker v1.2.3
We're excited to announce the release of Proxy Checker v1.2.3! This update brings several improvements and fixes:
- Enhanced Reliability: The script now includes error handling mechanisms to ensure continued operation even if encountering unexpected issues while creating directories or writing to files. This improves the script's robustness.
- Improved Code Structure: Minor code formatting and organization changes have been made to enhance code readability and maintainability.
Proxy Checker v1.2.2
We're excited to announce the release of Proxy Checker v1.2.2! This update brings several improvements and fixes:
- This release includes optimizations for proxy checking concurrency, specifically by increasing the
max_workersparameter in theThreadPoolExecutorto 500. It aims to enhance the efficiency and speed of the proxy checking process.