🔥 Tous les proxies résidentiels et mobiles – seulement $1. Essayez maintenant!

Comment utiliser un proxy dans Puppeteer

Comment utiliser un proxy dans Puppeteer

Puppeteer est l’une des bibliothèques Node.js les plus populaires et un outil puissant pour l’automatisation de tâches telles que le web scraping, les tests, la recherche SEO ou le suivi des prix via les navigateurs Chrome ou Chromium. Si vous avez déjà travaillé avec un flux de travail automatisé à grande échelle, vous connaissez déjà ce problème : les sites web limitent le débit et restreignent votre connexion, bloquent les requêtes sur-le-champ, voire mettent votre adresse IP sur liste noire.

Non seulement ces complications finissent par vous coûter un temps et un argent précieux, mais elles peuvent également avoir un impact considérable sur le score de fiabilité de votre adresse personnelle et, par conséquent, sur toutes vos futures activités en ligne. Heureusement, il existe une méthode qui permet de résoudre ces problèmes sans effort, tout en vous aidant à contourner les restrictions géographiques et à répartir les requêtes automatisées afin d’améliorer le taux de réussite et la vitesse de connexion. Je parle bien sûr des proxys.

Dans cet article, nous allons déterminer précisément pourquoi vous avez besoin de proxys et quel type de proxy correspond à votre projet, puis nous aborderons les principes de base de la configuration, de l’authentification et de l’importance des protocoles. De plus, je vous recommanderai un excellent fournisseur qui s’est révélé particulièrement efficace pour mes propres pipelines d’automatisation.

Qu’est-ce qu’un mandataire de marionnettiste et pourquoi en avez-vous besoin ?

Un proxy Puppeteer sert d’intermédiaire entre votre script automatisé et le site web ciblé. En acheminant vos requêtes via le serveur dédié du fournisseur, le proxy masque votre véritable adresse IP, de sorte que le site cible voie l’adresse IP du proxy et non la vôtre.

Cela dit, le masquage d’adresse IP n’est que la partie émergée de l’iceberg. Voici la liste complète des avantages qu’un proxy apporte à votre flux de travail Puppeteer :

  • Éviter les blocages d’adresses IP, la limitation de débit et la réduction de vitesse: les sites web restreignent souvent l’accès aux adresses IP qui effectuent un grand nombre de requêtes consécutives. Si elle n’est pas carrément bloquée, votre connexion peut être considérablement ralentie ou submergée de CAPTCHA. Un pool de proxys rotatifs bien configuré résout ce problème : même si l’une de vos adresses IP est bloquée, une autre prend le relais pour garantir un flux de travail ininterrompu.
  • Contourner les restrictions géographiques: une grande partie du contenu Internet est masquée par des restrictions géographiques ou modifiée en fonction de la localisation d’où provient la requête. Les proxys résidentiels vous permettent d’obtenir une adresse n’importe où dans le monde avec une précision extrême (États, villes ou codes postaux spécifiques) et de naviguer comme si vous vous trouviez physiquement dans cette région.
  • Amélioration des taux de réussite des requêtes: la répartition des requêtes sur un pool de proxys réduit considérablement les échecs de connexion et les délais d’expiration, en particulier lors de tâches de scraping intensives.

Cela s’avère extrêmement utile, voire indispensable, dans les cas suivants :

  • le web scraping à grande échelle
  • La vérification des publicités
  • Le suivi du référencement naturel
  • L’assurance qualité et les tests
  • La localisation

En bref, si vous utilisez Puppeteer pour autre chose qu’un simple test ponctuel, les proxys sont indispensables : un réseau de proxys de haute qualité fait souvent la différence entre un script fragile et un pipeline de données fiable.

Puppeteer : VPN ou proxy ? Lequel choisir ?

Lorsqu’on aborde le sujet des outils de contournement, une question revient immanquablement : faut-il privilégier un proxy ou un VPN ? Chacun présente ses avantages et ses inconvénients, et tous deux peuvent donner d’excellents résultats s’ils sont utilisés correctement et dans le cadre d’un cas d’usage approprié. Cet article étant consacré à l’automatisation avec Puppeteer, examinons quel outil est le plus adapté aux flux de travail de Puppeteer.

