Налаштування проксі в Crawl4AI
Crawl4AI — це потужний open-source інструмент для веб-скрапінгу, призначений для витягування чистих даних з веб-сторінок, що підходять для навчання ШІ та LLM-моделей. Він швидкий, гнучкий і здатний обходити базові захисти сайтів, такі як прості анти-бот системи. Для більш складних захистів, включаючи CAPTCHA, рекомендується інтеграція зі сторонніми сервісами (див. Частину 4).
Однак при масштабному скрапінгу (наприклад, 10 000 сторінок) ваша локальна IP-адреса швидко потрапить під блокування. Щоб уникнути цього і забезпечити безперервний потік даних для ваших AI-моделей, необхідна надійна проксі-інфраструктура. У цьому гайді ми розберемо, як вибрати відповідний тип проксі від CyberYozh App для вашої задачі та інтегрувати їх у Crawl4AI.
🛑 Критично важлива інформація щодо протоколів (HTTP vs SOCKS5): Бібліотека Playwright (на якій працює Crawl4AI) не підтримує SOCKS5-проксі з авторизацією (login:password). Оскільки всі проксі в CyberYozh App для безпеки працюють тільки з авторизацією, для роботи з Crawl4AI вам необхідно використовувати протокол HTTP. Він повністю підтримує авторизацію і забезпечує стабільну роботу.
Ключові особливості інтеграції: Проксі — окремий модуль (proxy_module.py) для модульності. Дані зберігаються в текстових файлах (за типом: резидентські, мобільні, датацентр). Перемикання типу/протоколу — в одному-двох рядках в основному скрипті.
Частина 1. Вибір проксі: Який тип підійде для вашого датасету?
Crawl4AI універсальний, але ефективність залежить від "палива" — пулу IP-адрес. У CyberYozh App доступні різні типи проксі, кожен оптимізований для конкретних сценаріїв скрапінгу. Вибір залежить від рівня захисту сайту, обсягу даних та необхідності в ротації. Всі типи підтримують як HTTP, так і SOCKS5.
- Резидентські Ротаційні (Residential Rotating) — Вибір №1 для масового скрапінгу
- Суть: Пул з мільйонів реальних домашніх IP-адрес. Ротація автоматична: нова IP за посиланням або за запитом API.
- Ідеально для Crawl4AI: Великі датасети з маркетплейсів (Amazon, Wildberries), пошукових систем (Google, Yandex).
- Чому: Високий траст, мінімізує блокування. Підтримують 3 види сесій (Випадкова IP, Коротка, Довга до 6 годин).
- Резидентські Статичні (Residential Static / ISP)
- Суть: Фіксовані домашні IP на період оренди.
- Ідеально для Crawl4AI: Сайти з авторизацією (особисті кабінети).
- Чому: Стабільність сесій.
- Мобільні виділені порти (Mobile Dedicated)
- Суть: Приватний модем з реальною SIM-картою, виділений особисто під вас.
- Ідеально для Crawl4AI: Складні завдання, сайти з жорстким анти-бот захистом, емуляція поведінки реального користувача мобільного пристрою.
- Чому: Максимальний траст з боку сайтів. Рекомендується для найважчих кейсів.
- Мобільні загальні проксі (Mobile Shared)
- Суть: IP від 4G/5G, shared-канал у приватному режимі.
- Ідеально для Crawl4AI: Соцмережі (Instagram, TikTok) або сайти з захистом (Cloudflare).
- Чому: Високий траст для мобільного трафіку.
- Датацентрові виділені проксі (Datacenter)
- Суть: Серверні IP, швидкі та дешеві.
- Ідеально для Crawl4AI: Відкриті джерела без захисту.
- Чому: Максимальна швидкість.
Порада щодо інтеграції: Для змішаного підходу комбінуйте типи.
Частина 2. Підготовка даних та встановлення
Підготуйте дані з CyberYozh App:
Після купівлі проксі скопіюйте дані:
- Host (IP): 51.77.190.247
- Port: 5959
- Login: user123
- Password: pass123
Формат рядка підключення: Crawl4AI (як і бібліотека Playwright, що лежить в його основі) приймає проксі у форматі єдиного рядка: http://login:password@ip:port
Приклад: http://user123:pass123@51.77.190.247:5959
Керування Резидентськими ротаційними проксі
Для Резидентських Ротаційних проксі в CyberYozh App доступне гнучке налаштування сесії прямо через логін (username). Це критично важливо для логіки вашого скрапера.
Креди (облікові дані) можна згенерувати в особистому кабінеті, натиснувши кнопку “Згенерувати облікові дані” у картці пакета. Доступні формати виводу: IP:PORT:USERNAME:PASSWORD або посилання для cURL.

Рис. 1. Перехід до інтерфейсу створення конфігурацій та параметрів підключення (генератор кредів).

Рис. 2. Використання генератора для налаштування параметра sid, що відповідає за створення нових унікальних сесій.

Рис. 3. Налаштування параметрів для формування облікових даних з використанням довгих (Sticky) сесій.

