{"id":26475230,"url":"https://github.com/tor968/proxy-checker","last_synced_at":"2025-10-07T04:24:10.987Z","repository":{"id":282576850,"uuid":"949032561","full_name":"TOR968/Proxy-Checker","owner":"TOR968","description":"A tool for checking proxy server performance and managing proxy files across multiple projects. For suggestions and questions, write in the tg channel","archived":false,"fork":false,"pushed_at":"2025-03-30T23:15:58.000Z","size":76,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-07T03:10:05.523Z","etag":null,"topics":["proxy","test","validation"],"latest_commit_sha":null,"homepage":"https://t.me/tor_dev","language":"JavaScript","has_issues":false,"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/TOR968.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"patreon":"TOR968","custom":["https://support-me-ruby.vercel.app/","https://www.paypal.com/donate/?hosted_button_id=8UDYZWPLN6V3G"]}},"created_at":"2025-03-15T14:21:14.000Z","updated_at":"2025-06-11T12:46:30.000Z","dependencies_parsed_at":"2025-07-07T03:01:35.725Z","dependency_job_id":"d9657992-4de8-4447-980e-35be44d3d2cb","html_url":"https://github.com/TOR968/Proxy-Checker","commit_stats":null,"previous_names":["tor968/proxy-checker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TOR968/Proxy-Checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TOR968%2FProxy-Checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TOR968%2FProxy-Checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TOR968%2FProxy-Checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TOR968%2FProxy-Checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TOR968","download_url":"https://codeload.github.com/TOR968/Proxy-Checker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TOR968%2FProxy-Checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278720022,"owners_count":26034082,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"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":["proxy","test","validation"],"created_at":"2025-03-19T23:16:27.295Z","updated_at":"2025-10-07T04:24:10.982Z","avatar_url":"https://github.com/TOR968.png","language":"JavaScript","funding_links":["https://patreon.com/TOR968","https://support-me-ruby.vercel.app/","https://www.paypal.com/donate/?hosted_button_id=8UDYZWPLN6V3G"],"categories":[],"sub_categories":[],"readme":"# Proxy Checker\n\nA tool for checking proxy server performance and managing proxy files across multiple projects.\n\n## Description\n\nThis program checks the list of proxy servers for functionality and saves working proxies to a separate file. It supports HTTP, HTTPS, SOCKS4 and SOCKS5 proxies with and without authentication. Additionally, it includes functionality to copy working proxies between different projects.\n\n## Project Structure\n\n```\n.\n├── src/\n│   ├── python/\n│   │   ├── proxy_checker.py\n│   │   ├── copy_proxies.py\n│   │   ├── download_proxies.py\n│   │   └── config_editor.py\n│   └── javascript/\n│       ├── proxy_checker.js\n│       ├── copy_proxies.js\n│       ├── download_proxies.js\n│       └── config_editor.js\n├── config/\n│   ├── proxy_config.json\n│   └── config.json\n├── data/\n│   ├── proxy.txt\n│   └── working_proxies.txt\n├── deps/\n│   ├── package.json\n│   ├── package-lock.json\n│   └── requirements.txt\n├── scripts/\n│   ├── run.sh\n│   └── run.bat\n└── docs/\n    ├── README.md\n    └── LICENSE\n```\n\n## Versions\n\nThe program is available in two versions:\n\n-   Python (`src/python/proxy_checker.py`, `src/python/copy_proxies.py`)\n-   JavaScript (`src/javascript/proxy_checker.js`, `src/javascript/copy_proxies.js`)\n\nBoth versions use the same configuration files: `config/config.json` for proxy checking and `config/proxy_config.json` for proxy copying.\n\n## Requirements\n\n### For the Python version:\n\n-   Python 3.7+\n-   Installed packages: aiohttp, aiofiles, aiohttp_socks\n\nInstallation of dependencies:\n\n```bash\npip install aiohttp aiofiles aiohttp_socks requests\n```\n\nor\n\n```bash\npip install -r requirements.txt\n```\n\n### For the JavaScript version:\n\n-   Node.js 18+\n-   Installed packages: node-fetch, https-proxy-agent, socks-proxy-agent\n\nInstallation of dependencies:\n\n```bash\nnpm install\n```\n\n## Performance Optimizations\n\nThe program includes several optimizations for faster proxy checking:\n\n-   Uses HEAD requests instead of GET\n-   Supports up to 50 concurrent checks\n-   Implements timeout control (configurable, 5 seconds by default)\n-   Uses random testing URL from configurable list\n-   Includes detailed status logging for each proxy\n-   Measures proxy response speed and categorizes by performance\n-   Filters proxies based on speed requirements\n-   Implements retry mechanism for potentially working proxies (configurable)\n-   Visual progress bar for better monitoring\n\n## Configuration Settings\n\nDefault configuration (`config/config.json`):\n\n```json\n{\n    \"proxy_url\": \"https://raw.githubusercontent.com/monosans/proxy-list/refs/heads/main/proxies/all.txt\",\n    \"proxy_file\": \"proxy.txt\",\n    \"output_file\": \"working_proxies.txt\",\n    \"test_urls\": [\n        \"https://www.google.com\",\n        \"https://www.cloudflare.com\",\n        \"https://www.microsoft.com\",\n        \"https://www.amazon.com\",\n        \"https://www.github.com\"\n    ],\n    \"timeout\": 5,\n    \"concurrent_checks\": 10,\n    \"save_to_input_file\": true,\n    \"retry_count\": 1,\n    \"speed_filter\": {\n        \"enabled\": false,\n        \"max_speed\": 1000,\n        \"min_speed\": 0\n    }\n}\n```\n\nTo edit the configuration, run:\n\n```bash\npython src/python/config_editor.py\n```\n\nor for the JavaScript version:\n\n```bash\nnode src/javascript/config_editor.js\n```\n\n## Usage\n\n### Quick Start\n\nFor easy startup, you can use the run scripts:\n\n#### Windows\n\n```bash\nrun.bat\n```\n\nor just double-click on `run.bat`\n\n#### Linux/MacOS\n\n```bash\nchmod +x run.sh  # Only needed first time\n./run.sh\n```\n\n#### Using npm scripts (JavaScript version only)\n\nIf you prefer using npm scripts, you can use the following commands:\n\n```bash\ncd deps\nnpm install\nnpm run start    # Run proxy checker\nnpm run config   # Edit configuration\nnpm run download # Download proxies\nnpm run copy     # Copy proxies between projects\n```\n\nThese scripts will:\n\n1. Ask you to choose between Python and JavaScript versions\n2. Install all necessary dependencies\n3. Run the selected version of the program\n\n### Preparation of the proxy file\n\nCreate a file `proxy.txt` (or specify another file in the configuration) with proxies. The following formats are supported:\n\n1. With protocol and authentication:\n\n```\nhttp://username:password@ip:port\nhttps://username:password@ip:port\nsocks4://username:password@ip:port\nsocks5://username:password@ip:port\n```\n\n2. Without protocol, but with authentication:\n\n```\nusername:password@ip:port\n```\n\n3. In the format IP:PORT:USERNAME:PASSWORD:\n\n```\nip:port:username:password\n```\n\n4. Standard format without authentication:\n\n```\nhttp://ip:port\nhttps://ip:port\nsocks4://ip:port\nsocks5://ip:port\n```\n\n### Configuration settings\n\nTo edit the configuration, run:\n\n```bash\npython src/python/config_editor.py\n```\n\nor for the JavaScript version:\n\n```bash\nnode src/javascript/config_editor.js\n```\n\n### Manual Start\n\nTo run the proxy check manually, execute:\n\n```bash\npython src/python/proxy_checker.py\n```\n\nor for the JavaScript version:\n\n```bash\nnode src/javascript/proxy_checker.js\n```\n\nYou can also specify the path to the configuration file:\n\n```bash\npython src/python/proxy_checker.py -c config/my_config.json\n```\n\nor\n\n```bash\nnode src/javascript/proxy_checker.js -c config/my_config.json\n```\n\n## Output and Status Indicators\n\nThe program uses the following indicators:\n\n-   Working: `proxy_url | Speed: Xms (fast/medium/slow) | Success: X%`\n-   Failed: Proxy is not working\n-   Timeout: Proxy did not respond in time\n-   Filtered: Proxy speed is outside configured range\n-   Retry: Proxy will be retried once\n-   Visual progress bar showing completion percentage\n\n### Speed Categories\n\nProxies are automatically categorized by speed:\n- Fast: \u003c 500ms\n- Medium: 500ms - 1000ms\n- Slow: \u003e 1000ms\n\n### Output Files\n\nThe program generates two output files:\n1. A text file with proxy strings (e.g., `working_proxies.txt`)\n2. A JSON file with detailed information about each proxy including speed, success rate, and category (e.g., `working_proxies.json`)\n\n## Retry Mechanism\n\nYou can configure how many times failed proxies should be retried using the `retry_count` parameter:\n\n```json\n\"retry_count\": 2\n```\n\nSetting this to:\n- `0`: No retries, proxies that fail once are discarded\n- `1`: Retry once (default)\n- `2` or higher: Retry multiple times before discarding\n\nThis is useful for proxies that may fail due to temporary network issues.\n\n## Speed Filtering\n\nYou can filter proxies based on their response speed by configuring the speed filter:\n\n```json\n\"speed_filter\": {\n    \"enabled\": true,\n    \"max_speed\": 800,\n    \"min_speed\": 0\n}\n```\n\n- `enabled`: Whether to filter by speed (true/false)\n- `max_speed`: Maximum acceptable speed in milliseconds\n- `min_speed`: Minimum acceptable speed in milliseconds\n\nFor example, to keep only fast proxies, set `max_speed` to 500.\n\n## Project structure\n\n-   `proxy_checker.py` - main script for checking proxies (Python version)\n-   `proxy_checker.js` - main script for checking proxies (JavaScript version)\n-   `copy_proxies.py` - script for copying proxies between projects (Python version)\n-   `copy_proxies.js` - script for copying proxies between projects (JavaScript version)\n-   `config_editor.py` - utility for editing the configuration (Python version)\n-   `config_editor.js` - utility for editing the configuration (JavaScript version)\n-   `config.json` - configuration file for proxy checking\n-   `proxy_config.json` - configuration file for proxy copying\n-   `proxy.txt` - file with proxies for checking\n-   `working_proxies.txt` - file with working proxies (result of the program)\n-   `requirements.txt` - file with dependencies for Python version\n-   `package.json` - file with dependencies for JavaScript version\n-   `run.bat` - startup script for Windows\n-   `run.sh` - startup script for Linux/MacOS\n\n## Proxy Copying Feature\n\nThe program includes functionality to copy proxy files between different projects. This is useful when you need to maintain the same proxy list across multiple projects.\n\n### Configuration\n\nCreate a `proxy_config.json` file with the following structure:\n\n```json\n{\n    \"source_proxy\": \"path/to/source/proxy/file\",\n    \"project_paths\": [\"path/to/project1/proxy.txt\", \"path/to/project2/proxy.txt\", \"path/to/project3/proxy.txt\"]\n}\n```\n\n### Usage\n\nTo copy proxies between projects, run:\n\n```bash\npython src/python/copy_proxies.py\n```\n\nor for the JavaScript version:\n\n```bash\nnode src/javascript/copy_proxies.js\n```\n\nThe script will:\n\n1. Read the configuration from `proxy_config.json`\n2. Check if the source proxy file exists\n3. Copy the file to all specified project paths\n4. Skip any non-existent paths\n5. Provide detailed logging of the copying process\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftor968%2Fproxy-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftor968%2Fproxy-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftor968%2Fproxy-checker/lists"}