Skip to content
Docs
Integration

Integration

Code


curl --proxy host:port --proxy-user username:password API_URL

Browser

Selenium

const { Builder, Browser } = require("selenium-webdriver");
const chrome = require("selenium-webdriver/chrome");
const proxyChain = require("proxy-chain");
(async () => {
  const upstreamProxyHost = "gw-us.nstproxy.com";
  const upstreamProxyPort = 24125;
  const username = "username";
  const password = "password";
  const targetUrl = "https://httpbin.org/ip";
  const upstreamProxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@${upstreamProxyHost}:${upstreamProxyPort}`;
  let driver;
  let localProxyUrl;
  try {
    localProxyUrl = await proxyChain.anonymizeProxy({
      url: upstreamProxyUrl,
    });
    console.log(`Local proxy: ${localProxyUrl}`);
    const options = new chrome.Options()
      .addArguments("--headless=new")
      .addArguments(`--proxy-server=${localProxyUrl}`);
    driver = await new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options)
      .build();
    await driver.get(targetUrl);
    console.log(await driver.findElement({ css: "body" }).getText());
  } catch (error) {
    console.error(error.message);
    if (
      error.code === "MODULE_NOT_FOUND" &&
      error.message.includes("selenium-webdriver")
    ) {
      console.error("Run: pnpm add selenium-webdriver");
    }
    if (
      error.code === "MODULE_NOT_FOUND" &&
      error.message.includes("proxy-chain")
    ) {
      console.error("Run: pnpm add proxy-chain");
    }
    process.exitCode = 1;
  } finally {
    if (driver) {
      await driver.quit();
    }
    if (localProxyUrl) {
      await proxyChain.closeAnonymizedProxy(localProxyUrl, true);
    }
  }
})();

puppeteer

const puppeteer = require("puppeteer");
const proxyChain = require("proxy-chain");
(async () => {
  const upstreamProxyHost = "gw-us.nstproxy.com";
  const upstreamProxyPort = 24125;
  const username = "username";
  const password = "password";
  const targetUrl = "https://httpbin.org/ip";
  const upstreamProxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@${upstreamProxyHost}:${upstreamProxyPort}`;
  let browser;
  let localProxyUrl;
  try {
    localProxyUrl = await proxyChain.anonymizeProxy({
      url: upstreamProxyUrl,
    });
    console.log(`Local proxy: ${localProxyUrl}`);
    browser = await puppeteer.launch({
      headless: true,
      args: [`--proxy-server=${localProxyUrl}`],
    });
    const page = await browser.newPage();
    await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
    console.log(await page.evaluate(() => document.body.innerText));
  } catch (error) {
    console.error(error.message);
    if (
      error.code === "MODULE_NOT_FOUND" &&
      error.message.includes("puppeteer")
    ) {
      console.error("Run: pnpm add puppeteer");
    }
    if (
      error.code === "MODULE_NOT_FOUND" &&
      error.message.includes("proxy-chain")
    ) {
      console.error("Run: pnpm add proxy-chain");
    }
    process.exitCode = 1;
  } finally {
    if (browser) {
      await browser.close();
    }
    if (localProxyUrl) {
      await proxyChain.closeAnonymizedProxy(localProxyUrl, true);
    }
  }
})();

playwright

const { chromium } = require("playwright");
const proxyChain = require("proxy-chain");
(async () => {
  const upstreamProxyHost = "gw-us.nstproxy.com";
  const upstreamProxyPort = 24125;
  const username = "username";
  const password = "password";
  const targetUrl = "https://httpbin.org/ip";
  const upstreamProxyUrl = `http://${encodeURIComponent(username)}:${encodeURIComponent(password)}@${upstreamProxyHost}:${upstreamProxyPort}`;
  let browser;
  let localProxyUrl;
  try {
    localProxyUrl = await proxyChain.anonymizeProxy({
      url: upstreamProxyUrl,
    });
    browser = await chromium.launch({
      headless: true,
      proxy: {
        server: localProxyUrl,
      },
    });
    const page = await browser.newPage();
    await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
    console.log(await page.textContent("body"));
  } catch (error) {
    console.error(error.message);
    if (
      error.code === "MODULE_NOT_FOUND" &&
      error.message.includes("proxy-chain")
    ) {
      console.error("Run: pnpm add proxy-chain");
    }
    if (error.message.includes("Executable doesn't exist")) {
      console.error("Run: npx playwright install chromium");
    }
    process.exitCode = 1;
  } finally {
    if (browser) {
      await browser.close();
    }
    if (localProxyUrl) {
      await proxyChain.closeAnonymizedProxy(localProxyUrl, true);
    }
  }
})();