Назад к обновлениям
New releaseAug 21, 2026

camoufox v152.0.4-beta.29

🦊 Антидетект-браузер

Поделиться

Camoufox

Camoufox — это браузер с открытым исходным кодом для обхода антидетекта, созданный для веб-скрапинга и AI-агентов. 🦊

daijro%2Fcamoufox | Trendshift
Total Downloads Monthly Downloads Weekly Downloads

⚠️ Проект находится в разработке. Он может быть не пригоден для стабильного продакшена. ⚠️


[!NOTE] Вся актуальная документация доступна на camoufox.com.

[!NOTE] Разработка браузера ведется на github.com/CloverLabsAI/camoufox и github.com/VulpineOS/VulpineOS.
Этот репозиторий используется для слияния чекпойнт-релизов и должен рассматриваться как мастер-копия.


Спонсоры

Показать/Скрыть все

Scrapfly.io Scrapfly — это корпоративное решение, предоставляющее Web Scraping API, которое упрощает процесс сбора данных, беря на себя всё: рендеринг в реальном браузере, ротацию прокси и подмену отпечатков (TLS, HTTP, браузер) для обхода всех основных антибот-систем. Scrapfly также обеспечивает наблюдаемость с помощью аналитической панели и детального измерения показателей успешности/блокировки.
cloverlabs.ai Clover Labs — это венчурная студия из Торонто, создающая AI-агентов для роста и дистрибуции.
color horizontal SerpApi, веб-поисковый API для сбора данных с Google и других поисковых систем с помощью простого API.
color horizontal Talordata — это простой веб-поисковый API для сбора данных с Google и других поисковых систем по доле от стоимости. Получите 1000 бесплатных запросов при регистрации и платите всего $0.25 за 1000 успешных ответов — без платы за неудачные запросы.
Используйте купон CAMOUFOX для скидки 10% на резидентные прокси. [Discord]
color horizontal Веб-данные, которые переживают антиботы.
Crawlbase предоставляет разработчикам и AI-командам надежные данные в масштабе: краулер с 99% успешностью, Crawling API, Smart AI Proxies и Web MCP Server, которые пробиваются, чтобы ваши скраперы и агенты не ломались. Вы создаете — мы занимаемся инфраструктурой.

Получите скидку 15% на первые 3 месяца с кодом CAMOUFOXcrawlbase.com

scrappey Scrappey — это Web Scraping API, который взимает плату только за успешные парсинги по модели оплаты по мере использования — без подписок. Парсинг сложных сайтов. Резидентные прокси включены, нет скрытых платежей за прокси или истекающих балансов. Один API для прямого HTTP, полного рендеринга браузера, страниц с тяжелым JavaScript, скриншотов, сессий, 30+ действий браузера и 200+ одновременных сессий — доверено 1000+ разработчикам и AI-агентам. Получите скидку 10% с кодом CAMOUFOX.

Провайдеры прокси

Camoufox предназначен для использования с ротируемыми прокси (желательно резидентными IP). Ознакомьтесь с этими провайдерами:

