Put some nice SOCKS on your HTTP only program
Latest commit 5588661 Nov 22, 2016 @bitinn 1.0.4



npm version build status

Put some nice SOCKS on your HTTP only program


Driven by my burning desire to tunnel npm install requests through a SOCKSv5 proxy (eg. shadowsocks). Since npm only support HTTP proxy, I wrote this simple command line module to fire up a HTTP Proxy server, then use it to tunnel requests to my SOCKS proxy.


  • Supports HTTP and HTTPS requests
  • Built-in DNS cache
  • 150 loc, does nothing else


npm install kneesocks --production -g


kneesocks port1 port2, eg. kneesocks 10001 10002

  • port1 is the port your HTTP proxy server listen to on localhost.
  • port2 is the port of your existing SOCKS proxy, also on localhost.

Then you can set your npm config:

  • npm config set http
  • npm config set https-proxy

To revert proxy config, use npm config delete http and npm config delete https-proxy.

To debug, use DEBUG=proxy kneesocks port1 port2


  • Node v0.10+ required (Node v0.11+ preferred).
  • Probably not the best solution for day-to-day browsing, due to lack of remote dns and websocket support.
  • If you don't mind building binaries, use DeleGate or Polipo instead.