Skip to content
/ rota Public

A high-performance proxy rotation engine with automated IP management and real-time health monitoring

License

Notifications You must be signed in to change notification settings

alpkeskin/rota

Repository files navigation

rota

Rota - Open Source Proxy Rotator

Key HighlightsInstallationConfigurationQuick StartContributingWhat'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.

Key Highlights

  • 🚀 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
  • 🌍 Supports HTTP, SOCKS v4(A) & v5 Protocols
  • ✅ Built-in proxy checker to maintain a healthy proxy pool
  • 🌐 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)

Installation

go install -v github.com/alpkeskin/rota/cmd/rota@latest

Docker

docker pull ghcr.io/alpkeskin/rota:latest

Docker Run

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

Configuration

Example configuration file can be found in config.yml

  • proxy_file: Path to the proxy file
  • file_watch: Watch for file changes and reload proxies
  • proxy: Proxy configurations
    • port: Proxy server port
    • authentication: Authentication configurations
      • enabled: Enable basic authentication
      • username: Username
      • password: Password
    • rotation: Rotation configurations
      • method: Rotation method (random, roundrobin)
      • remove_unhealthy: Remove unhealthy proxies from rotation
      • fallback: Recommended for continuous operation in case of proxy failures
      • fallback_max_retries: Number of retries for fallback. If this is reached, the response will be returned "bad gateway"
      • timeout: Timeout for proxy requests
      • retries: Number of retries to get a healthy proxy
  • api: API configurations
    • enabled: Enable API endpoints
    • port: API server port
  • healthcheck: Healthcheck configurations
    • output: Output method (file, stdout)
    • file: Path to the healthcheck file
    • timeout: Timeout for healthcheck requests
    • workers: Number of workers to check proxies
    • url: URL to check proxies
    • status: Status code to check proxies
    • headers: Headers to check proxies
  • logging: Logging configurations
    • stdout: Log to stdout
    • file: Path to the log file
    • level: Log level (debug, info, warn, error, fatal)

Proxies file pattern

Proxies file should be in the following format:

scheme://ip:port

Example:
socks5://192.111.137.37:18762

Quick Start

rota --config config.yml

Default config file path is config.yml so you can use rota without any arguments.

Proxy Checker

rota --config config.yml --check

Contributing

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.

What's Next

  • Dashboard for monitoring and managing proxies
  • Add more proxy rotation methods (e.g., least_connections)
  • Add CA certificates for Rota
  • Performance and memory usage improvements
  • Add more healthcheck methods (e.g., ping)
  • Add database support for enterprise usage (Not planned)

Thanks for your interest in Rota. I hope you enjoy using it.

LinkedIn Twitter GitHub