Key Highlights • Installation • Configuration • Quick Start • API • Contributing • What's Next
Rota is a lightning-fast, self-hosted proxy rotation powerhouse that revolutionizes how you manage and rotate proxies. Built with performance at its core, this robust tool handles thousands of requests per second while seamlessly rotating IPs to maintain your anonymity. Whether you're conducting intensive web scraping operations, performing security research, or need reliable proxy management, Rota delivers enterprise-grade proxy rotation capabilities in an open-source package.
- 🚀 Self-hosted solution with complete control over your proxy infrastructure
- ⚡ Blazing-fast performance optimized for high-throughput operations
- 🔄 Advanced proxy rotation with intelligent IP management (random, roundrobin least_conn, time_based)
- 🤖 Automatic proxy pool management (real-time file monitoring and automatic removal of unhealthy proxies)
- 🌍 Supports HTTP, SOCKS v4(A) & v5 Protocols
- ✅ Built-in proxy checker to maintain a healthy proxy pool
- 🔒 Rate limiting to prevent abuse
- 🌐 Perfect companion for web scraping and data collection projects
- 🔍 Cross-platform compatibility (Windows, Linux, Mac, Raspberry Pi)
- 🔗 Easy integration with upstream proxies (e.g., Burp Suite) and proxy chains (e.g., OWASP ZAP)
go install -v github.com/alpkeskin/rota/cmd/rota@latest
docker pull ghcr.io/alpkeskin/rota:latest
docker run \
--name rota-proxy \
-p 8080:8080 \
-p 8081:8081 \
-v "$(pwd)/config.yml:/etc/rota/config.yml" \
-v "$(pwd)/proxies.txt:/etc/rota/proxies.txt" \
rota:latest --config /etc/rota/config.yml
note: If API is not enabled, dont use -p 8081:8081
Example configuration file can be found in config.yml
proxy_file
: Path to the proxy filefile_watch
: Watch for file changes and reload proxiesproxy
: Proxy configurationsport
: Proxy server portauthentication
: Authentication configurationsenabled
: Enable basic authenticationusername
: Usernamepassword
: Password
rotation
: Rotation configurationsmethod
: Rotation method (random, roundrobin, least_conn, time_based)time_based
: Time-based rotation configurations (only if method is time_based)interval
: Interval in seconds
remove_unhealthy
: Remove unhealthy proxies from rotationfallback
: Recommended for continuous operation in case of proxy failuresfallback_max_retries
: Number of retries for fallback. If this is reached, the response will be returned "bad gateway"timeout
: Timeout for proxy requestsretries
: Number of retries to get a healthy proxy
rate_limit
: Rate limiting configurationsenabled
: Enable rate limitinginterval
: Interval in secondsmax_requests
: Maximum number of requests per interval
api
: API configurationsenabled
: Enable API endpointsport
: API server port
healthcheck
: Healthcheck configurationsoutput
: Output method (file, stdout)file
: Path to the healthcheck filetimeout
: Timeout for healthcheck requestsworkers
: Number of workers to check proxiesurl
: URL to check proxiesstatus
: Status code to check proxiesheaders
: Headers to check proxies
logging
: Logging configurationsstdout
: Log to stdoutfile
: Path to the log filelevel
: Log level (debug, info, warn, error, fatal)
Proxies file should be in the following format:
scheme://ip:port
Examples:
socks5://192.111.137.37:18762
http://192.111.137.37:9911
https://192.111.137.37:9911
rota --config config.yml
Default config file path is config.yml
. So you can use rota
without any arguments. That's it! 🎉
rota --config config.yml --check
For now, API is enabled by default. You can disabled it by setting api.enabled
to false
in your config file.
Endpoints:
/healthz
: Health check endpoint to monitor the service status/proxies
: Returns a list of all currently available proxies in the pool, including their status and performance metrics/metrics
: Provides detailed system metrics/history
: Shows a chronological log of proxy rotations, requests, and any errors encountered during operation
Contributions are welcome! Please feel free to submit a PR. If you have any questions, please feel free to open an issue or contact me on LinkedIn. Please ensure your pull requests are meaningful and add value to the project. Pull requests that do not contribute significant improvements or fixes will not be accepted.
Thanks for your interest in Rota. I hope you enjoy using it.