proxy-scraper-cli 1.25.0__tar.gz → 1.26.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/PKG-INFO +50 -46
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/README.md +47 -45
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/PKG-INFO +50 -46
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/SOURCES.txt +8 -1
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/requires.txt +2 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/__init__.py +1 -1
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/app.py +11 -4
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/mirror.py +2 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/parsing.py +29 -4
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/pyproject.toml +1 -1
- proxy_scraper_cli-1.26.0/tests/test_citation.py +23 -0
- proxy_scraper_cli-1.26.0/tests/test_colon_logins.py +86 -0
- proxy_scraper_cli-1.26.0/tests/test_hf_card.py +18 -0
- proxy_scraper_cli-1.26.0/tests/test_hf_parquet.py +98 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_mirror.py +8 -0
- proxy_scraper_cli-1.26.0/tests/test_pypi_readme.py +129 -0
- proxy_scraper_cli-1.26.0/tests/test_workflow_permissions.py +42 -0
- proxy_scraper_cli-1.26.0/tests/test_workflow_pins.py +34 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/LICENSE +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/dependency_links.txt +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/entry_points.txt +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxy_scraper_cli.egg-info/top_level.txt +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/__main__.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/action.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/agent.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/api.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/asndb.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/blocklist.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/charts.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/checker.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/cli.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/compat.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/completion.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/exporters.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/fetchcache.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/geo.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/geodb.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/handshake.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/history.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/judges.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/mcp_entry.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/mcp_server.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/netio.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/options.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/output.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/pages.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/paths.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/pipeline.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/preferences.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/proxypages.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/publish.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ranking.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/report.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/runsteps.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/__init__.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/api.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/core.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/dashboard.html +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/http.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/pool.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/socks.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/status.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/server/upstream.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/site/apple-touch-icon.png +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/site/googleaac1161b7853c5b5.html +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/site/index.html +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/site/logo.png +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/site/og.png +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/sites.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/sources.json +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/sources.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/speed.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/targets.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/__init__.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/dashboard.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/keys.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/report.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/serve.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/widgets.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/proxyscraper/ui/wizard.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/setup.cfg +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_action.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_agent.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_api.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_app.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_asndb.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_auth.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_blocklist.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_charts.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_checker.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_compat.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_completion.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_discovery_growth.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_exporters.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_fetchcache.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_geodb.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_judges.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_learning.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_live_api.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_mcp_server.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_mine_sources.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_options.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_output_stdout.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_own_sources.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_pac.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_packaging.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_pages.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_parsing.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_parsing_fuzz.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_paths.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_pick.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_pipeline.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_preferences.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_proxy_pages.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_proxy_sources.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_publish.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_recheck_stdin.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_report.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_robustness.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_rotator.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_serve_api.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_serve_dashboard.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_serve_password.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_serve_refill.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_serve_v2.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_server.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_server_closed_writer.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_server_fixes.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_sites.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_sources_json.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_speed.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_speed_ranking.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_survival_ranking.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_tamper.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_targets.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_ui.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_uptime.py +0 -0
- {proxy_scraper_cli-1.25.0 → proxy_scraper_cli-1.26.0}/tests/test_wizard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proxy-scraper-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.26.0
|
|
4
4
|
Summary: Finds free HTTP, SOCKS4 and SOCKS5 proxies that actually work: 700+ sources, real checks, honeypot filtering and a rotating local proxy server.
|
|
5
5
|
Author: Maximilian Feix
|
|
6
6
|
License-Expression: MIT
|
|
@@ -37,15 +37,17 @@ Requires-Dist: mcp<3,>=2.2; python_version >= "3.10" and extra == "mcp"
|
|
|
37
37
|
Provides-Extra: dev
|
|
38
38
|
Requires-Dist: pytest; extra == "dev"
|
|
39
39
|
Requires-Dist: hypothesis; extra == "dev"
|
|
40
|
+
Requires-Dist: pyyaml; extra == "dev"
|
|
41
|
+
Requires-Dist: markdown-it-py; extra == "dev"
|
|
40
42
|
Requires-Dist: ruff==0.16.9; extra == "dev"
|
|
41
43
|
Dynamic: license-file
|
|
42
44
|
|
|
43
45
|
<div align="center">
|
|
44
46
|
|
|
45
47
|
<picture>
|
|
46
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/banner-dark.svg">
|
|
47
|
-
<source media="(prefers-color-scheme: light)" srcset="docs/banner-light.svg">
|
|
48
|
-
<img src="docs/banner-dark.svg" alt="proxy-scraper – free proxies that actually work" width="100%">
|
|
48
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/banner-dark.svg">
|
|
49
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/banner-light.svg">
|
|
50
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/banner-dark.svg" alt="proxy-scraper – free proxies that actually work" width="100%">
|
|
49
51
|
</picture>
|
|
50
52
|
|
|
51
53
|
[](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/tests.yml)
|
|
@@ -53,18 +55,18 @@ Dynamic: license-file
|
|
|
53
55
|
[](#live-list)
|
|
54
56
|
[](https://pypi.org/project/proxy-scraper-cli/)
|
|
55
57
|
[](https://pepy.tech/projects/proxy-scraper-cli)
|
|
56
|
-
[](pyproject.toml)
|
|
58
|
+
[](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/pyproject.toml)
|
|
57
59
|
[](https://github.com/maximilianfeix/proxy-scraper/stargazers)
|
|
58
|
-
[](LICENSE)
|
|
60
|
+
[](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/LICENSE)
|
|
59
61
|
|
|
60
62
|
<a href="https://maximilianfeix.github.io/proxy-scraper/"><img src="https://img.shields.io/badge/Browse_the_live_list-D4F77A?style=for-the-badge&labelColor=121113" alt="Browse the live list"></a>
|
|
61
63
|
<a href="https://github.com/maximilianfeix/free-proxy-list"><img src="https://img.shields.io/badge/Just_the_lists-121113?style=for-the-badge" alt="Just the lists: free-proxy-list"></a>
|
|
62
64
|
<a href="#install"><img src="https://img.shields.io/badge/Install-121113?style=for-the-badge" alt="Install"></a>
|
|
63
65
|
<a href="#from-python"><img src="https://img.shields.io/badge/Python_API-121113?style=for-the-badge" alt="Python API"></a>
|
|
64
66
|
<a href="#mcp"><img src="https://img.shields.io/badge/MCP_server-121113?style=for-the-badge" alt="MCP server for AI agents"></a>
|
|
65
|
-
<a href="bot/"><img src="https://img.shields.io/badge/Discord_bot-121113?style=for-the-badge" alt="Discord bot"></a>
|
|
67
|
+
<a href="https://github.com/maximilianfeix/proxy-scraper/tree/v1.26.0/bot/"><img src="https://img.shields.io/badge/Discord_bot-121113?style=for-the-badge" alt="Discord bot"></a>
|
|
66
68
|
|
|
67
|
-
**English** · [简体中文](README.zh-CN.md)
|
|
69
|
+
**English** · [简体中文](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/README.zh-CN.md)
|
|
68
70
|
|
|
69
71
|
[Install](#install) · [Live list](#live-list) · [For AI agents](#mcp) · [Proxy server](#proxy-server) · [How it works](#how-it-works) · [Recipes](#recipes) · [Options](#options) · [FAQ](#faq)
|
|
70
72
|
|
|
@@ -74,7 +76,9 @@ Dynamic: license-file
|
|
|
74
76
|
|
|
75
77
|
Most free proxy lists are 95 % dead, and a good part of the rest are honeypots or proxies that inject scripts into your pages. **proxy-scraper** collects public HTTP, SOCKS4 and SOCKS5 proxies from 700+ sources and keeps only the ones that pass every check. It learns with every run which sources are worth it, and it can turn the result into a single rotating proxy.
|
|
76
78
|
|
|
77
|
-
**In numbers:** in one day it checked 3.6 million free proxies – 1.1 % worked, and more than half of the ones that answered failed a second request. [What's actually out there →](docs/free-proxies-in-numbers.md)
|
|
79
|
+
**In numbers:** in one day it checked 3.6 million free proxies – 1.1 % worked, and more than half of the ones that answered failed a second request. [What's actually out there →](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/docs/free-proxies-in-numbers.md)
|
|
80
|
+
|
|
81
|
+
**Used by:** the hourly list is a built-in source of [monosans/proxy-scraper-checker](https://github.com/monosans/proxy-scraper-checker) and [gfpcom/free-proxy-list](https://github.com/gfpcom/free-proxy-list).
|
|
78
82
|
|
|
79
83
|
**Try it – no install, about five seconds:**
|
|
80
84
|
|
|
@@ -88,7 +92,7 @@ curl -s https://maximilianfeix.github.io/proxy-scraper/socks5.txt | head
|
|
|
88
92
|
`uvx` comes with [uv](https://docs.astral.sh/uv/); `pipx run proxy-scraper-cli --pick 5` does the same.
|
|
89
93
|
|
|
90
94
|
<div align="center">
|
|
91
|
-
<img src="docs/demo.svg" alt="Animated demo: the live dashboard during a check, the report, the setup wizard and collecting" width="880">
|
|
95
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/demo.svg" alt="Animated demo: the live dashboard during a check, the report, the setup wizard and collecting" width="880">
|
|
92
96
|
</div>
|
|
93
97
|
|
|
94
98
|
> **Who runs free proxies – and is it safe to use them?** Mostly nobody on purpose: misconfigured servers with an open port, a few deliberately open ones, infected machines, and traps that log or rewrite your traffic. That's why every proxy here has to pass [five checks](#how-it-works), and why they're for public data and testing – never for logins, payments or anything personal. [More on where they come from →](#who-runs-free-proxies)
|
|
@@ -177,7 +181,7 @@ Installed, the learned state lives in your user data folder (`~/Library/Applicat
|
|
|
177
181
|
Started without arguments, a wizard asks what you are looking for:
|
|
178
182
|
|
|
179
183
|
<div align="center">
|
|
180
|
-
<img src="docs/wizard.svg" alt="Setup wizard" width="760">
|
|
184
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/wizard.svg" alt="Setup wizard" width="760">
|
|
181
185
|
</div>
|
|
182
186
|
|
|
183
187
|
| Preset | What it does |
|
|
@@ -198,9 +202,9 @@ Keys: <kbd>↑</kbd><kbd>↓</kbd> select · <kbd>Space</kbd> toggle · <kbd>1</
|
|
|
198
202
|
|
|
199
203
|
## Live proxy list
|
|
200
204
|
|
|
201
|
-
Don't want to scan yourself? Every hour **GitHub Actions** runs the tool and publishes the hits to the [`proxy-list`](
|
|
205
|
+
Don't want to scan yourself? Every hour **GitHub Actions** runs the tool and publishes the hits to the [`proxy-list`](https://github.com/maximilianfeix/proxy-scraper/tree/proxy-list) branch – every entry worked in the last run, best first: fast ones that are likely to still be up come on top.
|
|
202
206
|
|
|
203
|
-
> **Just want the lists?** They also live in a repository of their own, **[maximilianfeix/free-proxy-list](https://github.com/maximilianfeix/free-proxy-list)** – one list per protocol, per country and per site, updated every hour, with the numbers of the last run on the front page. Watch or star it to keep it at hand.
|
|
207
|
+
> **Just want the lists?** They also live in a repository of their own, **[maximilianfeix/free-proxy-list](https://github.com/maximilianfeix/free-proxy-list)** – one list per protocol, per country and per site, updated every hour, with the numbers of the last run on the front page. Watch or star it to keep it at hand. Other tools pull it too: [monosans/proxy-scraper-checker](https://github.com/monosans/proxy-scraper-checker) and [gfpcom/free-proxy-list](https://github.com/gfpcom/free-proxy-list) use it as a built-in source.
|
|
204
208
|
|
|
205
209
|
<a href="https://maximilianfeix.github.io/proxy-scraper/"><picture>
|
|
206
210
|
<source media="(prefers-color-scheme: dark)" srcset="https://maximilianfeix.github.io/proxy-scraper/chart-dark.svg">
|
|
@@ -212,15 +216,15 @@ Don't want to scan yourself? Every hour **GitHub Actions** runs the tool and pub
|
|
|
212
216
|
|
|
213
217
|
Every protocol and country also has its own page with a plain download, e.g. [SOCKS5](https://maximilianfeix.github.io/proxy-scraper/socks5/) or [Germany](https://maximilianfeix.github.io/proxy-scraper/country/de/) (`country/de/proxies.txt`).
|
|
214
218
|
|
|
215
|
-
<div align="center"><a href="https://maximilianfeix.github.io/proxy-scraper/"><img src="docs/website.png" alt="The live list website" width="860"></a></div>
|
|
219
|
+
<div align="center"><a href="https://maximilianfeix.github.io/proxy-scraper/"><img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/website.png" alt="The live list website" width="860"></a></div>
|
|
216
220
|
|
|
217
221
|
<div align="center">
|
|
218
222
|
|
|
219
|
-
[](
|
|
223
|
+
[](https://github.com/maximilianfeix/proxy-scraper/tree/proxy-list)
|
|
220
224
|
[](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/http.txt)
|
|
221
225
|
[](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks4.txt)
|
|
222
226
|
[](https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks5.txt)
|
|
223
|
-
[](
|
|
227
|
+
[](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/proxy-list.yml)
|
|
224
228
|
|
|
225
229
|
</div>
|
|
226
230
|
|
|
@@ -244,7 +248,7 @@ Every protocol and country also has its own page with a plain download, e.g. [SO
|
|
|
244
248
|
curl -s https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/proxy-list/socks5.txt | head
|
|
245
249
|
```
|
|
246
250
|
|
|
247
|
-
**Over time:** every day the first run's `proxies.json` is kept for good as a gzipped asset of the release of that year, like [snapshots-2026](
|
|
251
|
+
**Over time:** every day the first run's `proxies.json` is kept for good as a gzipped asset of the release of that year, like [snapshots-2026](https://github.com/maximilianfeix/proxy-scraper/releases/tag/snapshots-2026) – `proxies-2026-09-28.json.gz` and so on, for anyone who wants to look at free proxies over weeks and months.
|
|
248
252
|
|
|
249
253
|
Every file is also on GitHub Pages, which sits behind a CDN, isn't rate limited like raw.githubusercontent and sends CORS headers, so it works straight from the browser: `https://maximilianfeix.github.io/proxy-scraper/socks5.txt`. [jsDelivr](https://cdn.jsdelivr.net/gh/maximilianfeix/proxy-scraper@proxy-list/) works too, but can lag behind by a few hours.
|
|
250
254
|
|
|
@@ -354,7 +358,7 @@ Started without arguments, the tool asks what you need using the arrow keys –
|
|
|
354
358
|
<td valign="top">
|
|
355
359
|
|
|
356
360
|
**Real verification**<br>
|
|
357
|
-
Every hit has to fetch two independent pages – that weeds out **honeypots** that only answer check requests: over 3.6 million checks, 54 % of the proxies that answered the first request failed the second. A third request catches proxies that **tamper with content**: about one in 40 working proxies changed a known page, usually by injecting a script ([the numbers](docs/free-proxies-in-numbers.md)). Plus: HTTPS through a tunnel with **verified TLS**, anonymity level *elite / anonymous / transparent* and the country of the exit IP.
|
|
361
|
+
Every hit has to fetch two independent pages – that weeds out **honeypots** that only answer check requests: over 3.6 million checks, 54 % of the proxies that answered the first request failed the second. A third request catches proxies that **tamper with content**: about one in 40 working proxies changed a known page, usually by injecting a script ([the numbers](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/docs/free-proxies-in-numbers.md)). Plus: HTTPS through a tunnel with **verified TLS**, anonymity level *elite / anonymous / transparent* and the country of the exit IP.
|
|
358
362
|
|
|
359
363
|
</td>
|
|
360
364
|
<td valign="top">
|
|
@@ -539,7 +543,7 @@ proxy-scraper --recheck --serve --serve-host 0.0.0.0
|
|
|
539
543
|
curl -x "http://country-de:$PROXY_SCRAPER_SERVE_PASSWORD@your-server:8899" https://api.ipify.org
|
|
540
544
|
```
|
|
541
545
|
|
|
542
|
-
Without a password, `--serve-host` means **anyone who reaches the port can use it**. The ready-made [`compose.yaml`](compose.yaml) starts the server in Docker from the live list, with a password, a health check and learned state in a volume: put `PROXY_PASSWORD=…` into `.env`, then `docker compose up -d`.
|
|
546
|
+
Without a password, `--serve-host` means **anyone who reaches the port can use it**. The ready-made [`compose.yaml`](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/compose.yaml) starts the server in Docker from the live list, with a password, a health check and learned state in a volume: put `PROXY_PASSWORD=…` into `.env`, then `docker compose up -d`.
|
|
543
547
|
|
|
544
548
|
| Option | What it does |
|
|
545
549
|
|---|---|
|
|
@@ -560,7 +564,7 @@ In testing: 20 of 20 HTTPS requests succeeded, over 15 different exit IPs. In th
|
|
|
560
564
|
|
|
561
565
|
**Live dashboard:** open `http://127.0.0.1:8899/__proxy-scraper/` in a browser – the pool, success rate, traffic, a live chart of requests, countries, the best proxies and the latest connections, refreshed every two seconds. It needs nothing from the internet, and `--serve-password` protects it like the rest.
|
|
562
566
|
|
|
563
|
-
<div align="center"><img src="docs/dashboard-live.png" alt="The live dashboard of the rotating proxy server: usable proxies, success rate, requests per second, countries and the latest connections" width="860"></div>
|
|
567
|
+
<div align="center"><img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/dashboard-live.png" alt="The live dashboard of the rotating proxy server: usable proxies, success rate, requests per second, countries and the latest connections" width="860"></div>
|
|
564
568
|
|
|
565
569
|
<a id="pool-api"></a>
|
|
566
570
|
|
|
@@ -598,16 +602,16 @@ requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
|
|
|
598
602
|
|
|
599
603
|
## Discord and Telegram bot
|
|
600
604
|
|
|
601
|
-
The live list can also come to you: [`bot/`](bot/) is a Discord bot that posts every run into a server – a summary with the fastest proxies, the full lists per protocol as files, and slash commands like `/proxies type:socks5 country:DE https:true`. It sets up its own read-only channels when you invite it, and a GitHub Action deploys it to a server as a systemd service. The same process answers on Telegram too: `/proxy de socks5` for one proxy with a curl line, `/proxies 10 us https` for a short list. Setup in [bot/README.md](bot/README.md).
|
|
605
|
+
The live list can also come to you: [`bot/`](https://github.com/maximilianfeix/proxy-scraper/tree/v1.26.0/bot/) is a Discord bot that posts every run into a server – a summary with the fastest proxies, the full lists per protocol as files, and slash commands like `/proxies type:socks5 country:DE https:true`. It sets up its own read-only channels when you invite it, and a GitHub Action deploys it to a server as a systemd service. The same process answers on Telegram too: `/proxy de socks5` for one proxy with a curl line, `/proxies 10 us https` for a short list. Setup in [bot/README.md](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/bot/README.md).
|
|
602
606
|
|
|
603
607
|
<a id="how-it-works"></a>
|
|
604
608
|
|
|
605
609
|
## How it works
|
|
606
610
|
|
|
607
611
|
<picture>
|
|
608
|
-
<source media="(prefers-color-scheme: dark)" srcset="docs/checks-dark.svg">
|
|
609
|
-
<source media="(prefers-color-scheme: light)" srcset="docs/checks-light.svg">
|
|
610
|
-
<img src="docs/checks-dark.svg" alt="The five checks: 700+ lists, a real handshake, two sites with one IP, nothing injected, the details" width="100%">
|
|
612
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/checks-dark.svg">
|
|
613
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/checks-light.svg">
|
|
614
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/checks-dark.svg" alt="The five checks: 700+ lists, a real handshake, two sites with one IP, nothing injected, the details" width="100%">
|
|
611
615
|
</picture>
|
|
612
616
|
|
|
613
617
|
|
|
@@ -622,7 +626,7 @@ flowchart LR
|
|
|
622
626
|
G -. next run .-> C
|
|
623
627
|
```
|
|
624
628
|
|
|
625
|
-
1. **Sources** – the curated list in [`sources.json`](proxyscraper/sources.json), meta sources (other projects that maintain lists of proxy sources) and, once a day, a GitHub search for actively maintained repos. Every search adds to what earlier ones found; a list the search hasn't seen for three weeks drops out.
|
|
629
|
+
1. **Sources** – the curated list in [`sources.json`](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/proxyscraper/sources.json), meta sources (other projects that maintain lists of proxy sources) and, once a day, a GitHub search for actively maintained repos. Every search adds to what earlier ones found; a list the search hasn't seen for three weeks drops out.
|
|
626
630
|
2. **Collect** – plain text, HTML tables, JSON APIs and `type://ip:port` lines are recognized; private and reserved address ranges are dropped. Lists that haven't changed since the last run answer `304` and come from a local cache – a second run right after the first loads 0 MB instead of ~160 MB.
|
|
627
631
|
3. **Prioritize** – known working proxies first, then by the learned hit rate of their sources.
|
|
628
632
|
4. **Check** – every proxy has to fetch its exit IP from a check target (`checkip.amazonaws.com`, with `ifconfig.me`, `ipinfo.io`, `wtfismyip.com` and `ident.me` as reserves – none of them behind Cloudflare) and return a valid, *foreign* IP. If the target goes down mid-run, the tool switches and re-checks the proxies that were affected, so the statistics don't learn from an outage. Anyone passing your own IP through is out. Then comes the **confirmation** via `httpbin.org`: fake proxies that only answer the first check with “200 + IP” fail here. Finally a static HTML page has to arrive byte for byte as it does without a proxy – anyone injecting ads or scripts is out.
|
|
@@ -634,9 +638,9 @@ flowchart LR
|
|
|
634
638
|
<summary><b>📸 See the live dashboard and final report</b></summary>
|
|
635
639
|
<br>
|
|
636
640
|
<div align="center">
|
|
637
|
-
<img src="docs/dashboard.svg" alt="Live dashboard while checking" width="860">
|
|
641
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/dashboard.svg" alt="Live dashboard while checking" width="860">
|
|
638
642
|
<br><br>
|
|
639
|
-
<img src="docs/summary.svg" alt="Final report after a run" width="860">
|
|
643
|
+
<img src="https://raw.githubusercontent.com/maximilianfeix/proxy-scraper/v1.26.0/docs/summary.svg" alt="Final report after a run" width="860">
|
|
640
644
|
</div>
|
|
641
645
|
</details>
|
|
642
646
|
|
|
@@ -647,7 +651,7 @@ proxy-scraper --source https://example.com/my-list.txt --source socks5=./socks.t
|
|
|
647
651
|
proxy-scraper --only-sources --source bought.txt --want 50 # only yours
|
|
648
652
|
```
|
|
649
653
|
|
|
650
|
-
Any text with `ip:port` works; lines like `socks5://user:pass@host:port` keep their type, bare ones are tried as HTTP and SOCKS5 unless you write `http=…`.
|
|
654
|
+
Any text with `ip:port` works; lines like `socks5://user:pass@host:port` keep their type, bare ones are tried as HTTP and SOCKS5 unless you write `http=…`. For logins written the way many paid lists export them, `ip:port:user:pass`, use `--recheck bought.txt` or pipe the list into `--recheck -` – sources leave that form alone, since lists like `ip:port:US:elite` look the same.
|
|
651
655
|
|
|
652
656
|
<a id="output"></a>
|
|
653
657
|
|
|
@@ -805,7 +809,7 @@ Username wishes – `country-us` sends everything out through US proxies, `sessi
|
|
|
805
809
|
proxy-scraper --recheck live --want 20 -y -o - | grep '^socks5://' > socks.txt
|
|
806
810
|
```
|
|
807
811
|
|
|
808
|
-
**Check a list you already have** – `--recheck -` reads it from stdin: plain `ip:port` lines, `type://ip:port`, logins, JSON, a CSV export or a table pasted from a website (HTML or Markdown), in the order it came in. Only what works from your network comes out:
|
|
812
|
+
**Check a list you already have** – `--recheck -` reads it from stdin: plain `ip:port` lines, `type://ip:port`, logins (`user:pass@ip:port` or `ip:port:user:pass`), JSON, a CSV export or a table pasted from a website (HTML or Markdown), in the order it came in. Only what works from your network comes out:
|
|
809
813
|
|
|
810
814
|
```bash
|
|
811
815
|
curl -s https://example.com/proxies.txt | proxy-scraper --recheck - -o - > working.txt
|
|
@@ -919,13 +923,13 @@ The repo does part of the work itself:
|
|
|
919
923
|
|
|
920
924
|
| Workflow | What it does |
|
|
921
925
|
|---|---|
|
|
922
|
-
| [**tests**](
|
|
923
|
-
| [**lint**](
|
|
924
|
-
| [**codeql**](
|
|
925
|
-
| [**proxy list**](
|
|
926
|
-
| [**docker**](
|
|
927
|
-
| [**release**](
|
|
928
|
-
| [**discord bot**](
|
|
926
|
+
| [**tests**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/tests.yml) | 3 operating systems × 3 Python versions, plus a built and installed package – on every push and pull request |
|
|
927
|
+
| [**lint**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/lint.yml) | `ruff` with a pinned version – same rules locally and in CI |
|
|
928
|
+
| [**codeql**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/codeql.yml) | security analysis on every push and once a week |
|
|
929
|
+
| [**proxy list**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/proxy-list.yml) | every hour: collect, check, publish to `proxy-list`. The learned statistics live in the Actions cache, so the tool keeps getting better in the cloud too |
|
|
930
|
+
| [**docker**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/docker.yml) | builds the image on every change and runs a real scan inside it; on a version tag it publishes `linux/amd64` + `linux/arm64` to `ghcr.io` |
|
|
931
|
+
| [**release**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/release.yml) | on a version tag: test, build, smoke-test and publish a GitHub release with the wheel |
|
|
932
|
+
| [**discord bot**](https://github.com/maximilianfeix/proxy-scraper/actions/workflows/bot.yml) | tests the bot and deploys it to the server on every change in `bot/` |
|
|
929
933
|
| **Dependabot** | keeps the action versions up to date |
|
|
930
934
|
|
|
931
935
|
<a id="faq"></a>
|
|
@@ -1003,9 +1007,9 @@ Only for things that don't matter. Public proxies are run by strangers who can r
|
|
|
1003
1007
|
|
|
1004
1008
|
## Roadmap
|
|
1005
1009
|
|
|
1006
|
-
What's next is in the [open issues](
|
|
1010
|
+
What's next is in the [open issues](https://github.com/maximilianfeix/proxy-scraper/issues) – ideas and wishes are welcome as an [issue](https://github.com/maximilianfeix/proxy-scraper/issues/new/choose). During Hacktoberfest there are [beginner-friendly issues](https://github.com/maximilianfeix/proxy-scraper/issues?q=is%3Aopen+label%3Ahacktoberfest) with pointers on where to start.
|
|
1007
1011
|
|
|
1008
|
-
Shipped in v1.24
|
|
1012
|
+
Shipped in v1.24 to v1.26: `--recheck -` for lists you pipe in, which proxies get through to Discord, a README you can try in five seconds, the MCP server in the Docker image, logins written as `ip:port:user:pass`, and a Hugging Face dataset that loads in one line.
|
|
1009
1013
|
|
|
1010
1014
|
Shipped in v1.22 and v1.23: a live dashboard for the rotating server, `--export pac` and an hourly `proxy.pac`, "best first" that counts how likely a proxy is still up, the lists in a repository of their own ([free-proxy-list](https://github.com/maximilianfeix/free-proxy-list)), daily snapshots on Hugging Face, `brew install`, a Chinese README, Python 3.14, and a recipe for Burp Suite, ZAP and mitmproxy.
|
|
1011
1015
|
|
|
@@ -1013,17 +1017,17 @@ Shipped in v1.10 to v1.21: download speed per proxy and "best first" everywhere,
|
|
|
1013
1017
|
|
|
1014
1018
|
Shipped in v1.8 and v1.9: uptime per proxy and `stable.txt`, which proxies get through to Google, Reddit and Amazon, `live_proxies()` in Python, a page per proxy with its week of checks, a weekly report, live charts in this README, shareable filters on the website, sources mined from other scrapers' lists, untyped lists tried as HTTP and SOCKS5, `--export singbox`, PowerShell completion and recipes for httpx, aiohttp and Scrapy.
|
|
1015
1019
|
|
|
1016
|
-
Shipped in [v1.7](
|
|
1020
|
+
Shipped in [v1.7](https://github.com/maximilianfeix/proxy-scraper/milestone/7): an MCP server so AI agents get working proxies and can load pages through them, 28 new sources and a GitHub search that runs daily and keeps what it found, and a cleaner website.
|
|
1017
1021
|
|
|
1018
|
-
Shipped in [v1.6](
|
|
1022
|
+
Shipped in [v1.6](https://github.com/maximilianfeix/proxy-scraper/milestone/6): spam blocklist check for every exit IP, a live list refreshed every hour, pages per protocol and country, an optional password for the proxy server and a pool that refills itself while it runs, `compose.yaml`, `-o -` for pipes, a Discord bot, and a new website and README – everything in English now.
|
|
1019
1023
|
|
|
1020
|
-
Shipped in [v1.5](
|
|
1024
|
+
Shipped in [v1.5](https://github.com/maximilianfeix/proxy-scraper/milestone/5): content tampering check, live list website with trend and stable proxies, provider/datacenter info, a much bigger proxy server (rotation strategies, sticky sessions, SOCKS5 inbound, status and Prometheus metrics), `--recheck live`, Python API, shell completion. Measured and dropped earlier: protocol detection with an extra connection ([#3](https://github.com/maximilianfeix/proxy-scraper/issues/3)) and IPv6 ([#1](https://github.com/maximilianfeix/proxy-scraper/issues/1)).
|
|
1021
1025
|
|
|
1022
1026
|
<a id="contributing"></a>
|
|
1023
1027
|
|
|
1024
1028
|
## Contributing
|
|
1025
1029
|
|
|
1026
|
-
Bug reports, new sources and pull requests are very welcome – see [CONTRIBUTING.md](CONTRIBUTING.md), and [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for how the pieces fit together. The short version:
|
|
1030
|
+
Bug reports, new sources and pull requests are very welcome – see [CONTRIBUTING.md](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/CONTRIBUTING.md), and [docs/ARCHITECTURE.md](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/docs/ARCHITECTURE.md) for how the pieces fit together. The short version:
|
|
1027
1031
|
|
|
1028
1032
|
```bash
|
|
1029
1033
|
pip install -e ".[dev]"
|
|
@@ -1075,7 +1079,7 @@ proxyscraper/
|
|
|
1075
1079
|
|
|
1076
1080
|
## Community
|
|
1077
1081
|
|
|
1078
|
-
Questions, ideas and things you built with it go to [Discussions](https://github.com/maximilianfeix/proxy-scraper/discussions) – bugs to the [issues](
|
|
1082
|
+
Questions, ideas and things you built with it go to [Discussions](https://github.com/maximilianfeix/proxy-scraper/discussions) – bugs to the [issues](https://github.com/maximilianfeix/proxy-scraper/issues). If proxy-scraper saves you time, a ⭐ helps others find it.
|
|
1079
1083
|
|
|
1080
1084
|
Thanks to everyone who helped build it – new sources, countries, Python 3.14, examples and more:
|
|
1081
1085
|
|
|
@@ -1083,7 +1087,7 @@ Thanks to everyone who helped build it – new sources, countries, Python 3.14,
|
|
|
1083
1087
|
<img src="https://contrib.rocks/image?repo=maximilianfeix/proxy-scraper" alt="Contributors to proxy-scraper">
|
|
1084
1088
|
</a>
|
|
1085
1089
|
|
|
1086
|
-
Want to join? [Beginner-friendly issues](
|
|
1090
|
+
Want to join? [Beginner-friendly issues](https://github.com/maximilianfeix/proxy-scraper/issues?q=is%3Aopen+label%3A%22good+first+issue%22) say where to start.
|
|
1087
1091
|
|
|
1088
1092
|
<a href="https://star-history.com/#maximilianfeix/proxy-scraper&Date">
|
|
1089
1093
|
<picture>
|
|
@@ -1097,7 +1101,7 @@ Want to join? [Beginner-friendly issues](../../issues?q=is%3Aopen+label%3A%22goo
|
|
|
1097
1101
|
|
|
1098
1102
|
## Acknowledgements
|
|
1099
1103
|
|
|
1100
|
-
proxy-scraper stands on the work of the people who publish free proxy lists. Thanks to everyone listed in [`sources.json`](proxyscraper/sources.json), and especially to
|
|
1104
|
+
proxy-scraper stands on the work of the people who publish free proxy lists. Thanks to everyone listed in [`sources.json`](https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/proxyscraper/sources.json), and especially to
|
|
1101
1105
|
|
|
1102
1106
|
- [monosans/proxy-scraper-checker](https://github.com/monosans/proxy-scraper-checker) and [gfpcom/free-proxy-list](https://github.com/gfpcom/free-proxy-list), whose curated source collections are read as meta sources
|
|
1103
1107
|
- [Textualize/rich](https://github.com/Textualize/rich), which draws the whole terminal UI
|
|
@@ -1112,7 +1116,7 @@ This tool only collects publicly listed proxies and checks whether they work. Yo
|
|
|
1112
1116
|
|
|
1113
1117
|
---
|
|
1114
1118
|
|
|
1115
|
-
<sub>Made in Germany by <a href="https://github.com/maximilianfeix">@maximilianfeix</a> · <a href="LICENSE">MIT License</a> · <a href="CHANGELOG.md">Changelog</a> · <a href="SECURITY.md">Security</a> · <a href="CONTRIBUTING.md">Contributing</a></sub>
|
|
1119
|
+
<sub>Made in Germany by <a href="https://github.com/maximilianfeix">@maximilianfeix</a> · <a href="https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/LICENSE">MIT License</a> · <a href="https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/CHANGELOG.md">Changelog</a> · <a href="https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/SECURITY.md">Security</a> · <a href="https://github.com/maximilianfeix/proxy-scraper/blob/v1.26.0/CONTRIBUTING.md">Contributing</a></sub>
|
|
1116
1120
|
|
|
1117
1121
|
<sub>If proxy-scraper saves you time, a ⭐ helps others find it.</sub>
|
|
1118
1122
|
|