Socket
Socket
Sign inDemoInstall

@sansamour/node-socks

Package Overview
Dependencies
7
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @sansamour/node-socks

A simple SOCKS/HTTP/HTTPS proxy implementation


Version published
Maintainers
1
Install size
1.19 MB
Created

Readme

Source

SOCKS/HTTP/HTTPS proxy implementation in node.js

A simple SOCKS/HTTP/HTTPS proxy implementation and demo proxy in node.js <http://nodejs.org>_.

It supports both socks5/socks4/socks4a/http/https proxy You can run it easily as:

node ./test/socksproxy5.js

node ./test/socksproxy4.js

node ./test/httpproxy.js

Under windows you can run run.vbs

This will create a proxy socks5 at 127.0.0.1 on port 8888.

This will create a proxy socks4 socks4a at 127.0.0.1 on port 9999.

This will create a proxy http https at 127.0.0.1 on port 8080.

All with user:password is user:pass

You can use this as a good starting point for writing a proxy or a tunnel!

Features

  • Supports SOCKS v4, v4a, and v5 proxy.
  • Supports HTTP/HTTPS proxy.
  • Supports the CONNECT and ASSOCIATE for SOCKS v5.
  • Supports user/pass authentication.
  • Supports Banned IPs.
  • Supports SSH relay (since v1.1.0).

Installation

npm install @sansamour/node-socks

Usage

// TypeScript
import { http, socks4, socks5 } from '@sansamour/node-socks';

// ES6 JavaScript
import { http, socks4, socks5 } from '@sansamour/node-socks';

// Legacy JavaScript
const socks5 = require('@sansamour/node-socks').socks5;

http.createServer(options);
socks4.createServer(options);
socks5.createServer(options);

Options

  • authorization - (< function >validateUserPassword) A function with two parameters (user, password).

  • fileBannedIPs - File location with content banned IPs semicolon separated.

  • onAccept - A callback function with four parameters (socket, info, accept, deny)

    • info < object > {srcAddr, srcPort, dstAddr, dstPort, numClients}
  • ssh - < object > {host, port, username, password}

  • timeout (< number > miliseconds) default: 60000

Quick Start Example

Create SOCKS v5 server: socks5://user:pass@127.0.0.1:9999 with file banned IPs ip.txt (semicolon separated)

const { socks5 } = require('@sansamour/node-socks')

socks5.createServer({
	authorization: function(u,p){
		return u == 'user' && p == 'pass'
	},
	port: 9999,
	fileBannedIPs: './ip.txt'
});

With SOCKS v4/v4a proxy server support only Username Authentication (no Password). Create SOCKS v4/v4a server: socks4://user:anypass@127.0.0.1:8888 with file banned IPs ip.txt (semicolon separated)

const { socks4 } = require('@sansamour/node-socks')

socks4.createServer({
	authorization:function(u){
		return u == 'user'
	},
	port: 8888,
	fileBannedIPs: './ip.txt'
});

SSH relay example

const { socks5 } = require('@sansamour/node-socks')

socks5.createServer({	
	port: 9999,
	ssh:{
	    host: '103.92.28.100',
	    port: 22,
	    username: 'root',
	    password: 'xxxx'
	}
});

Example with onAccept: limit number of clients

    onAccept:function(socket, info, accept, deny){
		console.log(info)
		if(info.numClients > 100){
			return deny()
		}
		accept();
	}

Associate Example (UDP Relay) with SOCKS v5

Further Reading:

Detail about this package. http://tutorialspots.com/nodejs-create-socks4socks4asocks5httphttps-proxy-server-with-authentication-5653.html

Please read the SOCKS 5 specifications for more information on how to use Associate. http://www.ietf.org/rfc/rfc1928.txt

License

This work is licensed under the MIT license.

Keywords

FAQs

Last updated on 30 Jun 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc