Groxy is a powerful and customizable HTTP/HTTPS proxy written in Go. It is designed to handle both transparent and target-specific proxying, with support for custom headers, User-Agent rotation, TLS certificate management, and dynamic certificate rotation.
Transparent Proxy Mode: Automatically forwards requests to the destination host without requiring explicit configuration.Target-Specific Proxy Mode: Directs traffic to a specific target URL.Custom Headers: Add custom headers to outgoing requests.TLS Support: Built-in support for HTTPS with dynamic certificate generation and rotation.Request/Response Modification: Modify incoming responses and outgoing requests on the fly.Logging: Comprehensive logging for both requests and responses.Certificate Management: Automatically generate and rotate TLS certificates for secure communication.User-Agent Rotation: RotateUser-Agentstrings to mimic different browsers or devices.HTTP to HTTPS redirection: Redirection is set toTrueby default but this can be change inserver.go.Worker Pools for Request Handling: Specify how many workers should be created to handle incoming requests, and determine the buffer size for pending requests.
Authorization: Controls who can access the proxy and what actions they can perform.PolyglotFeatures: Add support forC++and multiple protocols.Rate Limiting Middleware: Implement rate limiting to control traffic flow.
- Clone the Repository:
git clone https://github.com/yourusername/Groxy.git
cd Groxy- Build the Project:
go build -o groxy- Run the Proxy:
./groxy -http -https -H "X-Custom-Header: MyValue"Command-Line Options
-t <target>: Specify the target URL for target-specific mode (e.g., http://example.com).--transparent: Run in transparent mode.-H <header>: Add a custom header to outgoing requests (e.g., X-Request-ID: 12345).-http: Enable the HTTP server (listens on port 8080).-https: Enable the HTTPS server (listens on port 8443).-workers: Determine the number of workers. Is set to0by default.queue-size: Detemine the buffer size for pending requests.timeout: Timeout for requests in seconds. Is set to30seconds by default.
Transparent Mode:
./groxy --transparent -http -httpsTarget-Specific Mode:
./groxy -t http://example.com -http -https -H "X-Request-ID: 12345"Custom Header:
./groxy -t http://example.com -http -H "Authorization: Bearer token"- Certificates are stored in the
certsdirectory:certs/server-cert.pem: The server certificate.certs/server-key.pem: The server private key.
- You can replace these files with your own certificates if needed.
- The certificates provided in the repository are for testing purposes.
- Logs are stored in the
logsdirectory. - You can customize the logging behavior by modifying the
logger/log.gofile.
proxy/: Contains the core proxy logic, including request/response modification and transparent/target-specific handling.tls/: Manages TLS certificate generation, rotation, and configuration.servers/: Handles HTTP/HTTPS server initialization and management.logger/: Provides logging functionality for requests, responses, and errors.certs/: Stores TLS certificates and keys.
If you'd like to contribute to Groxy, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Submit a pull request with a detailed description of your changes.