socks5.js

SOCKS v5 proxy server implementation in JavaScript for Node.js.

Usage no npm install needed!

<script type="module">
  import socks5Js from 'https://cdn.skypack.dev/socks5.js';
</script>

README


socks5.js

npm

SOCKS v5 proxy server implementation in JavaScript for Node.js.


Table of Contents

Features

  • CONNECT CMD.
  • UDP Associate CMD.

TODO

  • IPv6 support.
  • Authentication support.
  • Better DOCS.

Installation:

Install the library from npm:

$ npm install socks5.js --save

Then require it:

const socks5 = require("socks5.js")
// or
import socks5 from "socks5.js"

Usage:

socks5(opts: object, callback: function)

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)
        }
    }
})

Resources

Notes

Give this cool project a star ⭐! I will appreciate it ❤

GitHub Repo stars

License

MIT © iMrDJAi