Попробовать
Назад к блогу

Как настроить прокси в Camoufox: примеры на Python, GeoIP и ротация

Как настроить прокси в Camoufox: примеры на Python, GeoIP и ротация

Прокси в Camoufox задаётся так же, как в Playwright: при запуске браузеру передаётся словарь с ключами server, username и password, и все вкладки выходят в сеть через этот адрес. Если добавить geoip=True, Camoufox сам определит, где находится выходной IP, и подстроит под него часовой пояс, язык, координаты и WebRTC-адрес.

Сам Camoufox — сборка Firefox с открытым кодом, заточенная под автоматизацию. Управляется она из Python через пакет camoufox и работает на Windows, macOS и Linux. Ниже — команды установки, рабочий скрипт, асинхронный вариант, закреплённые сессии и ротация, ограничение с SOCKS5, о которое спотыкаются чаще всего, проверка результата и разбор типичных ошибок.

Прокси для Camoufox

Резидентские прокси с выбором страны и закреплёнными сессиями для скриптов на Camoufox

Попробовать

Что понадобится

  • Python 3 с pip и терминал.
  • Данные прокси: протокол, хост, порт, логин и пароль. Лучше скопировать их из личного кабинета, чем набирать вручную.
  • Прокси под задачу. В документации Camoufox прямо советуют резидентские адреса. Для сайтов со строгой защитой обычно берут резидентские прокси, а тестовые стенды и нетребовательные ресурсы спокойно работают на более дешёвых серверных IP.

Шаг 1. Установите пакет и браузер

Дополнение geoip формально необязательно, но разработчики рекомендуют его всем, кто работает через прокси: в нём база, которая сопоставляет IP и местоположение.

pip install -U "camoufox[geoip]"
python -m camoufox fetch

Вторая команда скачивает саму модифицированную сборку Firefox. По умолчанию пакет следит за стабильным каналом; командой camoufox set можно закрепить конкретную версию, а camoufox list покажет, что уже установлено.

Шаг 2. Выберите тип прокси

ПроксиПоведение IPКогда подходит для Camoufox
Дата-центровыеПостоянный серверный IP, высокая скоростьНагрузочные тесты, стенды, сайты без антибота
Статические ISPПостоянный IP, зарегистрированный на провайдераДолгие сессии с авторизацией на одном адресе
Резидентские с ротациейНовый домашний IP на запрос или сессиюШирокая география, много независимых визитов
МобильныеIP оператора, общий для многих абонентовПлатформы, которые больше всего доверяют мобильным сетям

Браузеру безразлично, какой тип вы купили. Всё решают требования целевого сайта к IP и то, сколько должна жить одна «личность». Поэтому разница между закреплёнными и ротируемыми прокси здесь важнее чистой скорости.

Шаг 3. Передайте прокси в Python

Минимальный скрипт открывает одну вкладку через прокси и выводит адрес, который видит удалённая сторона. Все значения выдуманы — подставьте свои.

from camoufox.sync_api import Camoufox

relay = {
    "server": "http://203.0.113.25:8000",
    "username": "user-7f3k",
    "password": "s3cret-pass",
}

with Camoufox(proxy=relay, geoip=True, humanize=True) as ff:
    pg = ff.new_page()
    pg.goto("https://httpbin.org/ip")
    print(pg.inner_text("body"))

В server указываются схема, хост и порт одной строкой. Логин и пароль можно не писать, только если провайдер пускает вас по белому списку IP. Параметр humanize=True к прокси отношения не имеет — он делает движения курсора похожими на человеческие.

Асинхронный вариант

Для парсеров на asyncio есть класс AsyncCamoufox с теми же аргументами:

import asyncio
from camoufox.async_api import AsyncCamoufox

async def main_job():
    async with AsyncCamoufox(proxy=relay, geoip=True, headless=True) as ff:
        pg = await ff.new_page()
        await pg.goto("https://httpbin.org/ip")
        print(await pg.inner_text("body"))

asyncio.run(main_job())

На Linux-сервере без монитора вместо обычного headless можно указать headless="virtual" — браузер запустится внутри виртуального X-сервера.

Шаг 4. Включите GeoIP

С geoip=True Camoufox отправляет через прокси один запрос, узнаёт выходной адрес, берёт из базы долготу, широту, часовой пояс, страну и язык и подменяет WebRTC-адрес на тот же IP. Браузер с берлинским временем и техасским IP вызывает подозрения сразу, и эта опция убирает такое расхождение.

Если выходной адрес статического прокси известен заранее, его можно указать напрямую и обойтись без лишнего запроса:

with Camoufox(proxy=relay, geoip="203.0.113.25") as ff:
    ...

Геоданные вычисляются один раз — при запуске. Поэтому правило простое: один экземпляр Camoufox на один прокси. Если внутри того же браузера открыть контекст с другим прокси, он унаследует часовой пояс и язык первого адреса.

