Skip to content
Intermediate / 5 min read

Comment utiliser les proxys résidentiels ProxyScrape avec Puppeteer pour le scraping web en Node.js

Un guide étape par étape pour intégrer les proxys résidentiels et datacenter ProxyScrape avec Puppeteer dans Node.js. Apprenez la configuration des proxys HTTP, l'authentification, la rotation et un pont SOCKS5 pour le scraping avancé.

Windows macOS Linux Scraping Web

Aperçu

ProxyScrape propose des proxys résidentiels, datacenter et mobiles avec prise en charge HTTP et SOCKS5. Combiné à Puppeteer, un navigateur Chrome headless pour Node.js, vous pouvez automatiser le scraping web à grande échelle tout en acheminant le trafic via un pool de plus de 97 M d'adresses IP. Ce tutoriel vous montre comment configurer les proxys ProxyScrape dans Puppeteer, vous authentifier, faire tourner les IP et gérer les erreurs courantes.

Prérequis

  • Node.js 16 ou version ultérieure installé. Vous pouvez le télécharger depuis le site officiel de Node.js.
  • Un compte ProxyScrape avec des proxys résidentiels ou datacenter. L'essai gratuit ou un forfait payant fonctionne.
  • Une familiarité de base avec JavaScript et la ligne de commande.

Étape 1 : Créer un nouveau projet Node.js

Ouvrez votre terminal et exécutez :

mkdir puppeteer-proxyscrape
cd puppeteer-proxyscrape
npm init -y
npm install puppeteer

Cela crée un dossier de projet et installe Puppeteer. Notez que Puppeteer télécharge automatiquement une version compatible de Chromium.

Étape 2 : Récupérer les détails de vos proxys ProxyScrape

Connectez-vous à votre tableau de bord ProxyScrape. Accédez à la section de liste des proxys. Vous verrez les détails de connexion pour chaque type de proxy :

  • Proxys résidentiels : Sessions rotatives ou persistantes, avec authentification par nom d'utilisateur/mot de passe.
  • Proxys datacenter : IP statiques, également avec authentification.

Notez les éléments suivants pour le proxy choisi :

  • Hôte (par ex., gateway.proxyscrape.com — vérifiez l'hôte exact dans votre tableau de bord)
  • Port (par ex., 8000 pour HTTP, 1080 pour SOCKS5 — encore une fois, confirmez dans le tableau de bord)
  • Nom d'utilisateur
  • Mot de passe

ProxyScrape fournit généralement des points de terminaison HTTP et SOCKS5. Pour ce tutoriel, nous commencerons par HTTP.

Étape 3 : Lancer Puppeteer avec un proxy HTTP

Créez un fichier nommé scrape.js et ajoutez le code suivant. Remplacez les espaces réservés par vos véritables détails de proxy.

const puppeteer = require('puppeteer');

(async () => {
  const proxyHost = 'gateway.proxyscrape.com';
  const proxyPort = '8000';
  const proxyUser = 'your_username';
  const proxyPass = 'your_password';

  const browser = await puppeteer.launch({
    headless: true,
    args: [
      `--proxy-server=http://${proxyHost}:${proxyPort}`
    ]
  });

  const page = await browser.newPage();

  // S'authentifier auprès du proxy
  await page.authenticate({
    username: proxyUser,
    password: proxyPass
  });

  // Vérifier l'IP du proxy
  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
  const content = await page.content();
  console.log(content);

  await browser.close();
})();

Exécutez le script :

node scrape.js

Vous devriez voir l'adresse IP utilisée par le proxy au lieu de votre véritable IP.

Étape 4 : Faire tourner les proxys avec une liste

Les proxys résidentiels ProxyScrape prennent souvent en charge les sessions rotatives en utilisant différents noms d'utilisateur ou identifiants de session. Un modèle courant consiste à parcourir cycliquement une liste de points de terminaison de proxy. Voici un exemple qui alterne entre deux proxys.

const proxies = [
  { host: 'gateway.proxyscrape.com', port: '8000', user: 'user1', pass: 'pass1' },
  { host: 'gateway.proxyscrape.com', port: '8000', user: 'user2', pass: 'pass2' }
];

(async () => {
  for (const proxy of proxies) {
    const browser = await puppeteer.launch({
      headless: true,
      args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
    });
    const page = await browser.newPage();
    await page.authenticate({ username: proxy.user, password: proxy.pass });

    await page.goto('https://httpbin.org/ip');
    const ip = await page.evaluate(() => document.body.innerText);
    console.log(`Proxy IP: ${ip}`);

    await browser.close();
  }
})();

Pour une rotation à grande échelle, envisagez d'utiliser un gestionnaire de proxys ou une bibliothèque comme proxy-chain pour gérer l'authentification et la rotation de manière centralisée.

Étape 5 : Utiliser des proxys SOCKS5 avec Puppeteer (avancé)

Chromium, le navigateur derrière Puppeteer, ne prend pas nativement en charge les proxys SOCKS5 authentifiés. Si vous devez utiliser les points de terminaison SOCKS5 de ProxyScrape, vous pouvez exécuter un proxy HTTP local qui transfère vers SOCKS5. Une option consiste à utiliser le package npm proxy-chain.

Installez-le :

npm install proxy-chain

Ensuite, créez un serveur proxy local :

const ProxyChain = require('proxy-chain');

(async () => {
  const socksUrl = 'socks5://username:[email protected]:1080';
  const localHttpProxy = await ProxyChain.anonymizeProxy(socksUrl);
  console.log(`Local HTTP proxy: ${localHttpProxy}`);

  // Passer localHttpProxy comme --proxy-server dans Puppeteer
  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${localHttpProxy}`]
  });

  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  console.log(await page.content());
  await browser.close();
})();

Cela fait le lien entre un SOCKS5 authentifié et un proxy HTTP local non authentifié que Chromium peut utiliser.

Dépannage

  • ERR_PROXY_CONNECTION_FAILED : Vérifiez l'hôte et le port. Assurez-vous que votre IP est sur liste blanche si vous utilisez l'authentification par IP. ProxyScrape utilise le nom d'utilisateur/mot de passe par défaut, mais vérifiez à nouveau votre tableau de bord.
  • Fenêtre d'authentification / erreur 407 : Assurez-vous d'appeler page.authenticate() avant de naviguer.
  • Réponses lentes : Essayez un proxy datacenter pour la vitesse ou un proxy résidentiel pour la furtivité. Ajustez les délais d'attente dans Puppeteer.
  • SOCKS5 ne fonctionne pas : Rappelez-vous que Chromium ne prend pas directement en charge l'authentification SOCKS5. Utilisez la solution de contournement proxy-chain ci-dessus.

Résumé

Vous avez appris à configurer les proxys résidentiels et datacenter ProxyScrape avec Puppeteer dans Node.js. Nous avons couvert la configuration des proxys HTTP, l'authentification, la rotation et un pont SOCKS5 pour les cas d'utilisation avancés. Pour une infrastructure fiable, le pool de plus de 97 millions d'IP de ProxyScrape et sa disponibilité stable en font un choix solide pour les projets de scraping web.