Intégrations · Intermédiaire

Utiliser des proxys avec Puppeteer et Chrome sans tête

Définissez un proxy au lancement du navigateur ou dans un contexte de navigateur Puppeteer pris en charge, puis fournissez les informations d'identification avant la navigation. Vérifiez la sortie attribuée dans chaque contexte et conservez les flux de travail indépendants dans des sessions distinctes.

2 minutes de lecture 5 volets Vérifié Équipe éditoriale Proxy Cyber

Lancez avec un proxy et authentifiez-vous#

Noeud.js
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  headless: true,
  args: ["--proxy-server=http://res.proxy-cyber.com:9000", "--no-first-run"],
});
const page = await browser.newPage();
await page.authenticate({ username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" });

await page.goto("https://api.ipify.org", { waitUntil: "domcontentloaded", timeout: 45000 });
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();

Utilisez un identifiant de session distinct pour chaque flux de travail indépendant, lorsque la passerelle attribuée le prend en charge. Confirmez la durée autorisée et les paramètres de localisation dans les détails de votre connexion. Un appareil résidentiel peut se déconnecter avant la durée demandée ; une session persistante n'est pas une garantie de la même IP pendant des jours. Pour une adresse fixe, comparez un produit statique dédié.

Un proxy par navigateur#

Le paramètre --proxy-server au niveau du lancement s’applique au routage par défaut de ce navigateur. Current Puppeteer prend également en charge proxyServer dans browser.createBrowserContext(), avec les informations d'identification fournies via page.authenticate(). Utilisez des contextes distincts pour différents paramètres de proxy et des répertoires de données utilisateur distincts pour les profils persistants ; vérifiez la sortie dans chaque contexte.

Bloquer les images, les polices et les médias#

Demander une interception
await page.setRequestInterception(true);
page.on("request", (req) => {
  const t = req.resourceType();
  if (["image", "media", "font", "stylesheet"].includes(t)) return req.abort();
  req.continue();
});

Cohérence#

  • Ensemble Accept-Language et le fuseau horaire du pays de sortie : page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"}) et page.emulateTimezone(\"Europe/Berlin\").
  • Désactivez les fuites WebRTC avec --force-webrtc-ip-handling-policy=disable_non_proxied_udp dans les arguments de lancement.
  • Gardez un navigateur par compte ; réutiliser son répertoire de données utilisateur si le compte doit ressembler à un appareil de retour.

Erreurs que vous rencontrerez#

SymptômeParce queCorriger
net :: ERR_TUNNEL_CONNECTION_FAILEDLa passerelle a refusé le CONNECT : informations d'identification, paramètre ou pas de sortieReproduisez avec cURL -v pour lire le code de la passerelle
net :: ERR_PROXY_AUTH_UNSUPPORTED / invitesAuthenticate() appelé après la navigationAppelez page.authenticate avant d'aller à
Même IP dans tous les navigateursMême identifiant de session réutiliséUtilisez un -sid- distinct par navigateur ou omettez-le
Premier chargement très lentSortie du ménage plus page lourdeBloquer les ressources ; augmenter le délai d'attente à 45 s

Les questions que les gens posent#

Puppeteer peut-il utiliser SOCKS5 avec un mot de passe ?

Chrome ne prend pas en charge l'authentification SOCKS5. Utilisez le proxy HTTP sur le port 9000 avec page.authenticate, ou ajoutez l'adresse IP de votre serveur à la liste blanche et transmettez --proxy-server=socks5://res.proxy-cyber.com:9001.

Votre compte

Gérez vos proxys dans un seul compte

Comparez les réseaux, passez des commandes et suivez votre solde et vos demandes d'assistance à partir d'un seul tableau de bord. Notre équipe examine les paiements et fournit les détails de connexion après la livraison.

Créer un compte