Put some nice SOCKS on your HTTP only program
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
test bump dep and update tests Nov 22, 2016
.gitignore basic http support Jan 10, 2015
.travis.yml only test node v0.11 for now Jan 11, 2015
CHANGELOG.md changelog update Nov 22, 2016
LICENSE.md add some document and licenses Jan 11, 2015
README.md Update README.md Jan 11, 2015
package.json 1.0.4 Nov 22, 2016



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.