proxyempire 🚀 Camoufox × ProxyEmpire
Используете Camoufox? Ваш прокси-слой решает, масштабироваться вам — или быть заблокированным.
ProxyEmpire предоставляет:
• 🌍 30M+ резидентных IP (170+ стран)
• 📱 4G/5G мобильные прокси
• 🔄 Ротируемые и статические сессии
• ⚡ Неограниченное количество одновременных сессий
• 🎯 Точное гео-таргетирование
• Поддержка HTTP, HTTPS и SOCKS5
Разработано для скрапинга, автоматизации и высокостелс-воркфлоу.
🔥 Эксклюзивное предложение — используйте код Camoufox30
Получите 30% постоянную скидку (не только на первый месяц). Улучшите свои прокси. Сократите блокировки. Масштабируйтесь правильно.
birdproxies Привет, мы создали BirdProxies, потому что прокси не должны быть сложными или переоцененными. Быстрые резидентные и ISP прокси в 195+ локациях, справедливые цены и настоящая поддержка.
Попробуйте нашу игру FlappyBird на лендинге, чтобы получить бесплатные данные!
Попробовать сейчас | Discord
rapidproxy RapidProxy — Усильте свои данные с премиальными прокси.
🎁 Попробуйте прокси бесплатно + Используйте код RAPID10 для скидки 10%
Почему выбирают RapidProxy?
• 🌍 90M+ IP в 200+ странах и регионах
• ♾️ Трафик без срока действия — используйте в любое время, без давления
• 🔥 Неограниченная многопоточность для максимальной производительности
• 💰 От $0.65/GB — создано для масштабирования
• 📍 Таргетирование на уровне города для точного географического доступа
• 🔄 Гибкое управление сессиями под ваши нужды
Не упустите возможность — начните бесплатную пробную версию сегодня и ощутите быструю, стабильную и масштабируемую производительность прокси с RapidProxy.
swiftproxy SwiftproxyВысокопроизводительные резидентные прокси для масштабируемого сбора данных
Создано для разработчиков, которым нужна надежная антидетект-инфраструктура прокси. Swiftproxy обеспечивает стабильные соединения, высокие показатели успешности и гибкий контроль для крупномасштабного скрапинга и автоматизации.
• 🌍 195+ локаций с этично полученными резидентными IP
• 🔄 Ротируемые и статические сессии с точным гео-таргетингом
• ⚡ Оптимизировано для антибана и высокого процента успеха
• 🔌 Поддержка HTTP / HTTPS / SOCKS5
• 🧪 Бесплатный триал 500MB для тестирования
• 💸 Специальный код скидки для пользователей Camoufox: PROXY90 - 10%
Лучше всего для: веб-скрапинг, автоматизация, мультиаккаунтинг и крупномасштабное извлечение данных
mangoproxy MangoProxy — это сервис резидентных, ISP, мобильных и дата-центр прокси, разработанный для профессиональных задач, где важны стабильность, скорость и анонимность.
Используйте код DAIJRO для скидки 8% на статические ISP прокси
9proxy 9Proxy предоставляет резидентные прокси от $0.018/IP или $0.68/GB. 20M+ IP в 90+ странах. Статические или ротируемые сессии, управление с десктопного или мобильного приложения.
nodemaven NodeMaven: Самый надежный провайдер прокси с наивысшим качеством IP на рынке.
Лучшее решение для автоматизации, веб-скрапинга, SEO-исследований и управления социальными сетями.
NodeMaven предлагает:
• Статические сессии до 7 дней
• 99.9% аптайм
• Фильтрация IP: все прокси имеют fraud score <97%
• KYC не требуется
• Кэшбэк за трафик — сжигайте GB и получайте до 10% обратно
Специальное предложение: Используйте код CAMOUFOX35 для скидки 35% на прокси.
proxidize Proxidize | Мобильные и резидентные прокси для Camoufox
Используете Camoufox в масштабе? Настройка браузера — это только половина стека. Ваш прокси-слой тоже имеет значение.
Proxidize предоставляет мобильные и резидентные прокси, созданные для скрапинга, автоматизации браузера, SEO-мониторинга, AI-агентов и рабочих процессов сбора данных.
Почему Proxidize?
• Реальные 4G и 5G мобильные прокси
• Резидентные прокси в 195+ странах
• Ротируемые и статические сессии
• Таргетинг на уровне города и оператора
• Неограниченная многопоточность
• Поддержка HTTP(S), SOCKS5 и UDP через SOCKS
• Не требуется оборудование или самостоятельная настройка
Создано для команд, которым нужна надежная прокси-инфраструктура без необходимости управлять устройствами, серверами или ротацией прокси самостоятельно.
Специальное предложение для пользователей Camoufox: Используйте код CAMOUFOX20 для скидки 20%.
Начать сейчас: https://proxidize.com

Введение

