proxysocket
is a nodejs module for seamlessly making socket connections via a
SOCKS5 proxy. Use it in place of a regular net.Socket
to easily talk over
Tor or an SSH tunnel.
Available on npm for easy install:
npm install proxysocket
You can also download a release manually and
extract it as proxysocket
has no dependencies.
Because proxysocket
provides the same API as a regular net.Socket
object
you can use it in many places where sockets and streams are used.
Create a new socket that will use the proxy:
var proxysocket = require('proxysocket');
var socket = proxysocket.create('localhost', 9050);
The returned object behaves like an ordinary net.Socket
object.
For example, you can call connect()
or listen for events:
socket.connect('website.com', 80, function () {
// Connected
});
socket.on('data', function (data) {
// Receive data
});
Also note if you're using Tor it's fine to pass .onion
hosts:
socket.connect('p4fsi4ockecnea7l.onion', 6667);
You can use proxysocket.createAgent()
to create an object
like http.Agent
which will make proxy sockets for you when using
http.request()
. Here is an example:
var proxysocket = require('proxysocket');
var http = require('http');
var agent = proxysocket.createAgent();
http.request({
host: 'foo.com',
agent: agent
});
Create a new socket object that uses a SOCKS5 proxy provided.
socksHost
is the host of the proxy. Default islocalhost
socksPort
is the port of the proxy. Default is9050
socket
can be an existingnet.Socket
object. Default is anew Socket()
Returns an object like http.Agent
which makes new sockets
using proxysocket.create()
as needed.
The object returned from proxysocket.create()
is just like a regular
net.Socket
. This documentation lists additions to the API.
Note This documentation doesn't list all of the methods, properties,
or events of net.Socket
, Readable
or Writable
. See the nodejs
API reference for those modules.
Get the host address of the proxy. By default this will be localhost
.
Get the port of the proxy. By default this will be 9050
.
Get the underlying raw net.Socket
connection to the proxy. You don't need
to use this and instead should listen on this
socket instead.
socksdata
is emitted whenever underlying data is received from the proxy
before the socket is ready for use. This is mainly here for debugging and you
should use the data
event instead.
Please fork and make a pull request if you have anything cool to add. You're also welcome to join the Gitter chat.