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);
}
}
})();