# Frameworks d'automatisation

Méthodes d'intégration de Selenium, Puppeteer, Playwright, Scrapy et des autres frameworks d'automatisation et de collecte. Tous les exemples sont exécutables après remplacement de `USERNAME` et `PASSWORD` par vos identifiants.

## Scrapy

Activez le middleware proxy dans `settings.py`, ou définissez le proxy requête par requête :

```python
# Méthode 1 : globale (settings.py)
HTTPPROXY_ENABLED = True

# Dans le Spider, spécifier le proxy pour chaque requête
def start_requests(self):
    proxy = "http://USERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333"
    for url in self.start_urls:
        yield scrapy.Request(url, meta={"proxy": proxy})
```

La rotation à chaque requête est le comportement par défaut, naturellement adapté au modèle de concurrence de Scrapy ; pour figer l'IP par session, ajoutez un `sid` dans le username.

## Selenium (Python)

Les paramètres en ligne de commande de Chrome ne prennent pas en charge les proxys avec authentification ; il est recommandé d'utiliser `selenium-wire` pour gérer les identifiants :

```python
# pip install selenium-wire
from seleniumwire import webdriver

options = {
    "proxy": {
        "http": "http://USERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333",
        "https": "http://USERNAME-pool-flow-region-US:PASSWORD@proxy.eproxies.net:23333",
    }
}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get("https://ipinfo.io")
print(driver.page_source)
driver.quit()
```

Vous pouvez aussi opter pour le [mode liste blanche](https://www.eproxies.io/docs/usage/api-extraction) : extrayez des `IP:port` sans authentification, puis utilisez directement le paramètre natif `--proxy-server`.

## Puppeteer (Node.js)

```javascript
const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch({
    args: ["--proxy-server=http://proxy.eproxies.net:23333"],
  });
  const page = await browser.newPage();
  await page.authenticate({
    username: "USERNAME-pool-flow-region-US",
    password: "PASSWORD",
  });
  await page.goto("https://ipinfo.io/json");
  console.log(await page.evaluate(() => document.body.innerText));
  await browser.close();
})();
```

## Playwright (Node.js / Python)

```javascript
// Node.js
const { chromium } = require("playwright");

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: "http://proxy.eproxies.net:23333",
      username: "USERNAME-pool-flow-region-US",
      password: "PASSWORD",
    },
  });
  const page = await browser.newPage();
  await page.goto("https://ipinfo.io/json");
  console.log(await page.textContent("body"));
  await browser.close();
})();
```

```python
# Python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://proxy.eproxies.net:23333",
        "username": "USERNAME-pool-flow-region-US",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    page.goto("https://ipinfo.io/json")
    print(page.text_content("body"))
    browser.close()
```

## Pipelines de données AI Agent / LLM

Lorsque vous pilotez un navigateur ou collectez des données avec un LLM (outils LangChain, Browser Use, agents maison, etc.), transmettez simplement la configuration proxy de l'un des frameworks ci-dessus. Points clés :

* Attribuez un `sid` indépendant à chaque agent parallèle pour éviter toute interférence ([exemple multi-sessions](https://www.eproxies.io/docs/usage/session-control)).
* Faites vérifier l'IP de sortie par l'agent en début de tâche (requête vers `https://ipinfo.io`) avant l'exécution du travail proprement dit.
* Toute la syntaxe des paramètres condensée sur une page : [Aide-mémoire Agent](https://www.eproxies.io/docs/agent-reference).

## Outils de collecte web

Tutoriels officiels de configuration des outils de collecte graphiques : [Octoparse](https://www.eproxies.io/integrations/octoparse) · [Scrapy](https://www.eproxies.io/integrations/scrapy) · [ScrapeStorm](https://www.eproxies.io/integrations/scrapestorm) · [SellerSprite](https://www.eproxies.io/integrations/sellersprite) · [Helium 10](https://www.eproxies.io/integrations/helium10)
