Retour au Blog
Réseau

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

  1. Fermer les contextes inutilisés.
  2. Préférer Playwright pour le support per-context proxy.
  3. Aligner proxy géographique et locale/timezone.
  4. Activer --bot-local-dns et --bot-webrtc-ice globalement.
  5. Utiliser profils distincts par compte.
  6. 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

  1. Telechargez BotBrowser depuis GitHub
  2. Configurez un fournisseur de proxy ou votre propre infrastructure
  3. Utilisez browser.newContext({ proxy: ... }) de Playwright
  4. Combinez avec --bot-config-timezone et --bot-config-locale
#proxy#dynamic#switching#per-context#network