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 отпечатки читают его до того, как ваши поддельные значения когда-либо отправляются.

Диаграмма потока, показывающая, как резидентный выходной IP подает данные для поиска geoip Camoufox, который определяет часовой пояс, язык, координаты и адрес WebRTC до того, как отпечаток будет внедрен
С включенным geoip пять сигналов идентичности вычисляются из одного входа: выходного IP. Выберите этот вход неправильно, и вся цепочка будет согласованно неверной.

Ошибки прокси Camoufox, с которыми вы действительно столкнетесь

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

Чистое обходное решение для первого и третьего случая документировано, но мало используется: 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 с логином и паролем. Это все еще текущее состояние дел, и это оставляет вам три варианта, в порядке предпочтения:

Получите конечные точки SOCKS5 с белым списком IP

Контрольный список, сравнивающий согласованную идентичность Camoufox, построенную на проверенном резидентном выходе, с противоречивыми сигналами от неправильно маркированного прокси
Режим сбоя — это не отсутствие значения. Это уверенное значение, которое не соответствует IP за ним.

Контрольный список перед запуском, прежде чем вы доверитесь 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. Это техническое руководство, а не юридическая консультация: скрапьте в рамках закона и условий цели.

Запустите Camoufox на проверенных резидентных выходах