Camoufox — это форк Firefox, разработанный для веб-скрапинга и AI-агентов. Он безголовый, необнаруживаемый и оптимизирован для работы в масштабе. Каждый запуск получает новую идентичность, основанную на реальном распределении устройств, что позволяет ему сливаться с обычным трафиком, а не выделяться.

Основные возможности

  • Создан для AI-агентов 🤖
    • Минималистичный, облегченный Firefox — быстрый запуск, дешевый в эксплуатации
    • Совместимость с Playwright "из коробки" через Python-интерфейс
    • Невидим для антибот-систем, поэтому вы можете запускать кластер агентов локально или в облаке без блокировок
  • Необнаруживаемость по дизайну 🎭
  • Внедрение и ротация отпечатков (без JS-инъекции!)
    • Все свойства navigator (устройство, ОС, оборудование, браузер и т.д.) ✅
    • Свойства экрана, разрешения, окна и области просмотра ✅
    • Подмена геолокации, часового пояса, локали и Intl ✅
    • Подмена IP WebRTC на уровне протокола ✅
    • Голоса, скорость воспроизведения речи и т.д. ✅
    • И многое, многое другое!
  • Защита от графического снятия отпечатков
    • Параметры WebGL, поддерживаемые расширения, атрибуты контекста и форматы точности шейдеров ✅
    • Подмена шрифтов и анти-фingerprinting ✅
  • Оптимизирован для автоматизации
    • Человекоподобные движения мыши 🖱️
    • Блокирует и обходит рекламу 🛡️
    • Нет CSS-анимаций 💨
  • Облегчен и оптимизирован для эффективного использования памяти ⚡
  • PyPi пакет для обновлений и автоматической инъекции отпечатков 📦
  • Всегда обновляется до последней версии Firefox 🕓

Внедрение отпечатков

В Camoufox данные перехватываются на уровне реализации C++, что делает изменения необнаружимыми при проверке через JavaScript.

Чтобы подменить отдельные свойства отпечатка, передайте JSON с подменяемыми свойствами в Python-интерфейс:```py

with Camoufox(config={"property": "value"}) as browser:

Данные конфигурации, не заданные пользователем, будут автоматически заполнены с использованием отпечатков [BrowserForge](https://github.com/daijro/browserforge), которые имитируют статистическое распределение характеристик устройств в реальном трафике.

[[Посмотреть реализованные свойства](https://camoufox.com/fingerprint/)]

---

## Использование Python

Camoufox совместим с вашим существующим кодом Playwright. Вам нужно только изменить инициализацию браузера.

**Sync API**```python
from camoufox.sync_api import Camoufox

with Camoufox() as browser:
    page = browser.new_page()
    page.goto("https://example.com")

Асинхронный API```python from camoufox.async_api import AsyncCamoufox

async with AsyncCamoufox() as browser: page = await browser.new_page() await page.goto("https://example.com")

[[Установка и использование](https://camoufox.com/python/)]

### Полноценное использование спуфинга оборудования

Для стабильных версий следует всегда использовать основной pip-пакет [`camoufox`](https://pypi.org/project/camoufox/). Однако если вы хотите использовать контекстные отпечатки и спуфинг оборудования, используйте пакет [`cloverlabs-camoufox`](https://pypi.org/project/cloverlabs-camoufox/). Этот пакет обновляется с каждым релизом, тогда как официальный пакет выходит с задержкой.

Убедитесь, что вы используете виртуальное окружение, чтобы избежать конфликтов между этими двумя пакетами.

**Установка**```bash
pip install cloverlabs-camoufox

Загрузить последнюю предварительную версию браузера (рекомендуется для новейших исправлений)```bash python -m camoufox sync python -m camoufox set official/prerelease python -m camoufox fetch

**Использование** — API идентичен исходному пакету:```python
from camoufox.sync_api import Camoufox

with Camoufox() as browser:
    page = browser.new_page()
    page.goto("https://example.com")