Рис. 4. Результат роботи генератора облікових даних (кредів).
Типи сесій і як їх прописати:
1. Випадкова IP (Random IP) — для кожного запиту нова IP Використовуйте префікс -res-any. Приклад логіна: user-res-any Коли потрібно: Звичайний скрапінг, де не потрібно зберігати стан між сторінками.
2. Коротка сесія (до 1 хвилини) Дозволяє зберегти IP на короткий час (наприклад, пройти капчу і завантажити сторінку). Використовуйте префікс -sid-RANDOMNUMBER.
Формат: user-res-any-sid-47551677 (де 47551677 — будь-яке випадкове число, що генерується вами).
Гео: У коротких сесіях можна вибрати Країну, Регіон та Місто (приклад: -res_sc-us_georgia_macon-sid-54683597).
3. Довга липка сесія (до 6 годин) Це Sticky-сесія, яка тримає одну IP до 6 годин. Ідеально для глибокого парсингу одного сайту.
Як отримати: Варіант А (Простий): Згенерувати готовий рядок з "Довгою сесією" в генераторі облікових даних в особистому кабінеті. Варіант Б (Просунутий/API): Необхідно виконати 2 кроки. Зробити запит cURL з префіксом -resfix- (наприклад, user-resfix-us-nnid-0). У заголовку відповіді X-NN-LLS отримати токен (наприклад, 9d016e26...). Підставити цей токен замість 0 у логін: user-resfix-us-nnid-9d016e26....
Керування мобільними проксі в особистому кабінеті
Робота з мобільними проксі має важливу особливість: для зміни IP використовується API-посилання. Обов'язково знайдіть його в картці купленого пакета — саме цей URL необхідно вставити у ваш софт або скрипт для налаштування автоматичної ротації.

Рис. 5. Розташування посилання для автоматичної ротації.
Крім того, у CyberYozh App передбачено ручний режим. Якщо вам потрібно змінити IP-адресу прямо зараз, не вдаючись до скриптів, просто натисніть кнопку зміни IP в панелі керування — адреса оновиться миттєво.

Рис. 6. Кнопка для примусової ручної зміни.
Створіть файли в директорії проекту:
proxies_residential.txt:
user123:pass123@51.77.190.247:5959 Додайте більше проксі для ротації.
proxies_mobile.txt та proxies_datacenter.txt аналогічно. * Формат: login:password@host:port для auth (тільки з HTTP).
Встановлення:
pip install crawl4ai playwright
playwright install
Перевірте встановлення: python -m crawl4ai --version. Використовуйте venv, якщо необхідно.
Частина 3. Інтеграція проксі в Crawl4AI (Python) як окремий модуль
Модуль proxy_module.py завантажує проксі з файлів, додає протокол ("http" або "socks5") та підтримує ротацію.
Крок 1. Модуль проксі (proxy_module.py):
import random
import os
class ProxyManager:
def __init__(self, proxy_type="residential", protocol="http", rotate=True):
"""
Ініціалізація менеджера проксі.
:param proxy_type: Тип ('residential', 'mobile', 'datacenter')
:param protocol: Протокол ('http' або 'socks5') — socks5 тільки без auth!
:param rotate: Увімк/вимк ротацію
"""
self.proxy_type = proxy_type.lower()
self.protocol = protocol.lower()
self.rotate = rotate
self.proxies = self._load_proxies() # Завантажуємо з файлу
if self.protocol == "socks5" and self.proxies and '@' in self.proxies[0]: # Перевірка на auth
raise ValueError("SOCKS5 не підтримує автентифікацію в Playwright! Видаліть login:password з файлу.")
self.current_proxy = None
def _load_proxies(self):
"""Завантажує проксі з файлу."""
file_map = {
"residential": "proxies_residential.txt",
"mobile": "proxies_mobile.txt",
"datacenter": "proxies_datacenter.txt"
}
file_name = file_map.get(self.proxy_type)
if not file_name:
raise ValueError(f"Невідомий тип: {self.proxy_type}.")
file_path = os.path.join(os.path.dirname(__file__), file_name)
if not os.path.exists(file_path):
raise FileNotFoundError(f"Файл {file_name} не знайдено.")
with open(file_path, 'r') as f:
lines = f.read().strip().splitlines()
# Додаємо протокол: protocol://line (line = user:pass@host:port або host:port)
proxies = [f"{self.protocol}://{line.strip()}" for line in lines if line.strip()]
if not proxies:
raise ValueError(f"Файл {file_name} порожній.")
return proxies
def get_proxy(self):
"""Повертає проксі."""
if not self.proxies:
raise ValueError("Немає проксі!")
if self.rotate:
self.current_proxy = random.choice(self.proxies)
else:
self.current_proxy = self.proxies[0]
return self.current_proxy
def get_proxy_config(self):
"""Повертає ProxyConfig для Crawl4AI."""
if not self.current_proxy:
self.get_proxy()
# Розділяємо: protocol://user:pass@host:port або protocol://host:port
if '@' in self.current_proxy:
parts = self.current_proxy.split('@')
auth = parts[0].split('//')[1] # user:pass
host_port = parts[1] # host:port
user, password = auth.split(':')
else:
host_port = self.current_proxy.split('//')[1] # host:port для no-auth
user, password = None, None
from crawl4ai.async_configs import ProxyConfig
return ProxyConfig(
server=f"{self.protocol}://{host_port}",
username=user,
password=password
)
def add_proxy(self, proxy_url):
self.proxies.append(proxy_url)
Крок 2. Скрипт скрапера (scraper.py):
import asyncio
from crawl4ai import AsyncWebCrawler
from crawl4ai.async_configs import BrowserConfig
from proxy_module import ProxyManager
# Перемикання типу (residential, mobile, datacenter)
PROXY_TYPE = "residential"
# Перемикання протоколу (http або socks5 — socks5 тільки без auth!)
PROXY_PROTOCOL = "http" # Рекомендується для auth; для SOCKS5 видаліть login:password з файлу
# Ініціалізуємо менеджер
proxy_manager = ProxyManager(proxy_type=PROXY_TYPE, protocol=PROXY_PROTOCOL, rotate=True)
async def main():
try:
proxy_config = proxy_manager.get_proxy_config()
browser_config = BrowserConfig(proxy_config=proxy_config)
async with AsyncWebCrawler(verbose=True, config=browser_config) as crawler:
current_proxy = proxy_manager.get_proxy()
print(f"🚀 Запуск через {PROXY_PROTOCOL.upper()} проксі...")
print(f"Проксі: {current_proxy}")
result = await crawler.arun(
url="https://ipinfo.io/json",
bypass_cache=True
)
if result.success:
print("\n✅ Успішно! Відповідь:")
print(result.markdown)
else:
print(f"\n❌ Помилка: {result.error_message}")
except Exception as e:
print(f"❌ Помилка: {str(e)}")
if __name__ == "__main__":
asyncio.run(main())
Крок 3. Запуск:
python scraper.py
- Для SOCKS5: Встановіть PROXY_PROTOCOL = "socks5" і видаліть auth з файлів (тільки host:port). Якщо auth потрібен — використовуйте "http".
Частина 4. Просунуті сценарії та вирішення проблем
Автоматична ротація (для резидентських ротаційних та мобільних):
Немає потреби в коді — шлюз CyberYozh App сам ротує IP. Просто викликайте crawler.arun у циклі:
for url in urls_list:
proxy_config = proxy_manager.get_proxy_config() # Новий конфіг для ротації
browser_config = BrowserConfig(proxy_config=proxy_config)
# Переініціалізуйте crawler з новим config, якщо потрібно
result = await crawler.arun(url=url, bypass_cache=True)
Ручна ротація для статичних (резидентських/датацентр):
Додайте кілька рядків у файл proxies_residential.txt або proxies_datacenter.txt і використовуйте rotate=True. Або використовуйте зміну IP за посиланням чи запитом API.
Масовий скрапінг з паузами:
Додайте затримки для імітації людської поведінки:
import time
time.sleep(random.uniform(1, 5)) # Пауза 1-5 сек перед запитом
💡 Порада: деякі веб-сайти можуть використовувати механізми перевірки на основі CAPTCHA для запобігання автоматичному доступу. Якщо у вашому робочому процесі виникають такі проблеми, ви можете інтегрувати сторонній сервіс обробки CAPTCHA, такий як CapSolver. Він підтримує reCAPTCHA v2/v3, Cloudflare Turnstile, Challenge, AWS WAF та інші. Переконайтеся, що ваше використання відповідає умовам обслуговування цільового веб-сайту та чинним законам.
Вирішення проблем:
- Помилка підключення: Перевірте формат у файлах (login:password@host:port). Тестуйте проксі в браузері.
- Блокування незважаючи на проксі: Збільште паузи або змініть тип (на мобільні для жорстких сайтів). Додайте stealth mode у Crawl4AI: browser_type="undetected" у BrowserConfig.
- Playwright помилки: Переконайтеся, що playwright install виконано. Якщо headless=False, браузер відкриється видимо для налагодження.
- SOCKS5 auth помилка: Playwright не підтримує — використовуйте HTTP проксі.
- Asyncio винятки: Ігноруйте; це Windows-специфіка, не впливає.
- Логування: Увімкніть verbose=True у Crawl4AI для детальних логів.
Висновок
Crawl4AI + проксі від CyberYozh App — ідеальний дует для збору даних без блокувань. Виберіть:
- Резидентські Ротаційні для масових датасетів (Amazon/Google).
- Мобільні Загальні (Shared) для соцмереж та захищених сайтів.
- Резидентські Статичні для сесійних завдань.
- Датацентрові Статичні для простих і швидких зборів даних.
Перейдіть у каталог CyberYozh App, виберіть відповідні проксі, налаштуйте Crawl4AI та масштабуйте свій AI-скрапінг.
Додаткова документація: Crawl4AI GitHub