A SOCKS proxy that aggregates multiple remote SOCKS proxies, distributing traffic across them to increase overall bandwidth.
- Connection Distribution: Routes different TCP connections through different proxies using a round-robin or weighted load balancing approach
- Increased Total Bandwidth: Improves overall throughput for applications that make multiple concurrent connections
- Automatic Proxy Management: Handles failed or slow proxies by routing around them
- Dynamic Optimization: Automatically adjusts how many proxies to use based on your bandwidth needs
- Protocol Support: Works with SOCKS4, SOCKS4a, SOCKS5, and SOCKS5h protocols
- Detailed Logging: Provides visibility into proxy performance and connection routing
- True Channel Bonding: Cannot split a single TCP connection across multiple proxies (single-connection speeds won't increase)
- UDP Bonding: Does not currently support UDP traffic distribution
- Transport Layer Bonding: Doesn't combine connections at the packet level like MPTCP or VPN bonding solutions
- Custom Protocols: Only works with applications that support SOCKS proxy configuration
MultiSocks works best with:
- Web browsers (which open many connections to different resources)
- Download managers that support multiple connections
- Applications that establish multiple TCP connections
- Scenarios where anonymity through multiple exit points is desired
- Supports multiple remote SOCKS proxies
- Round-robin or weighted load balancing
- Automatic handling of failed or slow proxies
- Support for SOCKS4, SOCKS4a, SOCKS5, and SOCKS5h protocols
- Detailed logging
- Load proxies from command line or text file
- Auto-optimization to dynamically adjust proxy usage based on bandwidth
pip install multisocks
git clone https://github.com/tboy1337/multisocks.git
cd multisocks
pip install -r requirements.txt
# Show help
multisocks --help
# Show version
multisocks --version
# Start the proxy server with multiple remote proxies specified on the command line
multisocks start --port 1080 --proxies socks5://user:pass@proxy1.example.com:1080/10 socks5h://proxy2.example.com:1080/5
# Start the proxy server with proxies loaded from a text file
multisocks start --port 1080 --proxy-file proxies.txt
# Start with auto-optimization (automatically adjusts how many proxies to use based on your connection speed)
multisocks start --port 1080 --proxy-file proxies.txt --auto-optimize
Proxies are specified in the format: protocol://[username:password@]hostname:port[/weight]
protocol
: Eithersocks4
,socks4a
,socks5
, orsocks5h
username:password
: Optional authentication for SOCKS5/SOCKS5hhostname
: The proxy server hostname or IP addressport
: The proxy server portweight
: Optional priority weight (default: 1)
socks4
: Basic SOCKS4 protocol with IP addresses onlysocks4a
: Extended SOCKS4 with hostname resolution on the proxy serversocks5
: SOCKS5 protocol with hostname resolution on the clientsocks5h
: SOCKS5 protocol with hostname resolution on the proxy server (useful for avoiding DNS leaks)
You can specify proxies in a text file, with one proxy per line:
# This is a comment
socks5://user:pass@proxy1.example.com:1080/10
socks5h://proxy2.example.com:1080/5
socks4://proxy3.example.com:1080
- Empty lines are ignored
- Lines starting with
#
are treated as comments and ignored
When enabled with the --auto-optimize
flag, MultiSocks will:
- Measure your direct connection speed
- Test the speed of your proxies
- Automatically determine how many proxies to use to saturate your connection
- Periodically adjust the active proxy count based on network conditions
This feature is especially useful when:
- You have a large list of proxies but don't want to manually configure how many to use
- Your internet connection speed varies throughout the day
- You want to maximize your connection bandwidth without manual tuning
Auto-optimization is re-evaluated every 10 minutes to adjust to changing network conditions.
git clone https://github.com/tboy1337/multisocks.git
cd multisocks
pip install -r requirements.txt
python -m unittest discover tests
This project is licensed under the MIT License - see the LICENSE file for details.