
ProxyPool
Python tool that collects free proxy IPs from public sites, checks them, and serves working ones via an API.
- Stars
- 23.8k
- Forks
- 5.4k
- Licence
- MIT
- Language
- Python
- Last update
- 5 months ago
- Type
- App
What it is
ProxyPool is a Python service that regularly gathers free proxy addresses published on public websites, tests whether they still work, and stores the working ones in a Redis database. Other programs can then ask its HTTP API for a random proxy, which is useful for web scrapers that need to rotate IP addresses. It also offers a command-line mode and lets you add your own proxy sources.
- Run a scheduled job that fetches and validates free proxies into Redis
- Call the /get endpoint from a spider to obtain a random proxy and retry requests through it
- Use /delete to remove a proxy that failed, keeping the pool cleaner
- Add a custom proxy source by writing a small fetcher class in fetcher/sources/
Great for
- Developers building web scrapers who want to experiment with rotating proxies
- Hobbyists learning how proxy pools and scheduled crawling work
- Teams who want a self-hosted proxy pool they can extend with their own sources
Not ideal for
- Production scraping that needs reliable proxies, because the README notes free proxies have limited quality and recommends paid providers
- Anyone needing anonymity or security guarantees, since the README does not discuss them and free proxies may be untrustworthy
- Non-developers, since setup requires Python, Redis and configuration editing
How to get it
- 1
Clone and build from source
You'll need: Python 3.8 to 3.11 (per README badges) · Redis
Clone the repository
git clone https://github.com/jhao104/proxy_pool.gitInstall dependencies
pip install -r requirements.txt - 2
Run it
- Edit setting.py to set DB_CONN to your Redis connection string
- Start the scheduler with: python proxyPool.py schedule
- In another terminal, start the API with: python proxyPool.py server
- Open the API at http://127.0.0.1:5010 (the README also lists PORT = 5000 in its config sample, so check your setting.py) and request /get
- 3
Get the most out of it
- Use the ?type=https parameter on /get or /all to filter for HTTPS-capable proxies
- Disable weak sources by adding their name to PROXY_FETCHER_EXCLUDE in setting.py
- Run python proxyPool.py fetcher to list currently enabled proxy sources
- Wrap the /get and /delete calls in a retry function, as the README's example shows
- Use the included docker-compose file for a containerized setup
Downloads
Strengths
- Covers both scheduled collection and validation, so the pool refreshes automatically
- Simple HTTP API (/get, /pop, /all, /count, /delete) that any language can call
- Extensible: new proxy sources are added as Python files without changing core config
Trade-offs
- Free proxy sources vary in quality and availability, as the README itself warns
- Requires Redis and a Python environment, so setup has some moving parts
- The README is partly in Chinese and includes promotional content for a paid proxy vendor
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| proxy_pool (this) | 23.8k | App | intermediate | 5 months ago | Developers building web scrapers who want to experiment with rotating proxies |
| spider-flow | 11.4k | App | intermediate | 3.4 years ago | Non-programmers who need to collect data from websites and prefer visual flow definitions |
| examples-of-web-crawlers | 14.7k | Learning resource | beginner | 1.4 years ago | Beginners who want to see working examples of web scraping in Python |
| hetty | 12.5k | App | intermediate | 4 months ago | Security researchers testing web applications |
| mitmproxy | 46.6k | Dev tool | intermediate | 4 days ago | Developers debugging how an app talks to a backend API |
| postgrest | 27.7k | App | intermediate | 7 days ago | Developers who already have a PostgreSQL database and want an HTTP API on top of it quickly |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.