Реальные пресеты отпечатков (рекомендуется для бинарников v149+)

По умолчанию значения отпечатков синтезируются BrowserForge. Для лучшего обхода сложных проверок целостности используйте встроенные пресеты — реальные отпечатки, собранные из реального трафика Firefox.```python with Camoufox(fingerprint_preset=True, os="macos") as browser: ...

Библиотека автоматически выбирает маршрут по версии бинарного файла: Firefox ≥ 149 загружает `fingerprint-presets-v150.json` (312 пресетов, охватывающих v149–v152, 67 macOS / 180 Windows / 65 Linux); более старые бинарные файлы возвращаются к исходному пакету. Строки UA переписываются, чтобы соответствовать активному бинарному файлу, поэтому согласие безопасно для всех версий. Передайте словарь пресетов вместо `True`, чтобы зафиксировать конкретный отпечаток.

---

## Возможности

Ниже приведён список исправлений и функций, реализованных в Camoufox.

### Подмена отпечатка браузера

- Подмена свойств навигатора (устройство, браузер, локаль и т. д.)
- Поддержка эмуляции размера экрана, разрешения и т. д.
- Подмена параметров WebGL, поддерживаемых расширений, атрибутов контекста и форматов точности шейдеров.
- Подмена размеров внутреннего и внешнего окна просмотра
- Подмена частоты дискретизации AudioContext, задержки вывода и максимального количества каналов
- Подмена голосов устройств и скорости воспроизведения
- Подмена количества доступных микрофонов, веб-камер и динамиков.
- Сетевые заголовки (Accept-Languages и User-Agent) подменяются в соответствии со свойствами навигатора
- Подмена IP WebRTC на уровне протокола
- Подмена геолокации, часового пояса и локали
- Подмена Battery API
- и т. д.

### Скрытые исправления

- Избегает утечек выполнения в основном контексте страницы. Весь JavaScript агента страницы изолирован в песочнице
- Избегает утечек контекста выполнения фреймов
- Исправляет обнаружение `navigator.webdriver`
- Исправляет обнаружение безголового режима Firefox по типу указателя ([#26](https://github.com/daijro/camoufox/issues/26))
- Удалены потенциально утекающие исправления анти-зума/обработки мета-вьюпорта
- Использует нестандартные размеры экрана и окна
- Повторное включение изоляции контента Fission
- Повторное включение PDF.js
- Изменены другие утекающие свойства конфигурации
- Движение курсора, подобное человеческому

### Защита от отпечатков шрифтов

- Автоматически использует правильные системные шрифты для вашего User Agent
- Включает системные шрифты Windows, Mac и Linux
- Предотвращает получение отпечатка метрик шрифта путём случайного смещения межбуквенного интервала

### Поддержка Playwright

- Пользовательская реализация Playwright для последней версии Firefox
- Различные исправления конфигурации для обхода обнаружения ботов

### Деблоатинг / Оптимизации

- Вырезаны / отключены _очень, очень многие_ сервисы Mozilla. Работает быстрее, чем оригинальный Mozilla Firefox, и использует меньше памяти (200 МБ)
- Исправления из LibreWolf и Ghostery для удаления телеметрии и блоата
- Конфигурация деблоатинга из PeskyFox, LibreWolf и других
- Оптимизации скорости и сети из FastFox
- Удалены все CSS-анимации
- Минималистичное оформление
- и т. д.

### Дополнения

- Загрузка дополнений Firefox без сервера отладки путём передачи списка путей в свойство `addons`
- Добавлен uBlock Origin с пользовательскими фильтрами приватности
- Дополнениям не разрешается открывать вкладки
- Дополнения автоматически включаются в режиме приватного просмотра
- Дополнения автоматически закрепляются на панели инструментов
- Исправляет утечки DNS с предварительной выборкой uBO

### Интерфейс Python

- Автоматически генерирует и внедряет уникальные характеристики устройства в Camoufox на основе их реального распределения
- Внедрение и ротация отпечатка WebGL
- Использует правильные системные шрифты, субпиксельное сглаживание и хинтинг в зависимости от целевой ОС
- Избегает обнаружения прокси путём вычисления целевой геолокации, часового пояса и локали из целевого региона прокси
- Вычисляет и подменяет язык браузера на основе распределения носителей языка в целевом регионе прокси
- Размещение на удалённом сервере для использования Camoufox с другими языками, поддерживающими Playwright
- Встроенный буфер виртуального дисплея для запуска Camoufox с отображением на безголовом сервере
- Переключение загрузки изображений, WebRTC и WebGL
- и т. д.

> [!NOTE]
> Camoufox **не** полностью поддерживает внедрение отпечатков Chromium. Некоторые WAF (например, [Interstitial](https://nopecha.com/demo/cloudflare)) проверяют поведение движка Spidermonkey, которое невозможно подделать.

---

# Обзор скрытности

## Как Camoufox скрывает свою библиотеку автоматизации

> [!WARNING]
> **Текущий статус на 2026 год**:
> Был годичный перерыв в поддержке из-за личных обстоятельств. Производительность Camoufox снизилась из-за базовой версии Firefox и недавно обнаруженных несоответствий в отпечатках. **Camoufox находится в активной разработке.**

В Camoufox весь код внутреннего агента страницы Playwright изолирован и изолирован. Это делает невозможным для страницы обнаружить присутствие Playwright с помощью проверок JavaScript.

Обычно Playwright внедряет в страницу некоторый JavaScript, такой как `window.__playwright__binding__`, и выполняет такие действия, как запрос элементов, оценка JavaScript или запуск скриптов инициализации, которые могут быть обнаружены веб-сайтами. В Camoufox эти действия обрабатываются в изолированной области вне страницы. Другими словами, веб-сайты больше не могут «видеть» какой-либо JavaScript, который Playwright обычно внедряет. Это полностью предотвращает следы Playwright.

Однако, даже скрывая свою библиотеку автоматизации, Camoufox не застрахован от несоответствий при ротации отпечатков. Для выявления и исправления таких проблем всё ещё требуется поддержка.

### Взаимодействие со страницами

Антибот-системы также запускают клиентские скрипты для мониторинга вашего поведения. Например, они ищут закономерности в движениях мыши, кликах, прокрутке и временных интервалах между действиями.

<video controls src="https://github.com/user-attachments/assets/6d33d6af-3537-4603-bf24-6bd3f4f8f455" width="200px" loop muted></video>

Camoufox старается изо всех сил со своим алгоритмом движения мыши, подобным человеческому. Алгоритм естественного движения изначально был взят из [HumanCursor от riflosnake](https://github.com/riflosnake/HumanCursor) и переписан на C++ с модификациями для более точных траекторий с учётом расстояния.

Однако это не идеально. Он всё ещё может быть обнаружен при достаточно сложном анализе. (В разработке на будущее)

---

## Как Camoufox меняет идентичности

AI-агентам необходимо работать в разных сессиях, не получая блокировок или ограничений скорости. Ротации IP-адреса недостаточно — каждая сессия браузера передаёт тысячи сигналов, создающих уникальный **отпечаток**. Веб-сайт может видеть вашу ОС, GPU, разрешение экрана, шрифты, часовой пояс и многое другое. Если эти сигналы несовместимы или необычны, вы будете заблокированы.

### Распределение рыночных долей

Даже если вы меняете IP-адрес для каждого запущенного экземпляра бота, межсетевые экраны могут использовать машинное обучение для анализа входящего веб-трафика на предмет аномалий. Если доля Linux составляла 5%, но внезапно стала 20%, это тревожный сигнал. Они потребуют от всех пользователей Linux проходить капчу без исключений.

Camoufox использует генератор отпечатков [BrowserForge](https://github.com/daijro/browserforge), чтобы имитировать статистическое распределение данных устройств в реальном трафике. Например, Camoufox сделает ваш браузер похожим на пользователя Linux в 5% случаев. Из этих 5% в 9,5% случаев будет подделано разрешение экрана 2560x1440, а в 27,5% — GPU Intel HD.

### Как можно обнаружить Camoufox?

Camoufox может подделывать отпечатки с правильной рыночной долей. Однако **отпечатки также должны быть внутренне согласованы.** Пользовательский агент Windows с Apple M1 GPU, пользовательский агент macOS с рендерером Windows DirectX и мобильное устройство с разрешением рабочего стола — всё это невозможно и будет отмечено как подозрительное.

Из тысяч возможных точек данных, которые необходимо изменить для создания правдоподобного поддельного отпечатка, где каждое изменение должно быть согласовано с другими, Camoufox не всегда преуспевает. Антибот-провайдеры неоднократно тестируют Camoufox, чтобы найти хотя бы одну уникальную несостыковку, а затем сразу же обновляют свои фоновые скрипты для её проверки.

---

## Сравнение Camoufox с другими решениями

### Решения на основе JavaScript

В прошлом разработчики пытались внедрять JavaScript для подмены этих значений, но это ненадёжно, поскольку JavaScript не может подделать всё. Неполное покрытие приводит к несовместимым отпечаткам. Например, антибот-система заблокирует вас, если User Agent в сетевом запросе не совпадает с User Agent в навигаторе.

Кроме того, любой внедрённый JavaScript так или иначе обнаруживается. Антибот-системы могут проверить, не показывает ли `Object.getOwnPropertyDescriptor` перезаписанное свойство, не возвращает ли `toString()` функции `[native code]` (что указывает на перехват), или не отличаются ли данные в контексте окна от данных в рабочем потоке. Обходные пути помогают лишь до определённого момента, но при достаточном углублении всегда можно найти способ обнаружения внедрения JS.

#### Подход Camoufox

Поскольку Camoufox перехватывает вызовы на уровне реализации C++ браузера, все перехваченные объекты и свойства выглядят нативными. Отсутствует обнаружение перехвата JavaScript.

Camoufox также старается генерировать согласованные и правдоподобные отпечатки с помощью Browserforge. Однако это всё ещё может быть обнаружено с помощью сложных методов определения несоответствий (как описано выше).

<hr width=50>

### Библиотеки на основе CDP

CDP (Chrome DevTools Protocol) — это протокол автоматизации, встроенный в Chromium и Firefox. Однако CDP не пытается скрыть тот факт, что это протокол автоматизации, и раскрывает многие свои функции в области страницы. Некоторые распространённые методы: проверка `navigator.webdriver` на true, обнаружение чтения отладчика стека, проверка переменных, которые ChromeDriver внедряет в объект document для внутренней связи, и многое другое.

#### Подход Camoufox

В то время как Playwright использует CDP для управления Chromium, для Firefox он использует _Juggler_. Juggler — это пользовательский протокол, разработанный до того, как Firefox поддержал CDP ([оригинальный репозиторий](https://github.com/puppeteer/juggler)). Это отдельный модуль внутри Firefox, не являющийся частью его ядра. Это упрощает его редактирование и контроль над тем, что раскрывается странице.

Camoufox модифицирует Juggler, предоставляя ему собственную изолированную «копию» страницы для работы. Playwright может свободно читать и редактировать свою собственную версию страницы. Всё выглядит нормально для Playwright, но реальная страница совершенно не затрагивается этими изменениями. Страница также не может обнаружить, когда что-то читается (с помощью трюков вроде перехвата геттеров) или добавляются прослушиватели для наблюдения за элементами.

Кроме того, Juggler отправляет свои входные данные напрямую через оригинальные обработчики ввода Firefox, что означает, что они обрабатываются точно так же, как если бы вы использовали браузер обычным образом. Camoufox также модифицирует безголовый режим Firefox, чтобы он выглядел так же, как при работе в обычном окне. Однако в качестве запасного варианта библиотека Python может запускать Camoufox в [виртуальном дисплее](https://camoufox.com/python/virtual-display/), если безголовый режим когда-либо даст утечку.

---

<h1 align="center">Система сборки</h1>

> [!WARNING]
> Содержимое ниже предназначено для тех, кто заинтересован в сборке и отладке Camoufox. Инструкции по использованию Playwright см. [здесь](https://github.com/daijro/camoufox/tree/main/pythonlib#camoufox-python-interface).

### Обзор

Вот диаграмма системы сборки и связанных с ней make-команд:```mermaid
graph TD
    FFSRC[Firefox Source] -->|make fetch| REPO

    subgraph REPO[Camoufox Repository]
        PATCHES[Fingerprint masking patches]
        ADDONS[uBlock & B.P.C.]
        DEBLOAT[Debloat/optimizations]
        SYSTEM_FONTS[Win, Mac, Linux fonts]
        JUGGLER[Patched Juggler]
    end

    subgraph Local
    REPO -->|make dir| PATCH[Patched Source]
    PATCH -->|make build| BUILD[Built]
    BUILD -->|make package-linux| LINUX[Linux Portable]
    BUILD -->|make package-windows| WIN[Windows Portable]
    BUILD -->|make package-macos| MAC[macOS Portable]
    end

