Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
thermoptic — HTTP-прокси следующего поколения для скрытной работы, который идеально маскирует запросы под браузер Chrome на всех уровнях стека. | Kitploit
Инструменты/GitHubGitHub/mandatoryprogrammer/thermoptic
Веб-прокси и перехватИнструменты для выдачи себя за другое лицоСбор информацииОбход WAFКраулерАнти-БотПодмена Цифрового ОтпечаткаОбход CAPTCHA
GitHubmandatoryprogrammer/thermoptic

thermoptic

HTTP-прокси следующего поколения для скрытной работы, который идеально маскирует запросы под браузер Chrome на всех уровнях стека.

Репозиторий
1.0k66286 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

thermoptic

«Не могу поверить, термооптический камуфляж!»

Что это?

Это HTTP-прокси, предназначенный для обхода сервисов, которые используют такие методы снятия отпечатков, как JA4+, для блокировки определённых HTTP-клиентов. С помощью этого прокси вы можете использовать привычные HTTP-клиенты, например curl, и при этом получать волшебным образом неотличимые от настоящего (Chrome/Chromium) веб-браузера отпечатки. thermoptic также включает несколько интересных функций для смягчения JavaScript-отпечатков. Кроме того, он упрощает гибридный скрапинг, позволяя использовать веб-браузер и низкоуровневые HTTP-клиенты вместе.

Даже если вы не знакомы с отпечатками JA4+, то, если вы когда-либо занимались скрапингом, вас, скорее всего, уже блокировали с их помощью. Популярные сервисы, такие как Cloudflare, используют подобные методы (и другие уловки), чтобы обнаруживать «нечеловеческих» HTTP-клиентов и блокировать их запросы. Эти сервисы также могут использовать это снятие отпечатков, чтобы определить, начали ли вы сессию в настоящем браузере, а затем переключились на низкоуровневый клиент вроде curl. thermoptic решает все эти проблемы, предоставляя единый «настоящий» отпечаток браузера для всех запросов скрапинга.

Пример

Вот пример отпечатка JA4H (HTTP) для curl без прокси:``` $ curl https://ja4db.com/id/ja4h/ ge11nn090000_b6a016211e8a_000000000000_e3b0c44298fc

Это сильно отличается от отпечатка, который Chrome создаёт при прямом посещении URL:```
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e

Однако, когда мы используем прокси для выполнения запроса, наш JA4H-отпечаток магическим образом становится идентичным:``` $ curl --proxy http://thermoptic:1234 https://ja4db.com/id/ja4h/ ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e

(То же самое касается и нашего JA4 TLS-отпечатка, и т. д.).

## Настройка

Чтобы запустить прокси `thermoptic`, который маскирует ваш трафик через контейнеризованный экземпляр Chrome на Ubuntu 22.04:

Обычная настройка Docker (работает на хостах без GPU-рантайма):```
docker compose up --build

