A cross-platform desktop application built with Electron.js for managing system-wide proxy connections. Similar to FoxyProxy but as a standalone desktop app for macOS and Windows.
- Proxy Profile Management: Add, edit, delete, and manage multiple proxy profiles supporting HTTP, HTTPS, SOCKS4, SOCKS5, and PAC (Proxy Auto-Config) scripts
- Quick Switcher: Instantly switch between proxy profiles with a dropdown selector
- URL Pattern Rules: Define wildcard or regex-based patterns to route specific domains/URLs through particular proxies
- Real-time Logging: View connection logs, errors, and traffic summaries with export functionality
- System Tray Integration: Minimize to tray on Windows/macOS with quick actions
- Auto-proxy Mode: Automatically detect and switch proxies based on network changes (configurable)
- Settings Management: Auto-start on boot, theme selection (light/dark), import/export configurations
- Proxy Testing: Test proxy connections before applying them
- Secure Storage: Credentials stored securely using electron-store
- Node.js (v16 or higher recommended)
- npm or yarn package manager
-
Clone or download this repository
-
Navigate to the project directory:
cd Proxyapp -
Install dependencies:
npm install
To run the application in development mode:
npm startOr with developer tools enabled:
npm run devTo build distributable packages:
For macOS:
npm run build:macFor Windows:
npm run build:winFor both platforms:
npm run build:allBuilt packages will be in the dist/ directory:
- macOS:
.dmgfile - Windows:
.exeinstaller
Proxyapp/
├── main.js # Main Electron process
├── preload.js # Preload script for secure IPC
├── index.html # Main UI HTML
├── renderer.js # Renderer process logic
├── styles.css # Application styles
├── package.json # Dependencies and build config
├── modules/
│ ├── proxyManager.js # Proxy profile management
│ ├── rulesEngine.js # URL pattern matching engine
│ └── logger.js # Logging module
├── assets/ # Icons and assets
└── dist/ # Build output (generated)
- Click on the "Profiles" tab in the sidebar
- Click "+ Add Profile"
- Fill in the proxy details:
- Name: A friendly name for the profile
- Type: HTTP, HTTPS, SOCKS4, SOCKS5, or PAC
- Host: Proxy server address
- Port: Proxy server port
- Username/Password: Optional authentication
- Bypass List: Comma-separated list of domains to bypass
- PAC URL: For PAC type, provide the PAC script URL
- Click "Test Proxy" to verify the connection
- Click "Save" to add the profile
- Select a profile from the dropdown in the quick switcher
- Click "Enable" to apply the proxy system-wide
- Click "Disable" to turn off the proxy
- Click on the "Rules" tab
- Click "+ Add Rule"
- Configure the rule:
- Rule Name: Descriptive name
- URL Pattern: Wildcard pattern (e.g.,
*.example.com) or regex - Pattern Type: Wildcard or Regex
- Proxy Profile: Select which profile to use for matching URLs
- Priority: Higher priority rules are evaluated first
- Click "Save"
- Go to the "Logs" tab to see real-time connection logs
- Use "Export" to save logs to a file
- Use "Clear" to clear the log view
- Auto-start on boot: Launch the app when the system starts
- Minimize to tray: Keep the app running in the system tray
- Auto-proxy mode: Automatically switch proxies based on network
- Theme: Switch between light and dark themes
- Import/Export: Backup or restore your configuration
- macOS 10.13 (High Sierra) or later
- Administrator privileges required for system-wide proxy changes
- Windows 10 or later
- Administrator privileges required for system-wide proxy changes
-
Administrator Rights: The application requires administrator/sudo privileges to modify system proxy settings. On first run, you may be prompted for your password.
-
Network Interface Detection: On macOS, the app automatically detects your active network interface (Wi-Fi, Ethernet, etc.). If detection fails, it defaults to "Wi-Fi".
-
Proxy Application:
- On macOS: Uses
networksetupcommands to configure system proxies - On Windows: Uses
netsh winhttpcommands to configure system proxies
- On macOS: Uses
-
Security:
- Proxy credentials are stored in the application's secure store
- Configuration files are stored locally in the app's data directory
- Consider using password protection for sensitive configurations
- Ensure you have administrator privileges
- Check if another application is managing system proxy settings
- Verify the proxy server details are correct
- Use the "Test Proxy" button to verify connectivity
On macOS, you may need to grant Terminal/iTerm full disk access:
- System Preferences → Security & Privacy → Privacy → Full Disk Access
If you encounter build errors:
- Ensure all dependencies are installed:
npm install - Check Node.js version compatibility
- For macOS builds, ensure you're on macOS (or use CI/CD)
- For Windows builds, ensure you're on Windows (or use CI/CD)
The application is modular and easy to extend:
modules/proxyManager.js: Proxy profile operationsmodules/rulesEngine.js: URL pattern matching logicmodules/logger.js: Logging functionalitymain.js: Main process and IPC handlersrenderer.js: UI logic and event handling
Currently, proxy testing is done through the UI. Future enhancements could include:
- Automated test suite
- Unit tests for modules
- Integration tests for proxy application
MIT License - feel free to use and modify as needed.
Contributions are welcome! Please feel free to submit a Pull Request.
For issues, bugs, or feature requests, please open an issue on the repository.
- Built with Electron
- Uses electron-store for configuration
- Uses electron-log for logging
- Proxy agent functionality via proxy-agent