Это было основано на системе сборки LibreWolf.

Сборка CLI

[!WARNING] Система сборки Camoufox предназначена для использования в Linux. WSL не будет работать!

Сначала клонируйте этот репозиторий с помощью Git:

git clone --depth 1 --branch main https://github.com/daudix/camoufox.git
``````bash
git clone --depth 1 https://github.com/daijro/camoufox
cd camoufox

Далее, соберите исходный код Camoufox с помощью следующей команды:```bash make dir

Перед начальной загрузкой (bootstrapping) установите системные зависимости сборки с помощью вспомогательного скрипта. Он определяет вашу платформу и устанавливает всё необходимое для сборки (Python ≥ 3.11, Rust, `aria2`, `p7zip`, `go`, `msitools`, `wget`, `sqlite` и основные инструменты сборки) с использованием соответствующего менеджера пакетов — Homebrew на macOS или `apt`/`dnf`/`pacman` на Linux:```bash
bash scripts/install-deps.sh

[!NOTE] Установщик зависимостей на данный момент протестирован только на macOS.

После этого вам нужно выполнить начальную настройку системы, чтобы иметь возможность собрать Camoufox. Вам нужно сделать это только один раз. Это делается с помощью следующей команды:```bash make bootstrap

Наконец, вы можете собрать и упаковать Camoufox следующей командой:```bash
python3 multibuild.py --target linux windows macos --arch x86_64 arm64 i686

Для новых сборок, i686 поддерживается только для Windows. Неподдерживаемые комбинации целей/архитектур пропускаются.

Параметры CLI ```bash Options: -h, --help show this help message and exit --target {linux,windows,macos} [{linux,windows,macos} ...] Target platforms to build --arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...] Target architectures to build for each platform --bootstrap Bootstrap the build system --clean Clean the build directory before starting

Example: $ python3 multibuild.py --target linux windows macos --arch x86_64 arm64

</details>

### Использование Docker

Camoufox можно собрать через Docker на всех платформах.

1. Создайте Docker-образ, содержащий исходный код Firefox:```bash
docker build -t camoufox-builder .
  1. Соберите патчи Camoufox для целевой платформы и архитектуры:```bash docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target --arch
<details>
<summary>
Как я могу использовать локальную директорию ~/.mozbuild?
</summary>

Если вы хотите использовать директорию .mozbuild хоста, вы можете использовать следующую команду для запуска docker:```bash
docker run \
  -v "$HOME/.mozbuild":/root/.mozbuild:rw,z \
  -v "$(pwd)/dist:/app/dist" \
  camoufox-builder \
  --target <os> \
  --arch <arch>
Параметры Docker CLI ```bash Options: -h, --help show this help message and exit --target {linux,windows,macos} [{linux,windows,macos} ...] Target platforms to build --arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...] Target architectures to build for each platform --bootstrap Bootstrap the build system --clean Clean the build directory before starting

Example: $ docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target windows macos linux --arch x86_64 arm64 i686

</details>

Артефакты сборки теперь будут отображаться в папке `dist/`.

---

## Инструменты разработки

Этот репозиторий включает интерфейс разработчика в файле scripts/developer.py:```
make edits