Вот и всё, теперь вы можете проксировать трафик через него:``` curl --proxy http://127.0.0.1:1234 --insecure https://ja4db.com/id/ja4h/

Важные замечания:
* По умолчанию прокси работает без аутентификации. Если вы планируете открыть доступ к прокси извне, обязательно настройте аутентификацию с помощью переменных окружения `PROXY_USERNAME` и `PROXY_PASSWORD`.
* Если вы не хотите использовать `---insecure`, вам нужно использовать сгенерированный файл CA, расположенный в `./ssl/rootCA.crt`. Он создаётся при первом запуске `thermoptic`.
* Вы можете подключить `thermoptic` к любому экземпляру Chrome/Chromium, запущенному с флагом `--remote-debugging-port`. Это важно, так как вам захочется настроить и использовать прокси через более привычные окружения, чтобы ваш отпечаток был как можно более незаметным (например, Chrome в Windows).
* Переопределение GPU в compose предназначено для хостов NVIDIA, на которых уже установлены Docker-рантайм/тулкит NVIDIA. Оно резервирует GPU-устройство, монтирует `/dev/dri` и позволяет встроенному контейнеру Chrome переключиться на путь рендеринга NVIDIA/Vulkan. Чтобы использовать это, выполните `docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build`.

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

- 🕵️ [Проксирование с паритетом браузера](#how-does-this-cloaking-work-exactly), которое воспроизводит запросы через реальную сессию Chrome, чтобы соответствовать отпечаткам JA4 байт в байт.
- 🤝 Для интеграции вашего HTTP-клиента (например, `curl`, `requests` и т.д.) с `thermoptic` требуется мало или вообще не требуется пользовательского кода — просто [настройте прокси](#setup), и ваши отпечатки будут обработаны.
- 🪝 [Каркас хуков](#handling-browser-javascript-fingerprinting-with-thermoptic-hooks) для автоматизации before-request/after-request/on-start, позволяющий управлять полным браузером для решения задач или сбора артефактов.
  - 📘 Пример хука для решения Cloudflare turnstile можно увидеть в [`./hooks/onstart.js`](https://github.com/mandatoryprogrammer/thermoptic/blob/main/hooks/onstart.js).
- 🖥️ [Веб-интерфейс управления браузером](#control-the-dockerized-chrome-browser-via-web-ui-xpra) (по адресу `http://127.0.0.1:14111`) для управления окном браузера Chrome в Docker. Полезен для ручного входа на сайты, после чего можно seamlessly использовать прокси для выполнения запросов от имени вашей авторизованной сессии (а также для отладки).
- 🔌 Задайте URI вышестоящего HTTP- или SOCKS-прокси через переменную окружения `UPSTREAM_PROXY` в `docker-compose.yml`.
- 🛡️ Встроенные проверки работоспособности и контур управления перезапуском для обнаружения зависших браузеров и автоматического восстановления без постоянного участия оператора.
- ⚡ Поддержка HTTP/1.1 и HTTP/2, что позволяет проксировать трафик по любому из этих протоколов. (_Обратите внимание: вы можете общаться с прокси по HTTP/1.1, а управляемый Chrome может согласовывать с конечным сайтом другой протокол._)

## Как именно работает эта маскировка?

![Пример визуальной диаграммы](https://assets.kitploit.com/production/public/readmes/49068/f95c08eccfdbfce1b14513f2a5ad2a33a9b0fb0bd6851a2d005aedf4ff196338.png)

* HTTP-запрос выполняется с помощью HTTP-клиента, такого как `curl`, с `thermoptic` в качестве прокси.
* `thermoptic` анализирует запрос, чтобы наилучшим образом определить, каким браузерным запросом он *должен* быть (например, ручное посещение URL? Отправка формы? Запрос `fetch()`?).
* `thermoptic` использует [Chrome Debugging Protocol (CDP)](https://chromedevtools.github.io/devtools-protocol/) для управления браузером и настройки страницы, которая имитирует запрос точно так, как он обычно происходит в реальном веб-браузере.
* `thermoptic` запускает запрос через имитированный контекст и перехватывает HTTP-ответ.
* `thermoptic` отправляет HTTP-ответ обратно клиенту.

Благодаря тому, что запрос фактически выполняется браузером с использованием всего его стека, результирующие отпечатки JA4 идентичны.

ПРИМЕЧАНИЕ. Поскольку многие WAF используют JavaScript-фingerprinting на уровне браузера, `thermoptic` также предоставляет хуки для использования браузера на ключевых этапах процесса scraping. Дополнительную информацию см. в [этом разделе](#handling-browser-javascript-fingerprinting-with-thermoptic-hooks).

## Почему именно *такой* подход, а не другие решения?

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

Многие другие попытки «обойти» JA4+ фингерпринтинг браузера делают это путём повторной реализации различных уровней стека браузера. У такого подхода есть ряд серьёзных недостатков, например:

* Требуется большая осторожность, чтобы идеально соответствовать поведению «настоящей» реализации браузера. В результате *любые* особенности или расхождения могут быть использованы для отличия таких клиентов от «настоящей» реализации браузера.
* Попытка решить проблему только на одном уровне стека. Chrome использует несколько протоколов для обеспечения работы в веб-браузере. В результате, даже если вы создали идеально совпадающий TLS-уровень, ваш HTTP-уровень может вас выдать, если он не совпадает байт в байт.
* Поскольку «настоящие» браузеры регулярно меняют своё поведение, их отпечатки меняются, и в результате эти инструменты постоянно требуют более интенсивной разработки для компенсации.
Скачать инструмент