Du point de vue de l’utilisateur, les VPN et les proxys sont assez similaires : tous deux masquent votre adresse IP en vous en attribuant une nouvelle. Cependant, les similitudes s’arrêtent là. Un VPN achemine tout le trafic de votre appareil via un tunnel crypté pour vous connecter au serveur du fournisseur. À partir de là, vous pouvez naviguer librement sur l’ensemble du Web.

Les serveurs proxy, quant à eux, masquent votre adresse IP uniquement auprès d’un seul site web ou d’une seule application (celui ou celle auquel vous vous connectez) à la fois, tandis que le chiffrement est déterminé par le protocole choisi : HTTP n’offre aucun chiffrement, HTTPS est utilisé pour un chiffrement de base et SOCKS5 pour un chiffrement maximal.

Pourquoi est-ce important ?

Ces deux différences majeures sont ce qui distingue le plus les outils de contournement lorsqu’il s’agit de les utiliser. Le chiffrement des VPN en fait un outil idéal pour la confidentialité et l’anonymat en ligne des particuliers, tandis que la faible charge des proxys leur permet de maintenir des débits élevés et de gérer simultanément des volumes considérables de trafic utilisateur. De plus, en acheminant l’intégralité de votre trafic, le VPN ne peut vous fournir qu’une seule adresse IP à la fois, tandis que les proxys offrent autant de connexions simultanées que vous le souhaitez.

Voici un tableau comparatif pour une meilleure visualisation :

VPN Proxy
Masquage d’adresse IP Oui Oui
Chiffrement Oui, l’ensemble du trafic de l’appareil Uniquement avec le protocole SOCKS5, par site web/par application
Vitesse Moyenne Élevée
Connexions simultanées Une seule adresse IP à la fois Plusieurs adresses IP simultanées
Contrôle de la rotation Limité Intégré
Précision du ciblage géographique Limitée (au niveau du pays) Ville, région, code postal, niveau ASN (selon le fournisseur)
Gestion des CAPTCHA et des blocages Intervention manuelle requise Géré par la rotation automatique
Évolutivité Limitée Très évolutive
Idéal pour Un usage personnel L’automatisation à grande échelle

Bien que les VPN puissent en théorie être intégrés à votre script Puppeteer, le résultat d’une telle démarche est loin d’être idéal. En d’autres termes, les VPN sont davantage adaptés à la navigation individuelle, tandis que les proxys sont spécialement conçus pour l’automatisation, le scraping, les tests et la collecte de données à grande échelle.

Comment utiliser un proxy dans Puppeteer : configuration de base avec des données de disquette

Passons maintenant à la configuration du proxy et à l’intégration de Puppeteer. Pour la configuration et la démonstration du proxy, j’utiliserai Floppydata.

Floppydata est depuis un certain temps déjà mon fournisseur de proxys de prédilection. Le service garantit une disponibilité constante de 99,99 % et des scores de fiabilité élevés, offrant ainsi une connexion ininterrompue pour tout pipeline automatisé. En plus de ses performances exceptionnelles, Floppydata propose l’un des meilleurs tarifs du marché : seulement 1 $/Go pour les adresses IP tournantes et 5 $/IP pour les proxys FAI. Ce service convient donc parfaitement aux utilisateurs qui mènent des opérations à grande échelle ou traitant d’importants volumes de données, tout en veillant à respecter leur budget.

Page d'accueil du service d'accès aux données Web

La première étape pour intégrer des proxys à votre script Puppeteer consiste à vous procurer un proxy. Avec Floppydata, cela ne prend que quelques clics.

Une fois connecté, vous accéderez au tableau de bord de Floppydata. Commencez par choisir une formule adaptée, puis passez au paiement. Pour les flux de travail automatisés, je vous recommande la formule « Rotating proxy », qui comprend trois types d’adresses IP (résidentielles, mobiles et de centre de données) entre lesquelles vous pouvez basculer à votre guise.

