DEV Community

Cover image for Run Node.js scripts from under a TOR / HTTP proxy
Konstantin Tarkus
Konstantin Tarkus

Posted on • Edited on

4 2

Run Node.js scripts from under a TOR / HTTP proxy

Requirements:

$ npm install got socks-proxy-agent cross-spawn --save
Enter fullscreen mode Exit fullscreen mode
const got = require("got");
const spawn = require("cross-spawn");
const { SocksProxyAgent } = require("socks-proxy-agent");

// Launch a TOR proxy via Docker
// @see https://github.com/osminogin/docker-tor-simple
const proxy = spawn("docker", [
  ...["run", "--rm", "-i", "-a", "stdout"],
  ...["-p", "127.0.0.1:9050:9050/tcp"],
  ...["osminogin/tor-simple:latest"],
]);

// Wait until the socks5 proxy server is up and running
proxy.stdout.on("data", (data) => {
  process.stderr.write(data);
  if (data.toString().includes("Opened Socks listener")) {
    run().finally(() => proxy.kill("SIGINT"));
  }
});

// Configure an HTTP client using socks5 proxy
const client = got.extend({
  agent: {
    https: new SocksProxyAgent("socks5://localhost:9050"),
  },
});

// TODO: Write some code that requires a proxy
async function run() {
  const body = await client.get("https://jsonip.com/").json();
  console.log("Client IP:", body.ip);
}
Enter fullscreen mode Exit fullscreen mode

Links

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay