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

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more