Патчи можно редактировать, создавать, удалять и управлять ими здесь.

Как сделать патч

  1. В интерфейсе разработчика нажмите Сбросить рабочее пространство.
  2. Внесите необходимые изменения в папку camoufox-*/. Вы можете проверить изменения с помощью make build и make run.
  3. После завершения изменений нажмите Записать рабочее пространство в патч и сохраните файл патча.

Как работать с существующим патчем

  1. В интерфейсе разработчика нажмите Редактировать патч.
  2. Выберите патч, который хотите отредактировать. Ваше рабочее пространство будет сброшено до состояния выбранного патча.
  3. После внесения изменений нажмите Записать рабочее пространство в патч и перезапишите существующий файл патча.

Отладка утечек

Это блок-схема, демонстрирующая мой процесс определения утечек без деобфускации JavaScript WAF. Метод постепенно повторно вводит функции Camoufox в исходный код Firefox до тех пор, пока тестовый сайт не сработает.

Для этого процесса требуется система Linux и предполагается, что у вас установлены инструменты сборки Firefox (см. здесь).

См. блок-схему... ```mermaid flowchart TD A[Start] --> B[Does website flag in the official Firefox?] B -->|Yes| C[Likely bad IP/rate-limiting. If the website fails on both headless and headful mode on the official Firefox distribution, the issue is not with the browser.] B -->|No| D["Run make ff-dbg(1) and build(2) a clean distribution of Firefox. Does the website flag in Firefox **headless** mode(4)?"] D -->|Yes| E["Does the website flag in headful mode(3) AND headless mode(4)?"] D -->|No| F["Open the developer UI(5), apply config.patch, then rebuild(2). Does the website still flag(3)?"] E -->|No| G["Enable privacy.resistFingerprinting in the config(6). Does the website still flag(3)?"] E -->|Yes| C G -->|No| H["In the config(6), enable FPP and start omitting overrides until you find the one that fixed the leak."] G -->|Yes| I[If you get to this point, you may need to deobfuscate the Javascript behind the website to identify what it's testing.] F -->|Yes| K["Open the developer UI, apply the playwright bootstrap patch, then rebuild. Does it still flag?"] F -->|No| J["Omit options from camoufox.cfg(6) and rerun(3) until you find the one causing the leak."] K -->|No| M[Juggler needs to be debugged to locate the leak.] K -->|Yes| L[The issue has nothing to do with Playwright. Apply the rest of the Camoufox patches one by one until the one causing the leak is found.] M --> I ``` #### Cited Commands
#КомандаОписание
(1)make ff-dbgНастройка обычного Firefox с минимальными патчами.
(2)make buildСборка исходного кода.
(3)make runЗапуск собранного браузера.
(4)make run args="--headless https://test.com"Запуск URL в безголовом режиме. Все перенаправления будут выведены в консоль, чтобы определить, прошёл ли тест.
(5)make editsОткрывает интерфейс разработчика. Позволяет пользователю применять/отменять патчи и видеть, какие патчи в настоящее время применены.
(6)make edit-cfgРедактирование camoufox.cfg в редакторе по умолчанию.

Благодарности

Очистка и ссылки:

Веб-скрапинг и тестирование:

  • riflosnake/HumanCursor: Оригинальный алгоритм движения курсора, похожего на человеческий, портированный на C++
  • CreepJS, Browserleaks, BrowserScan — ценные сайты для тестирования утечек

Оформление пользовательского интерфейса:

Категории