Utilisez Shifter avec Node.js
Intégrez les proxies résidentiels et ISP de Shifter dans n'importe quel projet Node.js en quelques minutes. Fonctionne parfaitement avec axios, le fetch natif (Node 18+), got, undici, Puppeteer et Playwright.
Démarrage rapide
Installer
npm install axios https-proxy-agent Utilisation de base
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const proxyUrl =
"customer-USERNAME-country-us-sid-123ABC:PASSWORD@p.shifter.io:443";
const agent = new HttpsProxyAgent(proxyUrl);
const { data } = await axios.get("https://ipinfo.io/json", {
httpsAgent: agent,
proxy: false,
});
console.log(data);
// { ip: "154.16.xxx.xxx", city: "New York", country: "US", ... } Fonctionnalités
Exemples
axios + Session Persistante Géociblée
Épinglez une IP résidentielle pour toute une session utilisateur en ajoutant un `sid` au nom d'utilisateur. Ajoutez `country-uk`, `city-london` ou `asn-7922` pour un ciblage géographique.
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
import { randomBytes } from "node:crypto";
const sid = randomBytes(4).toString("hex");
const proxyUrl =
`customer-USERNAME-country-uk-city-london-sid-${sid}-ttl-300:` +
`PASSWORD@p.shifter.io:443`;
const client = axios.create({
httpsAgent: new HttpsProxyAgent(proxyUrl),
proxy: false,
timeout: 30_000,
headers: {
"User-Agent":
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
},
});
const login = await client.post("https://example.com/login", {
email: "user@example.com",
password: "secret",
});
const dashboard = await client.get("https://example.com/dashboard");
const orders = await client.get("https://example.com/orders");
console.log(login.status, dashboard.status, orders.status); Fetch natif (Node 18+) avec undici
Si vous utilisez Node 18 ou une version plus récente, vous n'avez pas besoin d'axios — utilisez le fetch global avec un ProxyAgent undici. L'empreinte la plus légère possible.
import { ProxyAgent, setGlobalDispatcher } from "undici";
const proxyAgent = new ProxyAgent({
uri: "http://p.shifter.io:443",
token: `Basic ${Buffer.from(
"customer-USERNAME-country-us-sid-456DEF:PASSWORD",
).toString("base64")}`,
});
setGlobalDispatcher(proxyAgent);
const r = await fetch("https://api.example.com/products?page=1");
const json = await r.json();
console.log(json); Puppeteer avec Proxy Authentifié
Faites transiter Chromium par Shifter et authentifiez-vous via page.authenticate(). Combinez `sid` avec les cookies au niveau du navigateur pour maintenir une session stable pendant toute l'exploration.
import puppeteer from "puppeteer";
const PROXY_HOST = "p.shifter.io";
const PROXY_PORT = 443;
const PROXY_USER = "customer-USERNAME-country-de-sid-789GHI";
const PROXY_PASS = "PASSWORD";
const browser = await puppeteer.launch({
args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`],
headless: "new",
});
const page = await browser.newPage();
await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });
await page.setUserAgent(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
);
await page.goto("https://example.com", { waitUntil: "networkidle0" });
const title = await page.title();
const html = await page.content();
console.log(title, html.length, "bytes");
await browser.close(); Playwright (multi-navigateur)
Les options de lancement de Playwright acceptent les proxies nativement, avec les identifiants intégrés. La même configuration fonctionne pour Chromium, Firefox et WebKit.
import { chromium } from "playwright";
const browser = await chromium.launch({
proxy: {
server: "http://p.shifter.io:443",
username: "customer-USERNAME-country-fr-city-paris-sid-ABC123",
password: "PASSWORD",
},
});
const context = await browser.newContext({
userAgent:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
});
const page = await context.newPage();
await page.goto("https://example.com");
const headlines = await page.locator(".headline").allTextContents();
console.log(headlines);
await browser.close(); Foire aux questions
Questions fréquentes sur l'utilisation de Shifter avec Node.js.
Passez un https-proxy-agent (ou http-proxy-agent pour du HTTP simple) dans l'option httpsAgent, et définissez proxy: false pour qu'axios utilise l'agent directement. Le format de l'URL du proxy est `http://USER:PASS@p.shifter.io:443`. La même instance axios peut ensuite être réutilisée pour plusieurs requêtes.
Oui. Le fetch global dans Node 18+ utilise undici en arrière-plan. Créez un ProxyAgent undici avec l'URI du proxy et le jeton d'authentification basique, puis appelez setGlobalDispatcher(proxyAgent). Chaque appel fetch effectué ensuite transitera par Shifter.
Ajoutez un identifiant de session au nom d'utilisateur — par exemple `customer-USERNAME-country-us-sid-123ABC`. Chaque requête partageant le même sid réutilisera la même IP résidentielle. Ajoutez `ttl-300` pour conserver cette IP pendant 300 secondes maximum.
Oui. Pour Puppeteer, passez --proxy-server dans les arguments de lancement et appelez page.authenticate() avec les identifiants du proxy. Pour Playwright, définissez le champ proxy dans les options de lancement avec server, username et password — fonctionne de manière identique avec Chromium, Firefox et WebKit.
Ajoutez des sélecteurs de pays, région, ville et ASN au nom d'utilisateur du proxy. Par exemple, `customer-USERNAME-country-uk-city-london-sid-456DEF` retourne des IP à Londres. La même syntaxe fonctionne avec toutes les bibliothèques HTTP Node — aucun SDK requis.
Aucun SDK n'est requis. La passerelle de Shifter utilise le protocole HTTP / SOCKS5 standard sur un seul point de terminaison. Configurez le proxy avec le client HTTP que vous utilisez déjà et c'est tout.
Commencer à utiliser Shifter avec Node.js
Ajoutez les 205M+ proxies résidentiels et ISP de Shifter à votre stack Node.js en moins de 5 minutes. Rotation par requête, sessions persistantes et prise en charge complète de Puppeteer / Playwright.