[GH-ISSUE #527] SOCK Proxy Server #524

Open
opened 2026-03-03 19:51:07 +03:00 by kerem · 1 comment
Owner

Originally created by @NghiaTranUIT on GitHub (Aug 1, 2025).
Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/527

Originally assigned to: @kics223w1 on GitHub.

Description

It's time to implement the SOCK Proxy Server.

How to test

  1. Open Proxyman macOS -> Tools Menu -> Proxy Settings -> SOCKS Proxy -> Enable at port 8889
  2. Tools menu -> Proxy Settings -> Turn off Override System Proxy for easily testing
  3. Use Firefox -> Settings -> Proxy -> Set SOCK 5 Proxy to 127.0.0.1 at port 8889
  4. Visit many websites -> Verify:

how to implement it

  1. in proxy.js, instead of creating a HTTP or HTTPS server with self.httpServer = http.createServer();, we create a SOCK Proxy
  2. When the new connection is established, reuse the same logic from cthe urrent proxy.js

Acceptance Criteria

  • UI for SOCK Proxy Server at port 8889 as a default
  • Only support SOCK v5
  • Able to select different port. Like How Proxy Server works, if this port is occupied -> Show error
  • When lauching the app and SOCK Proxy Server is enabled -> Start the SOCK Server, if it's occupied -> don't start the server
  • SOCK Proxy and Normal Proxy can work together.
  • Write Unit tests - maybe use cURL with --sock option
Originally created by @NghiaTranUIT on GitHub (Aug 1, 2025). Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/527 Originally assigned to: @kics223w1 on GitHub. ## Description It's time to implement the SOCK Proxy Server. ## How to test 1. Open Proxyman macOS -> Tools Menu -> Proxy Settings -> SOCKS Proxy -> Enable at port 8889 2. Tools menu -> Proxy Settings -> Turn off Override System Proxy for easily testing 3. Use Firefox -> Settings -> Proxy -> Set SOCK 5 Proxy to 127.0.0.1 at port 8889 4. Visit many websites -> Verify: - Proxyman can capture HTTP and HTTPS traffic - Can decrypt HTTPS as normal - WS and WSS works (https://echo.websocket.org/.ws) - Debugging tools work fine ## how to implement it 1. in proxy.js, instead of creating a HTTP or HTTPS server with `self.httpServer = http.createServer();`, we create a [SOCK Proxy](https://www.npmjs.com/package/socks) 2. When the new connection is established, reuse the same logic from cthe urrent proxy.js ## Acceptance Criteria - [x] UI for SOCK Proxy Server at port 8889 as a default - [x] Only support SOCK v5 - [x] Able to select different port. Like How Proxy Server works, if this port is occupied -> Show error - [x] When lauching the app and SOCK Proxy Server is enabled -> Start the SOCK Server, if it's occupied -> don't start the server - [x] SOCK Proxy and Normal Proxy can work together. - [x] Write Unit tests - maybe use cURL with --sock option
Author
Owner

@NghiaTranUIT commented on GitHub (Aug 1, 2025):

<!-- gh-comment-id:3143815552 --> @NghiaTranUIT commented on GitHub (Aug 1, 2025): - [x] Verify SOCK PRoxy works with this case: https://github.com/ProxymanApp/Proxyman/issues/2107#issuecomment-2466646065
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/proxyman-windows-linux#524
No description provided.