Закреплённые сессии и ротация

Многие сервисы дают один адрес шлюза, а страну и режим сессии читают из логина. Формат у каждого свой, поэтому строки ниже — только иллюстрация; точный синтаксис смотрите в личном кабинете.

pinned = dict(relay, username="user-7f3k-country-de-session-a91")
rolling = dict(relay, username="user-7f3k-country-de")
  • Закреплённая сессия. Шлюз держит один IP заданное время или пока не сменится идентификатор сессии. Это режим для входа в аккаунт, корзины и любых многошаговых сценариев. С geoip=True он ещё и безопаснее: определённая при запуске локация остаётся верной.
  • Ротация. Шлюз может выдавать новый IP на каждое соединение. Для разрозненных загрузок страниц это удобно, но часовой пояс, выбранный при старте, может разойтись со следующими адресами. Если нужны и ротация, и GeoIP, перезапускайте Camoufox для каждой новой «личности»:
for sid in ["a91", "b47", "c03"]:
    opts = dict(relay, username=f"user-7f3k-country-de-session-{sid}")
    with Camoufox(proxy=opts, geoip=True, headless=True) as ff:
        pg = ff.new_page()
        pg.goto("https://httpbin.org/ip")
        print(sid, pg.inner_text("body"))

SOCKS5 и авторизация

Playwright, а вместе с ним и Camoufox, принимает в поле server схему socks5://, но не передаёт SOCKS5-серверу логин и пароль. Выходов три:

  1. Подключиться к HTTP-порту того же прокси — авторизация по логину и паролю там работает сразу.
  2. Добавить IP своей машины в белый список в панели провайдера и ходить по SOCKS5 без учётных данных.
  3. Поднять локальный ретранслятор, который принимает SOCKS5 без пароля на localhost и пересылает трафик на защищённый сервер.

Для автоматизации браузера проще всего первый вариант. Когда выбор протокола действительно важен, разобрано в статье про SOCKS5 и HTTP-прокси.

Как проверить результат

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

  1. Сервис, который показывает IP, например httpbin.org/ip. Адрес должен принадлежать прокси, а не вашей сети.
  2. Проверку отпечатка, например BrowserScan. Сравните страну IP с часовым поясом, языком и WebRTC-адресом.
Отчет BrowserScan для американского IP в Техасе: Chrome 155 на Windows 11, часовой пояс IP America/Chicago, язык en-US, провайдер Charter Communications, Proxy No, Bot Detection No и подлинность отпечатка 100%
Страна IP, часовой пояс и язык должны совпадать

Если прокси не подключается вовсе, сначала проверьте его вне браузера в бесплатном чекере прокси. Так сразу станет ясно, что сломалось: прокси или скрипт.

Частые ошибки

NS_ERROR_PROXY_CONNECTION_REFUSED или таймаут. Неверный хост или порт либо порт работает по другому протоколу, чем указан в server.

407 Proxy Authentication Required или NS_ERROR_PROXY_AUTHENTICATION_FAILED. Ошибка в логине или пароле — часто это лишний пробел или потерянный суффикс с параметрами в логине.

SOCKS5 с логином и паролем не подключается. Такая связка не поддерживается; переходите на HTTP-порт или белый список IP.

Часовой пояс не совпадает с IP. Проверьте, что geoip задан и шлюз не сменил адрес между запуском и первой загрузкой страницы.

IP меняется посреди сценария. У вас ротируемый логин. Переключитесь на закреплённую сессию или статический адрес.

Camoufox рассчитан на работу из кода. Если команде удобнее настраивать профили мышкой, в нашей подборке инструкций по антидетект-браузерам есть десктопные альтернативы.

Частые вопросы о прокси в Camoufox

Поддерживает ли Camoufox прокси с логином и паролем?

Да, для HTTP- и HTTPS-прокси: логин и пароль передаются в ключах username и password. SOCKS5 с авторизацией не поддерживается, поэтому используйте HTTP-порт или белый список IP.

Что делает параметр geoip=True в Camoufox?

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

Можно ли задать разный прокси для каждой страницы?

Playwright позволяет назначить прокси отдельному контексту, но Camoufox рассчитывает геоданные один раз при запуске. Чтобы отпечаток был согласованным, запускайте отдельный экземпляр Camoufox под каждый прокси.

Camoufox бесплатный?

Да. Браузер и Python-пакет распространяются с открытым кодом, платить нужно только за подключаемые прокси.

Какие прокси лучше подходят для Camoufox?

Для сайтов со строгой защитой разработчики советуют резидентские IP. Дата-центровые адреса годятся для тестов и нетребовательных ресурсов, а закреплённые сессии — для любых задач, где нужно не терять авторизацию.