Lancez avec un proxy et authentifiez-vous#
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#
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-Languageet le fuseau horaire du pays de sortie :page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"})etpage.emulateTimezone(\"Europe/Berlin\"). - Désactivez les fuites WebRTC avec
--force-webrtc-ip-handling-policy=disable_non_proxied_udpdans 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ôme | Parce que | Corriger |
|---|---|---|
| net :: ERR_TUNNEL_CONNECTION_FAILED | La passerelle a refusé le CONNECT : informations d'identification, paramètre ou pas de sortie | Reproduisez avec cURL -v pour lire le code de la passerelle |
| net :: ERR_PROXY_AUTH_UNSUPPORTED / invites | Authenticate() appelé après la navigation | Appelez page.authenticate avant d'aller à |
| Même IP dans tous les navigateurs | Même identifiant de session réutilisé | Utilisez un -sid- distinct par navigateur ou omettez-le |
| Premier chargement très lent | Sortie du ménage plus page lourde | Bloquer 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.