Бесплатное тестирование доступно для жителей Франции , Великобритании или Сингапура в Telegram Присоединяйтесь к Telegram •
Руководство по автоматизации работы браузера Stealth

Как использовать Camoufox для обхода антиботов в 2026 году: руководство по мобильным прокси и Playwright

Освойте браузер Camoufox с функцией защиты от обнаружения и библиотекой Playwright: скрытое определение отпечатков в C++, интеграция с мобильными прокси 4G/5G, сопоставление GeoIP и обход Cloudflare Turnstile и DataDome.

Playwright & Python October 2, 2026 10 мин чтения
C++ Stealth Оптимизированный движок Gecko
GeoIP Sync Подделка часового пояса и WebRTC
99.4% Коэффициент обхода антибот-защиты
7+ Места расположения операторов
  • Скрытность на уровне движка C++ — напрямую вносит исправления в исходный код Mozilla Firefox, не оставляя никаких обнаруживаемых прототипов среды выполнения JavaScript или флагов автоматизации.
  • Автоматическая синхронизация GeoIP — динамически согласовывает часовой пояс браузера, язык интерфейса и координаты WebRTC с исходящим IP-адресом вашего мобильного прокси-сервера.
  • Гуманизированные траектории курсора по кривым Безье — имитируют естественные кривые ускорения мыши и колебания, чтобы обойти биометрические анализаторы WAF.
  • Сохранение доступа к сеансу — позволяет сохранять токены cf_clearance Cloudflare Turnstile между запусками с помощью кэшированных каталогов профилей.
Обход системы защиты от ботов «Стелс-автоматизация»
Базовый браузерMozilla Firefox (Gecko C++)
Подключение к APIPlaywright (Sync & Async)
Режим без интерфейсаNative & Xvfb Virtual Display
Протокол проксиHTTP & SOCKS5 with Auth
Маскирование слоёв в C++

Траст «Carrier CGNAT»

Автоматическая настройка GeoIP

Что такое Camoufox и почему скрытность в C++ имеет значение

Агентам искусственного интеллекта, автоматическим парсерам и конвейерам данных необходимо просматривать реальную сеть. Но стандартные платформы автоматизации блокируются в течение миллисекунд. Headless Chromium мгновенно снимает отпечатки пальцев. А традиционные стелс-плагины? Они становятся отпечатками пальцев.

Camoufox полностью устраняет эту поверхность обнаружения, исправляя Mozilla Firefox на базовом уровне реализации C++. Вместо внедрения хрупких оболочек JavaScript каждый параметр отпечатка пальца — от navigator.hardwareConcurrency, средств рендеринга WebGL и AudioContext до геометрии экрана и WebRTC — модифицируется непосредственно внутри движка Gecko C++ еще до того, как JavaScript его увидит. Никаких прокладок, никаких оберток и нулевых обнаруживаемых подсказок.

Недостаток JS Stealth: плагины становятся отпечатками пальцев

Такие инструменты, как puppeteer-extra-plugin-stealth, переопределяют window.navigator через Object.defineProperty. Современные сценарии испытаний проверяют цепочки прототипов с помощью Function.prototype.toString.call() и измеряют время выполнения метода получения, мгновенно раскрывая оболочку.

Решение Camoufox: нативная модификация C++ Gecko

Camoufox исправляет исходный код Firefox C++ перед компиляцией. Переменная navigator.webdriver не существует в структуре C++. Аппаратный параллелизм, шум холста, системные шрифты и параметры WebGL изначально оцениваются конвейером рендеринга ОС без накладных расходов JS.

Как это работает: обход турникета Cloudflare и DataDome под капотом

Чтобы понять, как Camoufox последовательно обеспечивает обход первого прохода против Cloudflare Turnstile, DataDome и Kasada, необходимо посмотреть, как современные межсетевые экраны с вызовами оценивают входящий трафик. Обнаружение — это не один флаг, это трехуровневая цепочка проверки:

Уровень 1: Энтропия среды выполнения JavaScript и целостность прототипа

Когда браузер загружает страницу, защищенную Cloudflare, Turnstile вводит телеметрию сценария вызова. Он запускает клиентские процедуры проверки работы (PoW), которые запрашивают низкоуровневые API-интерфейсы браузера: точность шейдера WebGL, гармоники буфера AudioContext, таймеры высокого разрешения Performance.now() и дескрипторы свойств навигатора.

В стелс-браузерах на базе Chromium эти запросы выполняются к объектам JavaScript Proxy или исправленным геттерам. Микросекундная задержка и небольшие расхождения в наследовании прототипов сразу же указывают на то, что сеанс автоматизирован. В Camoufox эти запросы попадают в скомпилированные подпрограммы C++ Gecko. Телеметрия, возвращаемая в Cloudflare, соответствует подлинной реальной установке Firefox вплоть до последнего цикла процессора.

Уровень 2: Гармония сетевого стека и параметров GeoIP

Нетронутый отпечаток браузера бесполезен, если в вашей исходящей сети присутствуют атрибуты автоматизации. Cloudflare сопоставляет утверждения браузера на стороне клиента с подписями пакетов TCP/IP на стороне сервера. Если ваш браузер сообщает о среде Apple macOS с британско-английской локалью, но пакет TCP SYN имеет подпись Linux TTL/размер окна, исходящую из подсети французского центра обработки данных, Turnstile запускает неразрешимый цикл проверки.

Camoufox с geoip=True запрашивает автономную базу данных MaxMind, чтобы автоматически привязать часовой пояс браузера, язык навигатора и фильтры-кандидаты WebRTC STUN к IP-адресу вашего прокси. При маршрутизации через выделенные мобильные модемы 4G/5G PXM2 трафик выходит через CGNAT оператора мобильной связи (NAT операторского уровня). Поскольку миллионы законных пользователей смартфонов используют одинаковые IP-блоки, Cloudflare не может заблокировать подсеть, не нанеся при этом огромного сопутствующего ущерба реальному потребительскому трафику.

Уровень 3: поведенческая биометрия и ускорение Безье

Если Турникет предоставляет интерактивное окно проверки («Подтвердите, что вы человек»), стандартные щелчки Драматурга мгновенно телепортируют курсор мыши в целевую координату (x, y) без промежуточных событий перемещения мыши. Датчики WAF немедленно обнаруживают линейные или мгновенные векторы скорости.

При значении humanize=True Camoufox генерирует органичные изогнутые траектории Безье с реалистичными кривыми человеческого дрожания, ускорения и замедления. При щелчке внутри iframe турникета с перекрестным происхождением (в сочетании с отключением_coop=True) биометрический датчик проверяет естественное двигательное поведение человека, плавно распределяя файл cookie cf_clearance.

Глубокое погружение Почему модификация на уровне C++ превосходит расширения stealth.js для JavaScript

Коммерческие антибот-движки запускают микро-бенчмарки, которые анализируют цепочки прототипов JavaScript, результаты вывода нативной функции toString() и трассировки стека выполнения. Такие инструменты, как puppeteer-extra-plugin-stealth, переопределяют свойство window.navigator с помощью Object.defineProperty. Любой современный скрипт для тестирования может обнаружить эти «крючки», выполнив Function.prototype.toString.call(Object.getOwnPropertyDescriptor(navigator, 'webdriver').get).

Camoufox вносит исправления в движок рендеринга Mozilla Gecko перед компиляцией. Переменная `navigator.webdriver` вообще отсутствует, перечисление шрифтов на C++ возвращает системные шрифты, соответствующие данным ОС, а параметры шейдеров WebGL соответствуют реальному аппаратному обеспечению без использования JavaScript-обёртки.

Системные требования и установка

Camoufox распространяется в виде облегчённой оболочки на Python, которая работает в паре с настроенной версией Firefox. Для установки требуется Python 3.8+ в Windows, macOS или Linux (Ubuntu/Debian/CentOS).

1. Установите пакет Python с расширением GeoIP

Обязательно установите дополнение [geoip]. Оно содержит автономную базу данных MaxMind, необходимую для автоматической синхронизации часового пояса браузера, языковых настроек и координат WebRTC с IP-адресом выходного узла вашего прокси-сервера.

Терминал · Установка пипа
pip install -U "camoufox[geoip]" playwright
Устанавливает привязки Python Playwright и автономную базу данных геолокации.

2. Скачать защищенную версию Firefox

Выполните команду fetch в командной строке, чтобы загрузить обновленный бинарный файл движка Gecko. Файл размером примерно 250 МБ загружается один раз и сохраняется в локальном кэше.

Терминал · Получить защищенный двоичный файл Firefox
camoufox fetch
Автоматическая загрузка исправленного двоичного файла браузера C++.

3. Проверка быстрого запуска

Запустите тестовый скрипт для проверки запуска браузера, вставки отпечатка и автоматической очистки.

Python · Быстрый дымовой тест
from camoufox.sync_api import Camoufox

# Launch lightweight hardened instance
with Camoufox(headless=True) as browser:
    page = browser.new_page()
    page.goto("https://httpbin.org/headers")
    # Verify genuine Firefox headers without automation flags
    print(page.inner_text("body"))
Возвращает подлинные заголовки пользовательского агента Firefox без флагов автоматизации.
Уведомление о репозитории: Основной репозиторий находится по адресу scraperapi/camoufox (релизы с контрольной точкой «master»). Для развертывания в производственной среде всегда используйте стабильный пакет camoufox из PyPI, а не экспериментальные ветки.

Основные принципы использования: синхронные и асинхронные API

Поскольку Camoufox является оболочкой для Playwright, он предоставляет как синхронные, так и асинхронные контексты. Менеджеры контекстов автоматически обрабатывают жизненный цикл браузера и завершение дочерних процессов, предотвращая появление «сиротских» зомби-процессов Firefox при работе скраперов.

Python · Асинхронный параллелизм с AsyncCamoufox
import asyncio
from camoufox.async_api import AsyncCamoufox

async def scrape_target(browser, target_url):
    page = await browser.new_page()
    try:
        await page.goto(target_url, wait_until="domcontentloaded", timeout=30000)
        title = await page.title()
        print(f"Successfully scraped: {title}")
        return await page.content()
    finally:
        await page.close()

async def main():
    urls = [
        "https://browserleaks.com/javascript",
        "https://browserleaks.com/canvas",
        "https://browserleaks.com/webgl"
    ]
    async with AsyncCamoufox(headless=True) as browser:
        tasks = [scrape_target(browser, u) for u in urls]
        await asyncio.gather(*tasks)

if __name__ == "__main__":
    asyncio.run(main())
Асинхронный параллелизм с использованием стандартных контекстов asyncio и страницы драматурга.

Интеграция мобильного прокси PXM2 4G/5G с сопоставлением по GeoIP

Наиболее распространённым поводом для срабатывания системы обнаружения на защищённых сайтах является несоответствие идентификационных данных: браузер указывает лондонский часовой пояс и локаль «британский английский», подключаясь с французского IP-адреса. Camoufox устраняет эту ошибку, если включен параметр geoip=True. Он определяет IP-адрес прокси через MaxMind, автоматически настраивая часовой пояс, язык и координаты WebRTC до отправки первого пакета TLS.

Python · Аутентификация мобильного прокси-сервера PXM2 и синхронизация GeoIP
import requests
from camoufox.sync_api import Camoufox

# PXM2 Dedicated Mobile Proxy credentials
PROXY_HOST = "gate.pxm2.io"
PROXY_PORT = 30001
PROXY_USER = "pxm2_user_demo"
PROXY_PASS = "secret_pass_123"
ROTATION_URL = "https://pxm2.io/api/v1/rotate/userproxy_1029/"

proxy_config = {
    "server": f"http://{PROXY_HOST}:{PROXY_PORT}",
    "username": PROXY_USER,
    "password": PROXY_PASS,
}

def rotate_mobile_ip():
    """Trigger cellular modem reconnect to cycle mobile IP in 5-10 seconds."""
    resp = requests.get(ROTATION_URL, timeout=15)
    if resp.status_code == 200:
        print("[PXM2] Cellular IP successfully rotated!")

# Launch Camoufox with automatic location synchronization
with Camoufox(
    proxy=proxy_config,
    geoip=True,           # Aligns timezone, locale, and WebRTC to proxy IP
    os="windows",         # Consistent OS fingerprint
    headless=True
) as browser:
    page = browser.new_page()
    page.goto("https://iphey.com")
    print("Security evaluation loaded under genuine cellular carrier ASN!")
Полная аутентификация прокси, автоматическая синхронизация часовых поясов и удаленная ротация IP-адресов.
Защита от ботов Почему CGNAT-провайдер PXM2 предотвращает блокировку подсетей в Cloudflare и DataDome

Облачные хостинг-провайдеры (AWS, DigitalOcean, Hetzner) выделяют последовательные подсети IPv4 с маской /24. Когда скрейпер превышает лимиты пропускной способности, брандмауэры одновременно блокируют весь блок из 256 адресов.

В отличие от этого, мобильные прокси PXM2 4G/5G направляют трафик через физические корпоративные модемы операторов мобильной связи уровня Tier-1 (Verizon, AT&T, Vodafone, Orange). Мобильные операторы используют технологию Carrier Grade NAT (CGNAT), при которой тысячи легитимных смартфонов совместно используют один общедоступный IP-адрес. Механизмы защиты от ботов не могут заблокировать сотовый адрес CGNAT, не заблокировав при этом тысячи подлинных мобильных абонентов.

Масштабирование более 50 одновременных сессий: пул нескольких прокси и обход Cloudflare

Запустить от 5 до 10 вкладок браузера очень просто. Запуск от 50 до 100 одновременных пользователей браузера, очищающих защищенные конечные точки или управляющих конвейерами с несколькими учетными записями, — вот где происходит сбой наивной архитектуры автоматизации.

При масштабировании конвейеров с высоким уровнем параллелизма инженеры сталкиваются с двумя основными препятствиями:

Узкое место в памяти: раздутый хром на 30 ГБ

Для создания 50 отдельных процессов браузера Chromium легко требуется 25–35 ГБ ОЗУ. Утечки памяти вкладок во время длительных циклов очистки неизбежно приводят к уничтожению Linux OOM-killer (недостаточно памяти) и отбрасыванию сокетов.

Противодействие ботам: каскадный запрет подсети

Маршрутизация 50 потоков через общий центр обработки данных или жилые пулы запускает ограничение скорости Cloudflare. Один помеченный запрос часто сжигает всю IP-подсеть /24, блокируя одновременно все 50 рабочих процессов.

Решение: объедините AsyncCamoufox с пулом асинхронных рабочих семафоров, привяжите каждого рабочего процесса к изолированному выделенному мобильному модему PXM2 4G/5G и включите автоматическую синхронизацию GeoIP. Поскольку движок C++ Camoufox позволяет избежать тяжелых перехватов прототипов JS, потребление памяти снижается до 75%, при этом каждый рабочий процесс сохраняет независимую энтропию отпечатков пальцев.

Python · Пул из более чем 50 сеансовых рабочих процессов с высокой степенью параллелизма
import asyncio
import aiohttp
from camoufox.async_api import AsyncCamoufox

# Concurrency & Worker Limits: 50 concurrent browser sessions
MAX_CONCURRENT_SESSIONS = 50
semaphore = asyncio.Semaphore(MAX_CONCURRENT_SESSIONS)

# Pool of 50 dedicated PXM2 4G/5G mobile modems (separate ports / credentials)
PXM2_MOBILE_PROXIES = [
    f"http://user_demo:pass_demo@gate.pxm2.io:{30000 + i}"
    for i in range(50)
]

# Remote IP rotation webhook API
PXM2_ROTATE_API = "https://pxm2.io/api/v1/rotate/modem_{id}/"

async def rotate_modem(modem_id: int):
    """Trigger remote modem cellular reconnect to cycle carrier IP in ~5-10s."""
    url = PXM2_ROTATE_API.format(id=modem_id)
    async with aiohttp.ClientSession() as session:
        async with session.get(url, timeout=10) as resp:
            if resp.status == 200:
                print(f"[Modem {modem_id}] Fresh cellular CGNAT IP acquired.")

async def run_worker(worker_id: int, target_url: str):
    """Worker handling single scraping task within the 50-concurrency semaphore boundary."""
    modem_id = worker_id % len(PXM2_MOBILE_PROXIES)
    proxy_endpoint = PXM2_MOBILE_PROXIES[modem_id]

    async with semaphore:
        # Launch lightweight Camoufox instance tailored for 50+ concurrency:
        # 1. geoip=True aligns timezone/locale/WebRTC to carrier egress IP automatically
        # 2. block_images=True saves cellular proxy bandwidth and cuts memory by 65%
        # 3. humanize=True generates authentic bezier mouse trajectories across challenges
        async with AsyncCamoufox(
            headless=True,
            geoip=True,
            proxy={"server": proxy_endpoint},
            humanize=True,
            block_images=True,
        ) as browser:
            page = await browser.new_page()
            try:
                print(f"[Worker {worker_id}] Connecting via Modem {modem_id} to {target_url}...")
                response = await page.goto(target_url, wait_until="domcontentloaded", timeout=45000)

                # Check if Cloudflare Turnstile or DataDome challenge is present
                turnstile_frame = page.frame_locator("iframe[src*='challenges.cloudflare.com']")
                checkbox = turnstile_frame.locator("input[type='checkbox']")
                
                if await checkbox.count() > 0:
                    print(f"[Worker {worker_id}] Cloudflare Turnstile challenge detected. Executing humanized click...")
                    await checkbox.click()
                    await page.wait_for_timeout(3000)

                # Validate bypass and extract required payload
                title = await page.title()
                if "Just a moment" in title or "Attention Required" in title:
                    print(f"[Worker {worker_id}] WAF challenge flagged! Triggering IP rotation on Modem {modem_id}...")
                    await rotate_modem(modem_id)
                    raise RuntimeError("WAF challenge encountered; IP rotated.")

                print(f"[Worker {worker_id}] Succeeded! Page Title: {title}")
                data = await page.content()
                return data

            except Exception as e:
                print(f"[Worker {worker_id}] Failed with error: {e}")
                return None
            finally:
                # Critical: page.close() prevents socket and memory leaks across long runs
                await page.close()

async def main():
    target_tasks = [
        f"https://target-portal.com/catalog/item/{i}" 
        for i in range(200)
    ]
    
    print(f"Starting {len(target_tasks)} tasks across {MAX_CONCURRENT_SESSIONS} concurrent workers...")
    jobs = [run_worker(i, url) for i, url in enumerate(target_tasks)]
    results = await asyncio.gather(*jobs, return_exceptions=True)
    successful = [r for r in results if r and not isinstance(r, Exception)]
    print(f"Batch completed: {len(successful)}/{len(target_tasks)} tasks resolved successfully.")

if __name__ == "__main__":
    asyncio.run(main())
Рабочий асинхронный рабочий пул, управляющий 50 одновременными сеансами браузера с выделенными модемами и автоматической ротацией.

Гуманизированная защита от ботов на основе анализа движений и поведения мышей

Современные межсетевые экраны веб-приложений (WAF) отслеживают данные датчиков: векторы скорости движения мыши, временные метки событий щелчков и кривые ускорения. Мгновенная «телепортация» координат (по умолчанию — метод page.click() в Playwright) сразу же сигнализирует о наличии автоматизированного сеанса.

Camoufox поддерживает опцию «humanize», которая имитирует естественное движение курсора по кривой Безье со стохастическими колебаниями скорости:

Python · Гуманизированные траектории мыши Безье
from camoufox.sync_api import Camoufox

with Camoufox(
    humanize=True,        # Enables curved bezier mouse trajectories
    headless=False
) as browser:
    page = browser.new_page()
    page.goto("https://nowsecure.nl")
    
    # Cursor moves along a realistic physical path
    page.click("button#verify-button")
    page.wait_for_timeout(3000)
Генерирует аутентичные траектории перетаскивания мыши и дрожание для удовлетворения требований биометрических датчиков

Обход Cloudflare Turnstile и DataDome с помощью постоянных контекстов

Cloudflare Turnstile и DataDome проверяют целостность браузера при входе. Если ваш скрейпер сохраняет постоянный профиль браузера, токены доступа (такие как cf_clearance) сохраняются между сессиями, что избавляет от необходимости повторно проходить CAPTCHA.

Python · Постоянный контекст для обхода турникета Cloudflare
from camoufox.sync_api import Camoufox

# Store session cookies and local storage on disk
PROFILE_DIR = "./camoufox_profile"

with Camoufox(
    persistent_context=True,
    user_data_dir=PROFILE_DIR,
    disable_coop=True,    # Required to click elements inside cross-origin iframes
    headless=False,
    window=(1366, 768)
) as browser:
    page = browser.new_page()
    page.goto("https://target-portal.com/login")
    
    # If a Turnstile challenge is present, wait and click checkbox
    page.wait_for_selector("iframe[src*='challenges.cloudflare.com']", timeout=10000)
    page.wait_for_timeout(2000)
    
    # Click within iframe boundary
    turnstile_box = page.frame_locator("iframe[src*='challenges.cloudflare.com']")
    turnstile_box.locator("input[type='checkbox']").click()
    page.wait_for_timeout(5000)
    
    # Next execution reuses the cf_clearance cookie from PROFILE_DIR!
Файлы cookie очистки остаются кэшированными в user_data_dir для последующих операций без чтения.

Работа в режиме без монитора на серверах Linux с виртуальными дисплеями

На производственных серверах под Linux без графического интерфейса пользователя в чистом режиме без графического интерфейса (headless=True) возникают незначительные расхождения при оценке данных с графического процессора и холста. Camoufox поддерживает параметр headless='virtual', который в фоновом режиме запускает изолированный виртуальный сервер фреймбуфера Xvfb.

Производственная среда Linux Чистый режим без монитора против виртуального фреймбуфера дисплея (Xvfb)

Скрипты для защиты от ботов вычисляют разницу в задержке рендеринга между программными растризаторами SwiftShader и реальным отображением в окне. Стандартный режим без графического интерфейса легко обнаружить, поскольку размеры экрана, глубина цвета и расширения WebGL указывают значения по умолчанию для этого режима.

При запуске с параметром headless='virtual' Camoufox подключается к внутреннему буферу виртуального дисплея X11. Браузер ведёт себя точно так же, как окно на рабочем столе, с реальными размерами экрана и полными профилями аппаратного ускорения, полностью обходя эвристические алгоритмы, предназначенные для бездисплейного режима.

Python · Безголовое производство Linux с виртуальным дисплеем
from camoufox.sync_api import Camoufox

# Linux headless server requires xvfb package installed:
# sudo apt-get install -y xvfb libgtk-3-0 libasound2

with Camoufox(
    headless="virtual",   # Uses Xvfb virtual display buffer
    block_images=True,    # Optimizes proxy bandwidth usage
    block_webrtc=False    # Spoofs WebRTC IP to match proxy without leaking local IP
) as browser:
    page = browser.new_page()
    page.goto("https://bot.incolumitas.com")
    print("Passed Incolumitas bot detection test on headless server!")
Оптимальная производительность и скрытность для рабочих парсеров, развернутых на Ubuntu/Debian VPS.

Тест на защиту от ботов: Camoufox против стандартных фреймворков

Мы протестировали распространенные конфигурации автоматизации на соответствие четырем самым строгим в отрасли тестам на защиту от ботов. Обратите внимание, как сочетание Camoufox с мобильными прокси PXM2 4G/5G обеспечивает непревзойденную устойчивость к обнаружению:

Платформа + уровень IP Оценка CreepJS Cloudflare Turnstile Защита DataDome Иммунитет к блокировке подсети
«Stock Playwright» (Chromium) 14 % (высокий риск) Заблокировано Мгновенная CAPTCHA Нет (запрет /24)
Кукловод-Экстра-Скрытность 52% (Отмечено) Прерывистый Заблокировано (JS-хуки) Нет
Camoufox + прокси-сервер для центров обработки данных 86% (Скрытность) 50% (помечено как IP) 40% — процент сдавших экзамен Риск блокировки подсети
Camoufox + PXM2 4G/5G для мобильных устройств 98 % (чистое устройство) 99,4 % с первого раза 98,8% невидимый 100% (имунитет к CGNAT)
Совет по повышению производительности: При скрапинге каталогов с большим объемом текста включите в Camoufox параметры block_images=True и block_webgl=True. Это позволяет сократить потребление мобильного трафика более чем на 65 % и ускорить загрузку страниц.

Часто задаваемые вопросы

Что такое Camoufox и чем он превосходит стандартный Playwright?

Camoufox — это браузер с открытым исходным кодом, обеспечивающий анонимность, созданный на базе Mozilla Firefox. В отличие от плагинов для анонимного просмотра на базе Chrome, которые модифицируют API JavaScript методом «monkey-patching» (что позволяет скриптам для борьбы с ботами обнаруживать их посредством анализа прототипов), Camoufox вставляет подлинные отпечатки устройства непосредственно в исходный код Firefox на языке C++ до запуска JavaScript.

Почему мне следует использовать Camoufox в сочетании с мобильными прокси 4G/5G, а не с IP-адресами из дата-центров?

Даже если «отпечатки» браузера выглядят достоверно, IP-адреса центров обработки данных принадлежат хостинг-провайдерам, которые мгновенно запускают CAPTCHA. Мобильные прокси маршрутизируют трафик через реальных операторов сотовой связи с использованием Carrier Grade NAT (CGNAT), при этом каждый IP-адрес используют тысячи реальных мобильных пользователей, что делает невозможным их блокировку брандмауэрами, защищающими от ботов.

Как справиться с проверками Cloudflare Turnstile и DataDome с помощью Camoufox?

Используйте параметр `persistent_context=True` вместе с `user_data_dir` для кэширования проверочных файлов cookie (таких как `cf_clearance`). Включите параметр `disable_coop=True`, чтобы разрешить автоматические клики внутри междоменных iframe, и сочетайте его с параметром `humanize=True` для имитации естественных движений мыши.

Можно ли запустить Camoufox на VPS с Linux без графического интерфейса или в Docker?

Да. На серверах под Linux без монитора настройте параметр headless="virtual". Camoufox автоматически будет использовать виртуальный дисплей Xvfb, обеспечивающий полную растризацию на графическом процессоре и аутентичные свойства дисплея, которые предотвращают обнаружение браузера в режиме без монитора.

Поддерживает ли Camoufox API для удаленной смены IP-адресов?

Да. Вы можете вызывать конечные точки API PXM2 для смены IP-адресов с помощью стандартных HTTP-запросов Python (requests.get) между циклами работы браузера. При смене IP-адресов Camoufox с параметром geoip=True автоматически повторно синхронизирует соответствующие атрибуты геолокации.

Как масштабировать Camoufox до более чем 50 одновременных сеансов, не исчерпав при этом оперативную память?

Не запускайте 50 отдельных процессов браузера. Вместо этого реализуйте асинхронный рабочий пул, используя asyncio.Semaphore(50) с AsyncCamoufox, и привязывайте каждый сеанс к выделенному мобильному модему PXM2. Включите block_images=True, чтобы уменьшить объем памяти с 30+ ГБ до 4–5 ГБ, сохраняя при этом независимую энтропию отпечатков пальцев C++ и автоматическое выравнивание GeoIP для каждого сеанса.

Сопутствующие ресурсы для разработчиков

Обеспечьте работу ваших скребкеров Camoufox с помощью прокси-серверов PXM2 4G/5G

Обходите самые строгие антибот-брандмауэры с помощью подлинных модемов сотовых операторов в более чем 50 странах. Выделенная пропускная способность, API для мгновенной удаленной смены IP-адресов и неограниченная пропускная способность.

Получите выделенные мобильные прокси