# Frameworks de automação

Como integrar Selenium, Puppeteer, Playwright, Scrapy e outros frameworks de automação e coleta de dados. Em todos os exemplos, basta substituir `USERNAME` e `PASSWORD` pelas suas credenciais.

## Scrapy

Habilite o middleware de proxy no `settings.py` ou defina o proxy por requisição:

```python
# Opção 1: global (settings.py)
HTTPPROXY_ENABLED = True

# No Spider, defina o proxy para cada requisição
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})
```

A rotação a cada requisição é o comportamento padrão e casa naturalmente com o modelo de concorrência do Scrapy; quando precisar fixar o IP por sessão, adicione o `sid` ao username.

## Selenium (Python)

Os argumentos de linha de comando do Chrome não aceitam proxy com autenticação; recomendamos o `selenium-wire` para lidar com usuário e senha:

```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()
```

Também é possível usar o [modo whitelist](https://www.eproxies.io/docs/usage/api-extraction): depois de extrair endpoints `IP:porta` sem autenticação, use diretamente o argumento nativo `--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 dados para AI Agents / LLMs

Ao usar LLMs para controlar navegadores ou coletar dados (ferramentas do LangChain, Browser Use, agents próprios etc.), basta passar a configuração de proxy de qualquer um dos frameworks acima. Pontos-chave:

* Atribua um `sid` independente a cada agent paralelo, para que não interfiram entre si ([exemplo de múltiplas sessões](https://www.eproxies.io/docs/usage/session-control)).
* Faça o agent requisitar `https://ipinfo.io` no início da tarefa para validar o IP de saída antes de executar o trabalho.
* Sintaxe completa de parâmetros em uma única página: [Referência rápida para Agents](https://www.eproxies.io/docs/agent-reference).

## Ferramentas de coleta de dados

Tutoriais oficiais de configuração das ferramentas visuais de coleta: [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)
