Advanced Python proxy rotation library with auto-fetching, validation, and persistence
Project description
⚡ 30-Second Setup
pip install proxywhirl
from proxywhirl import ProxyRotator
rotator = ProxyRotator(proxies=["http://p1:8080", "http://p2:8080"])
response = rotator.get("https://api.example.com/data")
# Dead proxies auto-ejected ✓ | Slow ones deprioritized ✓ | Fast ones favored ✓
🎯 Why ProxyWhirl?
|
9 Strategies Round-robin, weighted, geo-targeted, performance-based & more |
120 Sources Auto-fetch from built-in providers with validation |
Self-Healing Auto-eject dead proxies, circuit breakers, recovery |
Blazing Fast Async-first, <3μs selection, zero blocking |
🔄 Rotation Strategies
# Switch strategies on the fly
rotator = ProxyRotator(strategy="performance-based")
rotator.set_strategy("geo-targeted", preferences={"US": [...], "EU": [...]})
| Strategy | Best For |
|---|---|
round-robin |
Even distribution |
random |
Unpredictable patterns |
weighted |
Favor reliable proxies |
performance-based |
Lowest latency |
geo-targeted |
Regional routing |
session-persistence |
Sticky sessions |
cost-aware |
Budget optimization |
composite |
Custom pipelines |
🎣 Auto-Fetch Proxies
from proxywhirl import ProxyFetcher
# Grab 300+ validated proxies in seconds
proxies = await ProxyFetcher().fetch_all(validate=True)
🖥️ Multiple Interfaces
|
Python API rotator.get(url)
rotator.post(url, json=data)
await rotator.async_get(url)
|
CLI proxywhirl fetch
proxywhirl pool list
proxywhirl health
|
REST API docker-compose up -d
curl localhost:8000/api/v1/pool
|
📚 Learn More
📖 Full Documentation
🎯 Strategy Guide
🤖 MCP Server
📓 Examples
GitHub · Issues · MIT License
Built with ❤️ for ethical web automation
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxywhirl-0.1.2.tar.gz.
File metadata
- Download URL: proxywhirl-0.1.2.tar.gz
- Upload date:
- Size: 228.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2831ca9fe0a5293347217396ecb60ef0fff02140c0451490eac29cede534ce96
|
|
| MD5 |
108c36238531b868c3bf6d98dd1ee675
|
|
| BLAKE2b-256 |
e5b9e8b8c349eab33e4f820701f0f194be44f0e531e3c93e074ddfe45bc96bdf
|
Provenance
The following attestation bundles were made for proxywhirl-0.1.2.tar.gz:
Publisher:
release.yml on wyattowalsh/proxywhirl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxywhirl-0.1.2.tar.gz -
Subject digest:
2831ca9fe0a5293347217396ecb60ef0fff02140c0451490eac29cede534ce96 - Sigstore transparency entry: 952291212
- Sigstore integration time:
-
Permalink:
wyattowalsh/proxywhirl@4fd4d2bb0f1c1a79332a7b488bad3b7232304f9b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/wyattowalsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fd4d2bb0f1c1a79332a7b488bad3b7232304f9b -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file proxywhirl-0.1.2-py3-none-any.whl.
File metadata
- Download URL: proxywhirl-0.1.2-py3-none-any.whl
- Upload date:
- Size: 246.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23733e829f3c3b9d8a26530f18278e3b8f654fa16fae7359ed0c28296b4f42de
|
|
| MD5 |
73fbaf83ad1fe30b1c34d56ab5923b8e
|
|
| BLAKE2b-256 |
e8d4bf1ed6482f91a9d0678c2ebf39d1b675f2fb279b42aa7add84f86b9cbd63
|
Provenance
The following attestation bundles were made for proxywhirl-0.1.2-py3-none-any.whl:
Publisher:
release.yml on wyattowalsh/proxywhirl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
proxywhirl-0.1.2-py3-none-any.whl -
Subject digest:
23733e829f3c3b9d8a26530f18278e3b8f654fa16fae7359ed0c28296b4f42de - Sigstore transparency entry: 952291215
- Sigstore integration time:
-
Permalink:
wyattowalsh/proxywhirl@4fd4d2bb0f1c1a79332a7b488bad3b7232304f9b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/wyattowalsh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fd4d2bb0f1c1a79332a7b488bad3b7232304f9b -
Trigger Event:
workflow_dispatch
-
Statement type: