Camoufox Proxy и GeoIP: Ваш выходной IP — это отпечаток
Включите geoip, и Camoufox определит ваш часовой пояс, язык, координаты и поддельный WebRTC-адрес на основе выходного IP прокси. Это делает неправильно маркированный прокси более заметным, чем его отсутствие.
Большинство учебников по Camoufox proxy заканчиваются на двух строках, которые устанавливают proxy и geoip=True. Последствия этого никто не записывает: с включенным geoip Camoufox определяет ваш часовой пояс, язык, широту, долготу и поддельный WebRTC-адрес на основе выходного IP прокси. Прокси перестает быть сетевым переходом и становится источником правды для всей идентичности. Подайте ему неправильно маркированный или переработанный выход, и Camoufox создаст идеально согласованный отпечаток вокруг лжи — более сильный сигнал, чем отсутствие подделки вообще. Вот настройка, ошибки, которые люди вставляют в Google, пробел в SOCKS5 и как сначала проверить выходной IP.
Что geoip на самом деле определяет из вашего прокси
Camoufox — это антидетектная сборка Firefox, которая оборачивает Python API Playwright, поэтому конфигурация прокси имеет форму Playwright. Гео-слой — это то, что делает его отличным. Согласно документации проекта, geoip=True (или целевой IP-адрес) заставляет Camoufox использовать долготу, широту, часовой пояс, страну и язык целевого IP, а также подделывать IP-адрес WebRTC — затем идет дальше, вычисляя язык браузера на основе распределения носителей языка в этом регионе, а не по умолчанию на официальный язык страны. Поиск выполняется в базе данных формата MaxMind, которая поставляется как дополнительная опция:
pip install -U "camoufox[geoip]"
python -m camoufox fetch
Дополнение [geoip] является опциональным только в смысле упаковки — в документации оно называется настоятельно рекомендуемым, если вы используете прокси, и это заниженная оценка. Без него вы получаете скрытый браузер, работающий в часовом поясе и языке вашего хост-машины, в то время как его IP утверждает, что он находится в другой стране. Вот минимальная рабочая настройка с аутентифицированным HTTP-шлюзом:
from camoufox.sync_api import Camoufox
with Camoufox(
geoip=True,
humanize=True, # cursor movement, not a fingerprint setting
headless=False,
proxy={
"server": "http://gate.quantumproxies.io:PORT",
"username": "USER",
"password": "PASS",
},
) as browser:
page = browser.new_page()
page.goto("https://httpbin.org/ip")
print(page.text_content("body")) # should be the exit IP, not yours
Обратите внимание на форму словаря proxy: учетные данные помещаются в отдельные поля username и password, никогда внутри URL server. Это унаследовано от Playwright, и это причина, по которой аутентифицированные прокси здесь просты — нет необходимости в расширении, нет диалога аутентификации для закрытия. Асинхронный API идентичен через AsyncCamoufox. Чтобы узнать, как это сравнивается с другими скрытыми стеками, смотрите нашу карту поддержки аутентифицированных прокси в антидетектных фреймворках.
Почему неправильный прокси разоблачает вас
Антибот-системы редко охотятся за одним плохим значением. Они охотятся за противоречиями — двумя сигналами, которые не могут быть одновременно правдивыми для одного и того же человека. Браузер, сообщающий Europe/Rome с IP, который геолокализуется в Огайо, — это один из них. Функция geoip Camoufox существует, чтобы устранить этот класс противоречий, и она делает это хорошо. Подвох в том, что она всегда разрешает противоречие в пользу IP. Если база данных говорит, что ваш выход находится в Германии, но адрес — это переработанный диапазон дата-центра, который половина интернета уже пометила как прокси, Camoufox добросовестно представит ваш браузер как немецкого домашнего пользователя, сидящего на ASN, который ни один немецкий домашний пользователь никогда не использовал.
Это делает качество выхода проблемой отпечатка, а не только блокировки. Две проверки должны быть в каждом запуске: реальный ASN и страна выхода, и имеет ли IP уже оценку мошенничества или прокси. Наш бесплатный проверщик качества IP отвечает на оба вопроса, и резидентные прокси на реальных диапазонах ISP в более чем 200 странах делают полученную идентичность вообще правдоподобной. Ничто из этого не освобождает вас от нижнего уровня — движок все еще излучает TLS рукопожатие, и JA3/JA4 отпечатки читают его до того, как ваши поддельные значения когда-либо отправляются.

