Skip to content

Releases: Jesewe/proxy-checker

ProxyChecker v2.0.0

11 Apr 14:49
bbed905

Choose a tag to compare

Summary

Downloads Platforms License

Breaking Changes

  • Entry point changed from proxy-checker.py to main.py
  • Project must now be run from the repository root: python main.py
  • Output directory defaults to ~/Documents/proxy-checker instead of a proxies/ folder relative to the working directory
  • Settings are no longer read from the UI on each run - they are persisted via QSettings and 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 the gui/ package
  • CheckerConfig dataclass - 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 via prepare()

Correctness Fixes

  • Race condition on progress counter - overall_processed_count was incremented from multiple threads without a lock; now guarded by threading.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 with threading.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_proxy call created a requests.Session (which allocates a connection pool) that was never closed; replaced with direct requests.get with 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/get rather 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 QSettings and 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

15 Mar 10:17
c2cc953

Choose a tag to compare

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.log file after each run.

Downloads Platforms License

ProxyChecker v1.2.9

14 Mar 14:55
53d2a98

Choose a tag to compare

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.

Downloads Platforms License

ProxyChecker v1.2.8

25 Feb 12:47
f5fa642

Choose a tag to compare

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 --detailed and --export-format accordingly.
  • After a run, you can click "Show Statistics" to view a summary or "Save Log" to store the log output.

Downloads Platforms License

ProxyChecker v1.2.7

07 Feb 06:03
53054f1

Choose a tag to compare

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.

Downloads Platforms License

ProxyChecker v1.2.6

02 Feb 17:08
6d06af5

Choose a tag to compare

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

25 Oct 16:12
cfdc7be

Choose a tag to compare

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 ProxyChecker class, 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

18 May 09:26
19f1187

Choose a tag to compare

  • 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

13 Apr 14:18
2a5ca4a

Choose a tag to compare

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

25 Mar 11:43
76e635b

Choose a tag to compare

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_workers parameter in the ThreadPoolExecutor to 500. It aims to enhance the efficiency and speed of the proxy checking process.