Releases: wyattowalsh/proxywhirl
Releases · wyattowalsh/proxywhirl
v0.3.3
Release v0.3.2
proxywhirl v0.3.2
- fix(fetchers): default PlainTextParser to skip malformed upstream lines instead of failing entire source fetches
- add regression test covering concatenated proxy lines and ports >65535 from real-world sources
- include prior hideip.me parser format fix in a released version for Colab users
Release v0.3.1
Release v0.3.0
proxywhirl v0.3.0
Highlights
- Retry & Failover Logic: Automatic retry with exponential backoff, circuit breaker pattern, intelligent proxy failover selection, configurable retry policies, 9 new REST API endpoints
- Intelligent Rotation Strategies: 7 advanced strategies (round-robin, random, weighted, least-used, performance-based, session-persistence, geo-targeted), strategy composition, hot-swapping
- Web & Infrastructure: CSP security header, CDN cache optimization, PWA improvements, stale file cleanup
Installation
pip install proxywhirl==0.3.0See CHANGELOG for full details.
Release v0.1.2
Release v0.1.1
v0.1.0 - Initial Release
proxywhirl v0.1.0
🎉 Initial public release!
Installation
# Using uv (recommended)
uv pip install proxywhirl
uv add proxywhirl
# Using uvx (run without installing)
uvx proxywhirl --help
uvx proxywhirl fetch
# Using pip
pip install proxywhirlFeatures
- 10+ Rotation Strategies: Round-robin, weighted, performance-based, geo-targeted, session persistence, cost-aware, and more
- Multi-Protocol Support: HTTP, HTTPS, SOCKS4, SOCKS5
- 82+ Built-in Sources: Auto-fetch from free proxy lists
- Smart Validation: Parallel validation with configurable timeouts
- Circuit Breaker: Automatic failure detection and recovery
- Retry with Backoff: Configurable retry policies with jitter
- SQLite Persistence: Save and load proxy pools
- Three-Tier Cache: L1 memory, L2 file, L3 SQLite
- Rate Limiting: Per-endpoint and global rate limits
- REST API: FastAPI-based HTTP interface
- MCP Server: Model Context Protocol integration (Python 3.10+)
- Rich CLI: Interactive terminal UI with Typer
- Browser Rendering: Playwright support for JS-heavy sources
Quick Start
from proxywhirl import ProxyRotator
rotator = ProxyRotator()
rotator.fetch() # Auto-fetch from 82+ sources
proxy = rotator.get_proxy()
response = rotator.get("https://httpbin.org/ip")