Les étapes suivantes sont on ne peut plus simples : même si vous ne connaissez pas bien les services de proxy, l’interface épurée de Floppydata vous garantit de ne pas vous perdre.

Accédez à l’onglet « Obtenir les identifiants du proxy » dans la barre latérale de gauche. Vous y trouverez un nom d’utilisateur et un mot de passe associés à votre compte, mais pour les besoins de cette démonstration, créons un profil dédié à Puppeteer : cela permettra de générer un nouveau proxy avec une authentification déjà intégrée. Comme vous pouvez le constater, vous pouvez créer autant de sous-utilisateurs distincts que vous le souhaitez, ce qui simplifie considérablement les processus de gestion ultérieurs.

Il vous suffit ensuite de sélectionner les paramètres requis dans les listes déroulantes proposées. Au fur et à mesure que vous renseignez les informations, celles-ci sont intégrées en temps réel dans la chaîne de proxy. Une fois que vous êtes satisfait des paramètres, il vous suffit de copier un extrait de code ou la chaîne de proxy.

Pour cette démonstration, concentrons-nous sur le fonctionnement de la configuration de base avec une chaîne de proxy. Voici un extrait de code illustrant une intégration de proxy :

Proxy Puppeteer avec authentification – méthode page.authenticate

Installation :

bash
npm install puppeteer

Configuration de base :

javascript
const puppeteer = require('puppeteer');

