# Фреймворки автоматизации

Подключение Selenium, Puppeteer, Playwright, Scrapy и других фреймворков автоматизации и парсинга. Все примеры запускаются после замены `USERNAME` и `PASSWORD` на ваши учётные данные.

## Scrapy

Включите прокси-middleware в `settings.py` или задавайте прокси для каждого запроса:

```python
# Вариант 1: глобально (settings.py)
HTTPPROXY_ENABLED = True

# Указываем прокси для каждого запроса в Spider
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})
```

Ротация на каждый запрос — поведение по умолчанию, оно естественно ложится на модель конкурентности Scrapy; если нужен фиксированный IP на сессию, добавьте в username `sid`.

## Selenium (Python)

Параметры командной строки Chrome не поддерживают прокси с аутентификацией; для логина и пароля рекомендуем `selenium-wire`:

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

Альтернатива — [режим белого списка](https://www.eproxies.io/docs/usage/api-extraction): извлеките `IP:порт` без аутентификации и используйте нативный параметр `--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()
```

## AI-агенты / конвейеры данных для LLM

Если браузером управляет LLM или данные собирает агент (инструменты LangChain, Browser Use, самописные агенты), просто передайте конфигурацию прокси любого из фреймворков выше. Ключевые моменты:

* Выдавайте каждому параллельному агенту отдельный `sid`, чтобы они не мешали друг другу ([пример с несколькими сессиями](https://www.eproxies.io/docs/usage/session-control)).
* Пусть агент в начале задачи сначала запрашивает `https://ipinfo.io` и проверяет выходной IP, и только затем выполняет основную работу.
* Весь синтаксис параметров на одной странице: [Шпаргалка для агентов](https://www.eproxies.io/docs/agent-reference).

## Инструменты сбора данных

Официальные руководства по настройке графических инструментов парсинга: [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)
