Basculement dynamique de proxy et configuration par contexte
Cómo configurer le basculement de proxy à l'exécution et les proxies par contexte dans BotBrowser pour gérer plusieurs identités réseau simultanément.
Introduction
De nombreux workflows de confidentialité nécessitent plusieurs proxies au sein d'une même session : différents proxies pour différents comptes, régions ou domaines cibles. Une configuration statique (un seul proxy pour toute la durée du navigateur) est limitante.
BotBrowser prend en charge le basculement dynamique de proxy via les API de contexte de Playwright et Puppeteer. Chaque contexte peut acheminer le trafic via un proxy distinct avec sa propre identité géographique, et vous pouvez créer/fermer des contextes à la volée sans redémarrer le navigateur.
Impact sur la confidentialité
Si plusieurs identités partagent un même proxy, leurs trafics sont liés par l'IP. Un système de tracking observant la même IP accédant à plusieurs comptes peut corréler ces comptes. La séparation par proxy par contexte évite cette corrélation.
Combiné à l'isolation de fingerprint par contexte de BotBrowser, chaque contexte présente une identité indépendante : fingerprint, IP et métadonnées géographiques distincts.
Contexte technique
Contextes et isolation réseau
Un contexte de navigateur dans Playwright/Puppeteer est une session isolée dans un même processus de navigateur, avec cookies, localStorage, sessionStorage et cache séparés. Playwright permet de définir un proxy par contexte.
Créer un contexte avec browser.newContext({ proxy: ... }) achemine tout le trafic de ce contexte via le proxy spécifié.
Statique vs proxy par contexte
La configuration statique via --proxy-server s'applique à l'ensemble des contextes. Exemple :
chrome --bot-profile="/path/to/profile.enc" \
--proxy-server=socks5://user:pass@proxy:1080
La configuration par contexte se définit à la création du contexte :
const context = await browser.newContext({
proxy: { server: 'socks5://proxy:1080', username: 'user', password: 'pass' },
});
Si aucun proxy n'est fourni, le contexte hérite du proxy global.
Extension BotBrowser
BotBrowser dérive automatiquement les paramètres géographiques du proxy : fuseau horaire, locale et langue sont affectés au contexte en fonction de l'IP du proxy.
Approches courantes et limites
Instancier des navigateurs séparés
Fonctionne mais coûteux en ressources.
Rotation au niveau framework
Les interceptors JS peuvent manquer certaines connexions (WebSocket, DNS prefetch) ou appliquer le mauvais proxy au démarrage.
Middleware de proxy local
Ajoute latence et complexité opérationnelle.
Approche BotBrowser
Proxy par contexte avec détection automatique
const usContext = await browser.newContext({
proxy: { server: 'socks5://us-proxy:1080', username: 'user', password: 'pass' },
});
const deContext = await browser.newContext({
proxy: { server: 'socks5://de-proxy:1080', username: 'user', password: 'pass' },
});
Chaque contexte reçoit automatiquement timezone, locale et language correspondant au proxy.
Overrides manuels
Spécifiez locale et timezone lors de la création si nécessaire.
Rotation entre requêtes
Créez un nouveau contexte par rotation et fermez-le ensuite pour garantir l'absence de fuite d'état.
Assignation persistante
Conservez un contexte ouvert pour chaque compte nécessitant un proxy persistant.
Vérification
Contrôlez l'IP, le fuseau horaire et la locale depuis chaque contexte (ex. https://httpbin.org/ip et Intl.DateTimeFormat().resolvedOptions().timeZone).
Bonnes pratiques
- Fermer les contextes inutilisés.
- Préférer Playwright pour le support per-context proxy.
- Aligner proxy géographique et locale/timezone.
- Activer
--bot-local-dnset--bot-webrtc-iceglobalement. - Utiliser profils distincts par compte.
- Ne pas utiliser
page.authenticate(); inclure les credentials dans l'URL du proxy.
FAQ et résumé
Le proxy d'un contexte est immuable après création ; le nombre de contextes dépend des ressources ; BotBrowser détecte automatiquement la géographie (ENT Tier1). Le basculement dynamique permet des identités multiples au sein d'un seul processus de navigateur.
title: "Changement dynamique de proxy et configuration proxy par contexte" description: "Decouvrez comment configurer le changement de proxy en temps reel et les parametres proxy par contexte dans BotBrowser pour gerer plusieurs identites reseau." date: "2025-09-16" locale: fr category: network tags: ["proxy", "dynamic", "switching", "per-context", "network"] published: true
Pourquoi le changement dynamique de proxy est important
De nombreux workflows necessitent plus d'un seul proxy pour une session navigateur. BotBrowser supporte le changement de proxy en temps reel et l'assignation par contexte via l'API de contexte de Playwright.
Configuration statique vs. dynamique
chrome --bot-profile="/profiles/windows-chrome-122.enc" \
--proxy-server=socks5://user:pass@proxy-host:1080 \
--user-data-dir="$(mktemp -d)"
Pour les workflows multi-identite, les proxies par contexte sont plus flexibles :
const { chromium } = require('playwright-core');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: ['--bot-profile=/profiles/windows-chrome-122.enc'],
headless: true,
});
const usContext = await browser.newContext({
proxy: { server: 'socks5://us-proxy:1080', username: 'user', password: 'pass' },
});
const deContext = await browser.newContext({
proxy: { server: 'socks5://de-proxy:1080', username: 'user', password: 'pass' },
});
Identite geographique par contexte
async function createGeoContext(browser, config) {
return browser.newContext({
proxy: { server: config.proxyUrl, username: config.user, password: config.pass },
locale: config.locale,
timezoneId: config.timezone,
});
}
const usCtx = await createGeoContext(browser, {
proxyUrl: 'socks5://us-east:1080', user: 'u', pass: 'p',
locale: 'en-US', timezone: 'America/New_York',
});
const jpCtx = await createGeoContext(browser, {
proxyUrl: 'socks5://jp-tokyo:1080', user: 'u', pass: 'p',
locale: 'ja-JP', timezone: 'Asia/Tokyo',
});
Rotation de proxy entre requetes
const proxyPool = [
'socks5://user:pass@proxy-1:1080',
'socks5://user:pass@proxy-2:1080',
'socks5://user:pass@proxy-3:1080',
];
async function navigateWithRotation(browser, url, index) {
const context = await browser.newContext({
proxy: { server: proxyPool[index % proxyPool.length] },
});
const page = await context.newPage();
await page.goto(url);
const content = await page.content();
await context.close();
return content;
}
Points cles
- La configuration statique s'applique a tout le trafic au demarrage
- Les proxies par contexte permettent differentes identites reseau dans une seule instance
- Combinez les parametres proxy avec locale et fuseau horaire pour une identite geographique complete
- BotBrowser supporte SOCKS5, HTTP et HTTPS avec credentials integres
Pour commencer
- Telechargez BotBrowser depuis GitHub
- Configurez un fournisseur de proxy ou votre propre infrastructure
- Utilisez
browser.newContext({ proxy: ... })de Playwright - Combinez avec
--bot-config-timezoneet--bot-config-locale