Abonnements
PRODUIT
SOLUTIONS
par cas d'utilisation
AI Gestion du leadFacturationRéseaux SociauxGestion de projetGestion des donnéespar industrie
en savoir plus
BlogGabaritsVidéosYoutubeRESSOURCES
COMMUNAUTÉS ET RÉSEAUX SOCIAUX
PARTENAIRES
CloudflareLes mesures de sécurité rendent difficile l'accès des robots aux sites web. Mais avec MarionnettisteVous pouvez contourner ces défenses si vous le faites de manière éthique. Voici un guide rapide pour commencer :
puppeteer-extra-plugin-recaptcha
.npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
Ces étapes peuvent améliorer votre taux de réussite face aux protections Cloudflare. Consultez l'article pour découvrir des extraits de code détaillés et des techniques avancées.
Suivez ces étapes pour configurer Puppeteer avec des paramètres et des plugins personnalisés pour naviguer dans les protections Cloudflare.
Tout d'abord, assurez-vous d'avoir Node.js La version 18 ou ultérieure est installée. Exécutez ensuite la commande suivante pour installer Puppeteer et ses extensions associées :
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Ensuite, créez un nouveau fichier JavaScript et importez les modules nécessaires :
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
Après cela, vous devrez modifier les paramètres de lancement du navigateur pour éviter la détection.
Configurez votre instance de navigateur avec des configurations qui réduisent le risque d'être signalé :
const browser = await puppeteer.launch({
headless: false,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-infobars',
'--window-position=0,0',
'--ignore-certificate-errors',
'--ignore-certificate-errors-spki-list'
]
});
Si vous souhaitez utiliser un proxy pour masquer votre IP, incluez ces paramètres supplémentaires :
const browser = await puppeteer.launch({
args: [
'--proxy-server=http://proxy-address:port'
]
});
await page.authenticate({
username: 'proxy-username',
password: 'proxy-password'
});
Améliorez les fonctionnalités de Puppeteer avec ces plugins :
Nom Plugin | Objectif | Fonctionnalités clés |
---|---|---|
marionnettiste-extra-plugin-furtif | Anti-détection | Modifie l'empreinte digitale du navigateur et imite le comportement humain |
marionnettiste-extra-plugin-recaptcha | Gestion des CAPTCHA | Automatise la résolution des CAPTCHA |
marionnettiste-extra-plugin-adblocker | La gestion des ressources | Bloque les publicités et les trackers pour réduire les risques de détection |
Pour intégrer ces modules complémentaires, utilisez le code suivant :
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker');
puppeteer.use(StealthPlugin());
puppeteer.use(AdblockerPlugin({ blockTrackers: true }));
Enfin, pour rendre vos actions plus naturelles, introduisez des délais aléatoires entre elles :
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
await delay(Math.random() * 1000 + 1000); // Random delay between 1-2 seconds
Améliorez votre configuration Puppeteer avec ces techniques pour mieux naviguer dans les défenses de Cloudflare.
Le système anti-bot de Cloudflare surveille les empreintes digitales et les signaux d'automatisation du navigateur. Pour masquer l'activité de Puppeteer, modifiez les identifiants et les propriétés du navigateur comme indiqué ci-dessous :
const browser = await puppeteer.launch({
args: [
'--window-size=1920,1080',
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
],
ignoreDefaultArgs: ['--enable-automation']
});
await page.evaluateOnNewDocument(() => {
delete navigator.webdriver;
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5]
});
});
Cette configuration supprime les indicateurs d'automatisation et imite une empreinte digitale de navigateur standard, aidant à contourner les contrôles de Cloudflare.
Relever les défis JavaScript de Cloudflare nécessite de simuler un comportement humain. Par exemple, vous pouvez attendre la disparition du formulaire de défi et introduire des délais aléatoires entre les actions :
// Wait until the Cloudflare challenge form is gone
await page.waitForFunction(() => {
return document.querySelector('#challenge-form') === null;
}, { timeout: 30000 });
// Add random delays to simulate human interaction
const randomDelay = (min, max) => {
return Math.floor(Math.random() * (max - min + 1) + min);
};
await page.waitForTimeout(randomDelay(1000, 3000));
Vous pouvez également créer des gestionnaires personnalisés pour mieux imiter le comportement des utilisateurs, si nécessaire. Ensuite, vous aurez besoin d'une stratégie de gestion des CAPTCHA.
Face aux CAPTCHA, l'utilisation d'un plugin de résolution de CAPTCHA peut simplifier le processus :
const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha');
puppeteer.use(
RecaptchaPlugin({
provider: {
id: '2captcha',
token: 'your-api-key'
}
})
);
Si le plugin ne parvient pas à résoudre le CAPTCHA, vous pouvez passer à la rotation du proxy en guise de solution de secours :
try {
await page.solveRecaptchas();
} catch (e) {
// Rotate to a new proxy if CAPTCHA solving fails
await page.setRequestInterception(true);
await useNextProxy();
}
Ces méthodes vous aident à surmonter les défis CAPTCHA et à maintenir l’accès, même lorsque les outils d’automatisation rencontrent des obstacles.
La mise en œuvre de techniques fiables est essentielle pour garantir le succès de l’automatisation.
L'utilisation de proxys bien gérés peut contribuer à réduire considérablement les risques de détection. Par exemple, les proxys résidentiels premium offrent de meilleures capacités de contournement. Voici un exemple de configuration :
const browser = await puppeteer.launch({
args: [
`--proxy-server=${proxyAddress}`,
'--no-sandbox',
'--disable-setuid-sandbox'
]
});
// Handle proxy authentication
await page.setRequestInterception(true);
page.on('request', request => {
request.continue({
headers: {
...request.headers(),
'Proxy-Authorization': `Basic ${Buffer.from(
`${proxyUsername}:${proxyPassword}`
).toString('base64')}`
}
});
});
La rotation régulière des proxys permet également de maintenir un accès ininterrompu :
const proxyList = [
'proxy1.example.com:8080',
'proxy2.example.com:8080',
'proxy3.example.com:8080'
];
function getNextProxy() {
const proxy = proxyList.shift();
proxyList.push(proxy);
return proxy;
}
Simuler un comportement humain peut minimiser les risques de détection. Voici comment gérer efficacement le timing des requêtes :
const simulateHumanBehavior = async (page) => {
// Add random mouse movements
await page.mouse.move(100, 200);
await page.mouse.move(150, 250, { steps: 10 });
// Randomize typing speed
await page.keyboard.type('Hello World', {
delay: Math.floor(Math.random() * (150 - 50) + 50)
});
// Add pauses
await page.waitForTimeout(
Math.floor(Math.random() * (3000 - 1000) + 1000)
);
};
Ces techniques, combinées à une gestion appropriée des sessions, rendent les efforts d’automatisation plus fiables.
Une gestion efficace des cookies est essentielle pour assurer la continuité des sessions. Voici comment stocker et restaurer les sessions :
// Store successful session cookies
const storeCookies = async (page) => {
const cookies = await page.cookies();
await fs.writeFile(
'cookies.json',
JSON.stringify(cookies, null, 2)
);
};
// Restore previous session
const loadCookies = async (page) => {
try {
const cookiesString = await fs.readFile('cookies.json');
const cookies = JSON.parse(cookiesString);
await page.setCookie(...cookies);
} catch (error) {
console.log('No stored cookies found');
}
};
Si les cookies échouent à la validation, vous pouvez les actualiser automatiquement :
const validateCookies = async (page) => {
const response = await page.goto(targetUrl);
if (response.status() === 403) {
await clearCookies(page);
await initializeNewSession(page);
}
};
Terminons en soulignant les principales techniques et étapes que nous avons abordées.
Pour contourner la protection Cloudflare, il faut combiner des méthodes efficaces. Les stratégies les plus importantes sont les suivantes :
Selon les données de l’industrie, la combinaison de ces techniques peut conduire à des taux de réussite pouvant atteindre 98.7 % lorsque les conditions sont optimisées.
En vous concentrant sur ces méthodes de base, vous pouvez créer un processus d’automatisation fiable et conforme.
Voici quelques conseils finaux pour affiner votre configuration Puppeteer et vos efforts de contournement de Cloudflare :
Puppeteer nécessite une configuration minutieuse et des ajustements réguliers pour rester efficace face aux défenses Cloudflare en constante évolution. À mesure que les mesures de sécurité se perfectionnent, le succès dépendra de la mise à jour régulière de votre stratégie et du strict respect des pratiques éthiques. Si les configurations initiales peuvent être efficaces, le maintien de performances à long terme implique de rester flexible et de suivre des directives claires.