nightcrawler

Tor control interface and anonymizer

Usage no npm install needed!

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

README

Nightcrawler

Nightcrawler is a Tor control interface and IP hopper. This does not magically proxy all your node connections through Tor, so you need to explicitly use your proxy in the requests you make.

Requirements

You need to install Tor, and set up a Tor-backed HTTP proxy to be able to use this module.

  • Tor (Not Tor Bundle, just Tor).
  • Polipo, or other web proxy.

See Using Tor with Polipo

You also have to enable Tor's control interface in your torrc configuration file by adding the lines:

  • ControlPort 9051 - The port of Tor's control interface. 9051 is the default.
  • HashedControlPassword myhashedpassword - Your hashed password. To hash your password, see --hash-password.

See Advanced Tor usage

Installation

npm install nightcrawler

How to use

Todo: write better documentation.
var settings = {

    // Your Tor-Backed HTTP proxy URL
    proxy: 'http://localhost:8118',

    // Tor's control interface port and password
    tor: {
        password: ``,
        port: 9051,
    },
};

var nightcrawler  =  new Nightcrawler(settings);

// Changes Tor's IP.
nightcrawler.changeIp().then( function(ip) {
    console.log(ip) // New external IP
});

// Get the current IP
nightcrawler.getIp().then( function(ip) {
    console.log('My current IP is: '+ip);
})

// My IP will now change every minute
nightcrawler.conceal(60);

// My IP will stop changing
nightcrawler.conceal(0);


nightcrawler.info().then( function(info) {

    console.log(info.usingTor); // True or False. Are you using Tor?
    console.log(info.ip);       // Your current external IP

});
Why a factory and not a singleton?

Because multiple nightcrawlers may be instanciated using multiple HTTP proxies.

Tests

make test

Cheers.