(async () => {
    const PROXY_USER = 'user123-type-residential-country-US-session-pup01';
    const PROXY_PASS = 'your_password';
    const PROXY_SERVER = 'geo.g-w.info:10080';

    const browser = await puppeteer.launch({
        args: [`--proxy-server=${PROXY_SERVER}`]
    });

    const page = await browser.newPage();

    // Authenticate
    await page.authenticate({
        username: PROXY_USER,
        password: PROXY_PASS
    });

    // Navigate
    await page.goto('https://httpbin.org/ip');

    const content = await page.content();
    console.log(content);

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

Une fois le code configuré, il vous suffit de copier-coller vos identifiants de proxy depuis le tableau de bord de Floppydata aux emplacements correspondants : votre nom d’utilisateur (la chaîne complète que nous avons copiée dans le GIF ci-dessus) dans le champ « PROXY_USER », et votre mot de passe dans le champ « PROXY_PASS ». PROXY_SERVER suit une structure simple hostname:port au format suivant, où « hostname » correspond à geo.g-w.info et où les plages de ports sont définies par le protocole choisi : 10080 pour HTTP, 10443 pour HTTPS et 10800 pour SOCKS5.

Cette méthode inclut également une authentification native, prenant en charge à la fois les protocoles HTTP et HTTPS : saisissez votre nom d’utilisateur et votre mot de passe à l’adresse page.authenticate pour intégrer immédiatement votre proxy avec l’authentification, sans configuration supplémentaire ni création de nouvelles pages.

Authentification via une chaîne de proxys

Une autre méthode d’authentification par proxy, principalement utilisée pour les messages d’erreur personnalisés, les réponses personnalisées et la mesure des statistiques de trafic, ou si vous avez besoin d’intégrer directement des identifiants dans l’URL du proxy, est le package npm proxy-chain. L’élément essentiel de cette méthode est anonymizeProxy(proxy), qui lance un serveur proxy local.

Installation :

bash
npm install proxy-chain

Configuration :

javascript
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');

const PROXY_SERVER = 'geo.g-w.info:10080';
const PROXY_USER = 'user123-type-residential-country-US-session-pup01';
const PROXY_PASS = 'your_password';

(async () => {
    const proxy = `http://${PROXY_USER}:${PROXY_PASS}@${PROXY_SERVER}`;

    const anonymizedProxy = await proxyChain.anonymizeProxy(proxy);

    const browser = await puppeteer.launch({
        args: [`--proxy-server=${anonymizedProxy}`],
    });

    const page = await browser.newPage();
    await page.goto('https://httpbin.org/ip');
    await page.screenshot({ path: 'example2.png' });

    await browser.close();
    await proxyChain.closeAnonymizedProxy(anonymizedProxy, true);
})();

Pour cette méthode, vous aurez besoin des mêmes identifiants que précédemment, ainsi que de l’URL de votre proxy au format suivant : Protocol://Username:Password@Hostname:Port. Vous trouverez une chaîne prête à l’emploi sur le tableau de bord de Floppydata, juste en dessous de la configuration du proxy : cliquez sur « Chaînes proxy », puis sur « Sous forme de liste », et choisissez le format parmi ceux proposés dans la liste déroulante.

Interface de configuration des paramètres de proxy

Utilisation d’un proxy avec Puppeteer à grande échelle : bonnes pratiques d’intégration d’un proxy avec Puppeteer

Une fois que votre configuration de base du proxy fonctionne, vous pouvez passer à l’extension de votre pipeline pour la production. Dans ce cas, un seul proxy statique ne suffira pas ; voyons comment mettre en place un pool de proxys à rotation dans Puppeteer.

Rotation aléatoire

Installation :

bash
npm install puppeteer

Configuration :

javascript
const puppeteer = require('puppeteer');

const PROXY_PASS = 'your_password';
const PROXY_SERVER = 'geo.g-w.info:10080';
const PROXY_POOL = [
    'user123-type-residential-country-US-session-pup01',
    'user123-type-residential-country-US-session-pup02',
    'user123-type-residential-country-US-session-pup03',
    'user123-type-residential-country-US-session-pup04',
];
const getRandomProxy = () => PROXY_POOL[Math.floor(Math.random() * PROXY_POOL.length)];

const urls = [
    'https://httpbin.org/ip',
    'https://httpbin.org/ip',
    'https://httpbin.org/ip',
];

(async () => {
    for (const url of urls) {
        const PROXY_USER = getRandomProxy();

        const browser = await puppeteer.launch({
            args: [`--proxy-server=${PROXY_SERVER}`]
        });

        const page = await browser.newPage();

        await page.authenticate({
            username: PROXY_USER,
            password: PROXY_PASS
        });

        await page.goto(url);
        const content = await page.content();
        console.log(`Request via ${PROXY_USER}:`, content);

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

Comme vous pouvez le constater, la principale différence réside ici dans le fait qu’au lieu d’utiliser ` PROXY_USER `, nous utilisons ` PROXY_POOL`. Parallèlement, nous ajoutons une logique de rotation aléatoire grâce à ` Math.floor(Math.random() * PROXY_POOL.length)`.

Rotation séquentielle

Installation :

bash
npm install puppeteer

Configuration :

javascript
const puppeteer = require('puppeteer');

const PROXY_PASS = 'your_password';
const PROXY_SERVER = 'geo.g-w.info:10080';
const PROXY_POOL = [
    'user123-type-residential-country-US-session-pup01',
    'user123-type-residential-country-US-session-pup02',
    'user123-type-residential-country-US-session-pup03',
    'user123-type-residential-country-US-session-pup04',
];

let proxyIndex = 0;
const getNextProxy = () => {
    const proxy = PROXY_POOL[proxyIndex % PROXY_POOL.length];
    proxyIndex++;
    return proxy;
};

const urls = [
    'https://httpbin.org/ip',
    'https://httpbin.org/ip',
    'https://httpbin.org/ip',
];

(async () => {
    for (const url of urls) {
        const PROXY_USER = getNextProxy();

        const browser = await puppeteer.launch({
            args: [`--proxy-server=${PROXY_SERVER}`]
        });

        const page = await browser.newPage();

        await page.authenticate({
            username: PROXY_USER,
            password: PROXY_PASS
        });

        await page.goto(url);
        const content = await page.content();
        console.log(`Request via ${PROXY_USER}:`, content);

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

Ici, nous utilisons une fonction « getNextProxy() » qui utilise un compteur « proxyIndex » avec un opérateur modulo (%) pour parcourir le pool dans l’ordre.

Proxy SOCKS Puppeteer : ce qu’il faut savoir

le protocole SOCKS (Socket Secure), et Proxys SOCKS5 Plus précisément, ils fonctionnent à un niveau réseau inférieur à celui des proxys HTTP/HTTPS. Ce qui les distingue des autres protocoles, c’est leur capacité à gérer tout type de trafic, de la navigation Web standard aux e-mails, en passant par les transferts de fichiers, les connexions P2P et les flux de données en temps réel. Cela est possible car le protocole SOCKS n’interprète ni ne filtre votre trafic comme le font les proxys HTTP ; il se contente de transmettre les paquets TCP et UDP bruts sans aucune modification. De plus, les proxys SOCKS5 offrent le niveau de chiffrement le plus élevé que la couche proxy puisse fournir.

Dans le contexte de Puppeteer, les proxys SOCKS5 présentent plusieurs avantages notables. Leur mécanisme de transfert de paquets de bas niveau se traduit par moins d’erreurs et une latence réduite en cas de charge importante, ce qui facilite grandement l’exécution de pipelines de scraping à grande échelle. Étant donné que Puppeteer peut prendre en charge un large éventail de tâches allant au-delà de la navigation Web classique, notamment la gestion des médias, les connexions WebSocket et le trafic non HTTP, les proxys SOCKS5 constituent un choix tout indiqué, grâce à leur capacité à gérer plusieurs protocoles sans se limiter au seul trafic Web.

Il y a toutefois un hic. Le moteur de Puppeteer, Chromium, ne prend pas en charge de manière native l’authentification par proxy SOCKS5, exigée par la plupart des proxys commerciaux, y compris Floppydata. Si vous essayez d’utiliser la méthode classique page.authenticate, vous obtiendrez très probablement le message d’erreur « ERR_NO_SUPPORTED_PROXIES » ou le navigateur reviendra à une connexion directe, exposant ainsi votre véritable adresse IP.

Il est toutefois possible d’intégrer des adresses IP SOCKS5 dans votre script Puppeteer et de vous authentifier via la méthode ` proxy-chain `. L’utilisation de ` proxy-chain ` fonctionne ici, car cela met en place un tunnel HTTP local qui gère l’authentification SOCKS5 à votre place ; Chromium n’a ainsi jamais à s’en occuper directement. La configuration est dans ce cas légèrement différente :

Installation :

bash
npm install proxy-chain

Configuration :

JavaScript
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');

const PROXY_USER = 'user123-type-residential-country-US-session-pup01';
const PROXY_PASS = 'your_password';
const PROXY_HOST = 'geo.g-w.info';
const PROXY_PORT = '10800';

(async () => {
    const proxy = `socks5://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}`;

    const anonymizedProxy = await proxyChain.anonymizeProxy(proxy);

    const browser = await puppeteer.launch({
        args: [`--proxy-server=${anonymizedProxy}`],
    });

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

    await browser.close();
    await proxyChain.closeAnonymizedProxy(anonymizedProxy, true);
})();

Il est important de noter que, dans ce cas, l’adresse PROXY_PORT devient 10800 pour le protocole SOCKS5 et que l’adresse du proxy lui-même commence par socks5:// et non par http://.

Conclusion

Les proxys constituent un élément essentiel de toute configuration d’automatisation Puppeteer digne de ce nom. Dans ce guide, nous avons abordé les principales raisons de les utiliser, leur comparaison avec les VPN, et nous avons passé en revue toutes les principales méthodes d’intégration – de l’authentification de base aux pools rotatifs, en passant par la configuration SOCKS5 avec une chaîne de proxys. Avec un fournisseur fiable comme Floppydata et une configuration adaptée à votre cas d’utilisation, vous disposerez d’un pipeline résilient et évolutif, capable de répondre à toutes les exigences de votre flux de travail.

Essayez les Proxies Floppydata dès maintenant - à partir de 1$/Go

Partager cet article :

Table des matières

Proxies à 1 $
Obtenez des possibilités illimitées

Vous pouvez aussi aimer :
Prêt à faire l'expérience d'un service de procuration transparent et fiable ?
Proxies rapides, sûrs et sans problèmes, adaptés à vos besoins