About this project

## GoProxy Overview GoProxy is a high-performance proxy server implemented in Go, supporting a wide range of protocols including HTTP(S), SOCKS5, TCP, UDP, Websocket, and Shadowsocks (SS). It is designed for both forward and reverse proxy scenarios, enabling secure communication, NAT traversal, and flexible traffic management. ### Key Features - **Chained Proxies**: Can act as a single proxy or be chained to form multi-level proxy networks. - **Encrypted Communication**: Supports TLS and custom AES256 encryption for secure data transmission between proxy nodes. - **Smart Proxy**: Automatically routes blocked websites through upstream proxies while allowing direct access to unblocked sites for speed. - **Domain Black/White Lists**: Control access based on domain patterns with wildcard support. - **Client IP Black/White Lists**: Restrict access by client IP addresses. - **Port Forwarding**: TCP and UDP port mapping for various use cases. - **NAT Traversal**: Expose local servers behind NAT or firewalls to the internet. - **SSH Relay**: Use SSH as a transport for HTTP(S) and SOCKS5 proxies. - **KCP Support**: Low-latency data transmission via the KCP protocol. - **Load Balancing & High Availability**: Multiple upstream proxies with strategies like round-robin, least connections, and weighted selection. - **Speed & Connection Limits**: Control bandwidth and concurrent connections per user or IP. - **Protocol Conversion**: Convert between HTTP(S), SOCKS5, and SS proxies on a single port. - **DNS Proxy**: Secure DNS queries through encrypted proxy channels. - **Transparent Proxy**: Works with iptables for gateway-level transparent proxying. - **Cross-Platform**: Runs on Windows, Linux, macOS, and ARM devices like Raspberry Pi. - **API Authentication**: Supports user-based authentication and dynamic upstream selection via external APIs. - **Range Port Listening**: Listen on multiple ports or port ranges without starting multiple processes. ### Installation Quick installation for Linux 64-bit systems: ```bash bash -c "$(curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh)" ``` Manual installation involves downloading the latest release from the [releases page](https://github.com/snail007/goproxy/releases) and running the provided install script. ### Usage Examples **Basic HTTP Proxy:** ```bash proxy http -t tcp -p "0.0.0.0:38080" ``` **Chained HTTP Proxy with Encryption:** ```bash # Level 1 (VPS) proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key # Level 2 (Local) proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key ``` **TCP Port Forwarding:** ```bash proxy tcp -p ":3306" -T tcp -P "192.168.1.1:3306" ``` **NAT Traversal (Expose Local Server):** ```bash # On server (VPS) proxy server -r ":8080" -P "password" # On client (local) proxy client -l ":8080" -r "22.22.22.22:8080" -P "password" ``` ### Configuration Files Commands can be loaded from configuration files using the `@` symbol: ```text # config.txt http -t tcp -p :33080 --forever ``` Run with: `proxy @config.txt` ### Documentation & Resources - [Official Website](https://www.goproxy.win/) - [Chinese README](https://github.com/snail007/goproxy/blob/master/README_ZH.md) - [Manual](https://snail007.github.io/goproxy/manual/) - [Video Tutorials (Bilibili)](https://space.bilibili.com/472844633) - [Desktop Edition (ProxyAdmin)](https://github.com/snail007/proxy_admin_free) - [Android Editions](https://github.com/snail007/goproxy-ss-plugin-android) ### License GoProxy is licensed under GPLv3. The project uses a delayed source release strategy to protect against unauthorized commercial use. For commercial licensing or custom development, contact `arraykeys@gmail.com`.