{"id":23226367,"url":"https://github.com/jesewe/proxy-checker","last_synced_at":"2026-06-15T21:31:42.885Z","repository":{"id":227856341,"uuid":"772562665","full_name":"Jesewe/proxy-checker","owner":"Jesewe","description":"This script is designed to check the availability of HTTP, SOCKS4, and SOCKS5 proxies from various online sources.","archived":false,"fork":false,"pushed_at":"2026-04-11T14:49:00.000Z","size":409,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-11T16:27:27.185Z","etag":null,"topics":["gui","proxy","proxy-checker","proxy-list","pyqt6","python","python3"],"latest_commit_sha":null,"homepage":"https://github.com/Jesewe/proxy-checker","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jesewe.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-15T12:47:51.000Z","updated_at":"2026-04-11T14:45:12.000Z","dependencies_parsed_at":"2024-03-15T14:05:09.768Z","dependency_job_id":"1ec5e842-76cc-4111-affe-f019258912ee","html_url":"https://github.com/Jesewe/proxy-checker","commit_stats":null,"previous_names":["jesewe/proxy-checker"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/Jesewe/proxy-checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jesewe%2Fproxy-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jesewe%2Fproxy-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jesewe%2Fproxy-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jesewe%2Fproxy-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jesewe","download_url":"https://codeload.github.com/Jesewe/proxy-checker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jesewe%2Fproxy-checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34381759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","proxy","proxy-checker","proxy-list","pyqt6","python","python3"],"created_at":"2024-12-19T00:17:21.481Z","updated_at":"2026-06-15T21:31:42.879Z","avatar_url":"https://github.com/Jesewe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n   \u003cimg src=\"src/img/icon.png\" alt=\"ProxyChecker\" width=\"200\" height=\"200\"\u003e\r\n   \u003ch1\u003eProxyChecker\u003c/h1\u003e\r\n   \u003cp\u003eA fast, concurrent proxy checker for HTTP, SOCKS4, and SOCKS5 proxies — with a fully dark, modern GUI.\u003c/p\u003e\r\n\r\n![Downloads](https://img.shields.io/github/downloads/jesewe/proxy-checker/total?style=for-the-badge\u0026logo=github\u0026color=D5006D)\r\n![Platforms](https://img.shields.io/badge/platform-Windows-blue?style=for-the-badge\u0026logo=windows\u0026color=D5006D)\r\n![License](https://img.shields.io/github/license/jesewe/proxy-checker?style=for-the-badge\u0026color=D5006D)\r\n![Version](https://img.shields.io/badge/version-2.0.0-informational?style=for-the-badge\u0026color=D5006D)\r\n\r\n\u003ca href=\"#overview\"\u003e\u003cstrong\u003eOverview\u003c/strong\u003e\u003c/a\u003e •\r\n\u003ca href=\"#installation\"\u003e\u003cstrong\u003eInstallation\u003c/strong\u003e\u003c/a\u003e •\r\n\u003ca href=\"#usage\"\u003e\u003cstrong\u003eUsage\u003c/strong\u003e\u003c/a\u003e •\r\n\u003ca href=\"#configuration\"\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/a\u003e •\r\n\u003ca href=\"#troubleshooting\"\u003e\u003cstrong\u003eTroubleshooting\u003c/strong\u003e\u003c/a\u003e\r\n\r\n\u003c/div\u003e\r\n\r\n---\r\n\r\n## Overview\r\n\r\n**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.\r\n\r\n---\r\n\r\n## Installation\r\n\r\n### Prerequisites\r\n\r\n- Python 3.8 or later\r\n- `pip`\r\n\r\n### Steps\r\n\r\n1. Clone the repository:\r\n\r\n   ```bash\r\n   git clone https://github.com/Jesewe/proxy-checker.git\r\n   cd proxy-checker\r\n   ```\r\n\r\n2. Install dependencies:\r\n   ```bash\r\n   pip install -r requirements.txt\r\n   ```\r\n\r\n---\r\n\r\n## Usage\r\n\r\n### Launching\r\n\r\n```bash\r\npython main.py\r\n```\r\n\r\nThe app opens on the **Settings** tab. Configure your sources and parameters, then click **▶ Start Checking**.\r\n\r\n### Workflow\r\n\r\n1. **Settings tab** — configure checker parameters, proxy sources, and output directory\r\n2. Click **▶ Start Checking** — the app switches to the Log tab and begins fetching\r\n3. As working proxies are found, the app switches to the **Live Results** tab automatically\r\n4. After checking completes, the enrichment pass fills in anonymity tiers and country data in-place\r\n5. Use **🔍 View Full Results** to open the filterable results dialog, or **💾 Save Log** to export the log\r\n\r\n### Controls\r\n\r\n| Button                   | Action                                                         |\r\n| ------------------------ | -------------------------------------------------------------- |\r\n| **▶ Start Checking**     | Begin the full fetch → check → enrich → export pipeline        |\r\n| **⏸ Pause / ▶ Resume**   | Suspend or continue checking with zero CPU overhead            |\r\n| **✕ Cancel**             | Stop all threads and abort gracefully                          |\r\n| **🔍 View Full Results** | Open filterable results dialog (available after run completes) |\r\n| **💾 Save Log**          | Save the log output to a text file                             |\r\n\r\n---\r\n\r\n## Configuration\r\n\r\nAll settings are persisted automatically between sessions.\r\n\r\n### Checker Settings\r\n\r\n| Setting          | Description                                            | Default                 |\r\n| ---------------- | ------------------------------------------------------ | ----------------------- |\r\n| Timeout (s)      | Per-request timeout                                    | 3                       |\r\n| Max Retries      | Retry attempts for failed source fetches               | 3                       |\r\n| Retry Delay (s)  | Delay between retry attempts                           | 1.0                     |\r\n| Max Workers      | Concurrent checking threads                            | 50                      |\r\n| Test URL         | URL used to verify each proxy                          | `http://www.google.com` |\r\n| User-Agent       | Custom User-Agent header (optional)                    | —                       |\r\n| Detailed Results | Enable response time, anonymity tier, and geo-location | Off                     |\r\n| Export Format    | Output file format: `txt`, `csv`, or `json`            | `txt`                   |\r\n\r\n### Output Directory\r\n\r\nWorking 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.\r\n\r\n### Proxy Sources\r\n\r\nThe 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.\r\n\r\nDefault sources (from [TheSpeedX/PROXY-List](https://github.com/TheSpeedX/PROXY-List)):\r\n\r\n| Type   | URL                                                                        |\r\n| ------ | -------------------------------------------------------------------------- |\r\n| http   | `https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt`   |\r\n| socks4 | `https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks4.txt` |\r\n| socks5 | `https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks5.txt` |\r\n\r\n---\r\n\r\n## Detailed Results Mode\r\n\r\nWhen **Detailed Results** is enabled, each confirmed working proxy goes through a second enrichment pass:\r\n\r\n- **Response time** — measured during the checking phase (millisecond precision)\r\n- **Anonymity tier** — classified as `elite`, `anonymous`, or `transparent` via `httpbin.org/get`\r\n- **Geo-location** — country, region, and city fetched via `ip-api.com/batch` (rate-limited automatically)\r\n\r\nEnrichment runs concurrently after the main checking pass and updates the live results table in-place as each proxy is processed.\r\n\r\nThe **View Full Results** dialog supports filtering by maximum response time and exporting the filtered table to CSV.\r\n\r\n---\r\n\r\n## Troubleshooting\r\n\r\n**Many connection errors / low working count**\r\nReduce Max Workers or increase Timeout. Some proxy sources have high churn; try re-running shortly after.\r\n\r\n**Geo-location shows empty for many proxies**\r\n`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.\r\n\r\n**Anonymity detection shows \"unknown\"**\r\n`httpbin.org` may be blocked or rate-limiting. The checker treats failed anonymity lookups as `unknown` and continues — it does not block the export.\r\n\r\n**App starts slowly**\r\nClient IP detection runs in the worker thread and does not block the UI. If startup feels slow, check your network connection.\r\n\r\n**Output directory permission error**\r\nChoose a directory your user account has write access to, or run with appropriate permissions.\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT License — see the [LICENSE](LICENSE) file for details.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesewe%2Fproxy-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjesewe%2Fproxy-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjesewe%2Fproxy-checker/lists"}