An Android application that acts as a residential proxy agent, connecting devices to a proxy network server via WebSocket.
- WebSocket Connection: Real-time bidirectional communication with proxy server
- HTTP Request Proxying: Forwards HTTP/HTTPS requests through the device
- TCP Tunneling: Supports CONNECT method for TCP-level proxying
- Binary Frame Protocol: High-performance data transfer using binary WebSocket frames
- Automatic Reconnection: Handles network changes and reconnection attempts
- Device Onboarding: Secure pairing token-based device registration
- Foreground Service: Runs reliably in the background with notifications
- Stats Tracking: Monitors active connections and data transferred
- ProxyService: Foreground service managing WebSocket connection and proxy operations
- ProxyViewModel: UI state management and service coordination
- BinaryFrameCodec: Efficient binary protocol for data streaming (256KB buffers)
- PrefsManager: Encrypted storage for device credentials and settings
REQUEST: HTTP request forwardingCONNECT: TCP tunnel establishmentDATA: Legacy JSON-based data transferBINARY: High-performance binary data framesCLOSE: Stream closureWELCOME: Device credentials from serverOFFBOARD: Remote device removal
- Android 8.0 (API 26) or higher
- Internet connection
- Valid pairing token from proxy network server
-
Clone the repository:
git clone https://github.com/yourusername/ProxyStoreAgent.git cd ProxyStoreAgent -
Open in Android Studio
-
Sync Gradle and build the project
-
Update the WebSocket server URL in
ProxyService.ktif needed
The app connects to the WebSocket server at:
wss://proxystore.ghzawi.com/ws
To change the server URL, modify the connectWebSocket() function in ProxyService.kt.
- Launch the app
- Enter the 6-digit pairing token provided by the proxy network
- Tap "Connect"
- The device will register and begin accepting proxy requests
./gradlew assembleDebug./gradlew assembleReleaseThe APK will be generated in app/build/outputs/apk/
- Device credentials stored in encrypted SharedPreferences
- Hardware ID based device identification
- Token-based authentication
- HTTPS/WSS encrypted communication
- Binary WebSocket frames (no Base64 encoding)
- 256KB buffer size for high-throughput data transfer
- Connection pooling and keep-alive
- Minimal logging in production builds
[Your License Here]
Contributions are welcome! Please feel free to submit a Pull Request.