Ошибки прокси Camoufox, с которыми вы действительно столкнетесь
Три сбоя доминируют в трекере проблем, и ни один из них не означает, что ваши учетные данные неверны:
InvalidProxy: Failed to connect to proxy— возникает до запуска браузера, и это побочный эффект geoip. Camoufox разрешает ваш выходной адрес через список публичных IP API, чтобы знать, что искать. Эти конечные точки используют HTTPS, поэтому прокси, который не может туннелировать TLS через CONNECT, не проходит проверку, даже если простой HTTP через него успешен (обсуждение #397). Уберитеgeoip, и тот же прокси 'работает' — это точно неправильное исправление.Page.goto: NS_ERROR_PROXY_CONNECTION_REFUSED— отказ на уровне Firefox. Проблема #294 документирует это дляlaunch_server(): строка прокси, которая работает при обычном запуске, не работает, когда браузер запускается как сервер и управляется через его WebSocket конечную точку, учетные данные действительны. Сначала проверьте прокси при прямом запуске, чтобы знать, какой уровень сломан.- geoip плюс выход IPv6 — ошибка поиска, где та же база данных в порядке для IPv4 (обсуждение #241). На пуле IPv6 разрешите адрес самостоятельно и передайте его.
Чистое обходное решение для первого и третьего случая документировано, но мало используется: geoip принимает IP-адрес, а не только True. Разрешите выход самостоятельно через тот же прокси, затем передайте Camoufox ответ. Вы полностью пропускаете внутренний поиск, и в качестве бонуса можете записать, на каком выходе выполнялась каждая сессия:
import requests
from camoufox.sync_api import Camoufox
HOST = "gate.quantumproxies.io:PORT"
USER, PASS = "USER-session-a1b2", "PASS" # sticky session id in the username
PROXY = {"server": f"http://{HOST}", "username": USER, "password": PASS}
url = f"http://{USER}:{PASS}@{HOST}" # percent-encode odd characters
# 1) resolve the exit through the same gateway and session
exit_ip = requests.get(
"https://api.ipify.org", proxies={"http": url, "https": url}, timeout=15
).text.strip()
# 2) hand Camoufox the address instead of letting it discover one
with Camoufox(geoip=exit_ip, proxy=PROXY, humanize=True) as browser:
page = browser.new_page()
page.goto("https://browserscan.net")
print("session exit:", exit_ip)
Два момента имеют значение. Используйте стабильную сессию, чтобы IP, разрешенный на первом шаге, оставался выходом на втором — при ротации по запросу это разные адреса, и полученное гео неверно с первой загрузки страницы. И кодируйте учетные данные, содержащие @, : или #: форма словаря защищена, форма URL — нет.
Camoufox и SOCKS5: пробелы WebRTC и аутентификации
SOCKS5 — это то место, где пользователи Camoufox застревают, и причина более интересна, чем отсутствие функции. Проблема #368 точно формулирует это: без прокси, который поддерживает UDP, WebRTC может вас разоблачить. WebRTC ведет переговоры по UDP, HTTP-прокси поддерживают только TCP, и SOCKS5 — это единственный распространенный протокол с режимом ассоциации UDP — именно поэтому люди хотят его здесь. Ответ Camoufox — подделка адреса WebRTC из данных geoip вместо маршрутизации медиапути, и это покрывает обычную утечку. Опция block_webrtc полностью удаляет поверхность, за счет того, что браузер выглядит как с отключенным WebRTC.
Аутентифицированный SOCKS5 — это более сложный пробел. Обсуждение #334 — это пользователь, который спрашивает о трюке и сообщает, что единственное, что сработало, — это запуск локального прокси-сервера для перенаправления трафика браузера в конечную точку SOCKS5 с логином и паролем. Это все еще текущее состояние дел, и это оставляет вам три варианта, в порядке предпочтения:
- Аутентификация по белому списку IP. Добавьте адрес вашей машины или сервера в разрешенный список, и конечная точка SOCKS5 не нуждается в учетных данных вообще. Каждый план QuantumProxies предоставляет доступ к HTTP и SOCKS5 конечным точкам и поддерживает белый список как альтернативу user:pass, что делает это исправлением в одну строку, а не экзотическим.
- Используйте HTTP-порт того же шлюза. Если вам специально не нужен UDP, HTTP(S) с учетными данными в словаре вызывает меньше проблем. Наш анализ различий между SOCKS5 и HTTP прокси объясняет, когда разница имеет значение.
- Запустите локальный релей, который принимает неаутентифицированное соединение на
127.0.0.1и добавляет учетные данные вверх по потоку — обходное решение из #334. Укажите Camoufox наsocks5://127.0.0.1:1080и позвольте реле аутентифицироваться.
Получите конечные точки SOCKS5 с белым списком IP

Контрольный список перед запуском, прежде чем вы доверитесь geoip
- Разрешите выходной IP через прокси и запишите его с идентификатором сессии. Если вы не можете назвать адрес, который использовался в запуске, вы не можете отладить блокировку, которую он получил.
- Проверьте реальную страну и ASN выхода на соответствие тому, что заявляет пул. Несоответствия стран отравляют каждый полученный сигнал.
- Закрепите стабильную сессию на весь срок службы браузера. Ротация в середине сессии меняет IP под отпечатком, рассчитанным для старого.
- Загрузите тестовую страницу отпечатка один раз на пул, а не один раз на проект — часовой пояс, язык и значения WebRTC меняются с выходом.
- Выберите
block_webrtcили подделку WebRTC на основе geoip для каждой цели и сохраняйте ее последовательной в пределах сессии.
Часто задаваемые вопросы
Как установить прокси в Camoufox?
Передайте словарь в стиле Playwright в конструктор Camoufox(): proxy={"server": "http://host:port", "username": "USER", "password": "PASS"}. Учетные данные должны находиться в отдельных полях, а не в URL сервера. Добавьте geoip=True вместе с ним, чтобы часовой пояс, язык и координаты определялись из этого выхода, а не из вашей хост-машины.
Поддерживает ли Camoufox прокси SOCKS5?
Словарь прокси принимает сервер socks5://, но аутентифицированный SOCKS5 — это известная проблема — обсуждение #334 сообщает о локальном реле как о единственном надежном маршруте, и полная поддержка SOCKS5 все еще является открытым запросом на улучшение (#368). Практическое решение — это белый список IP, который полностью убирает требование к учетным данным, или использование HTTP-порта шлюза.
Что делает geoip=True в Camoufox?
Он ищет выходной IP в базе данных формата MaxMind и использует результат для установки долготы, широты, часового пояса, страны и языка браузера, подделки адреса WebRTC и выбора правдоподобного языка для региона. Для этого требуется установленное дополнение camoufox[geoip]. Вы также можете передать строку IP вместо True, чтобы пропустить этап самопоиска.
Почему я получаю InvalidProxy: Failed to connect to proxy?
Потому что предварительная проверка geoip не смогла достичь публичного IP API через ваш прокси. Эти конечные точки используют HTTPS, поэтому прокси должен поддерживать туннелирование CONNECT; шлюз, который только пересылает простой HTTP, здесь не проходит, хотя кажется, что работает в других местах. Проверьте с HTTPS-запросом через тот же прокси или разрешите выход самостоятельно и передайте его как geoip="1.2.3.4".
Опция geoip в Camoufox — это лучший аргумент в экосистеме в пользу траты денег на качество IP, а не на большее количество кода обхода. Она берет самую сложную часть согласованности отпечатка — согласование браузера с сетью — и решает ее автоматически, при условии, что сеть говорит правду. Сначала купите выход, затем включите geoip. Если вам нужен Chromium, а не Firefox, та же дисциплина переносится на наше руководство по настройке прокси Patchright. Это техническое руководство, а не юридическая консультация: скрапьте в рамках закона и условий цели.