SOCKS v5 proxy server implementation in JavaScript for Node.js.
- CONNECT CMD.
- UDP Associate CMD.
- IPv6 support.
- Authentication support.
- Better DOCS.
Install the library from npm:
$ npm install socks5.js --save
Then require it:
const socks5 = require("socks5.js")
// or
import socks5 from "socks5.js"
The function socks5
used to create a new SOCKS5 server, here is an example usage:
var socks5 = require('socks5.js')
var net = require('net')
var udp = require('dgram')
var server = socks5({
debug: true,
port: 1080,
host: '::',
handleConnect: (sock, accept, deny, info) => {
var socket = net.connect(info.dstPort, info.dstAddress)
socket.on('connect', () => {
accept()
sock.pipe(socket)
socket.pipe(sock)
})
socket.on('error', err => console.error(err))
},
handleUdpAssociate: (msg, accept, deny, info) => {
var socket = udp.createSocket('udp4')
socket.on('error', err => {
console.error('Error: ' + err)
socket.close()
})
socket.once('message', (msg, rinfo) => {
accept(msg)
socket.close()
})
socket.send(msg, info.dstPort, info.dstAddress)
}
}, err => {
if (!err) {
var { address, port } = server.address()
console.log(`SOCKS5 proxy server started on ${address}:${port}!`)
} else {
if (err.code === 'EADDRINUSE') {
log('Address in use, retrying...')
setTimeout(() => {
server.close()
server.start()
}, 10000)
}
}
})
- SOCKS v5 spec (rfc1928).
- @sansamour/node-socks library.
- Using nodejs to implement Socks5 protocol - developpaper.com.
Give this cool project a star ⭐! I will appreciate it ❤