
HTTP-прокси следующего поколения для скрытной работы, который идеально маскирует запросы под браузер Chrome на всех уровнях стека.
"Не верю, термооптический камуфляж!"
Это 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
(То же самое касается и нашего TLS-отпечатка JA4, и т. д.).
Чтобы запустить прокси 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)./dev/dri и позволяет встроенному контейнеру Chrome переключиться на путь рендеринга NVIDIA/Vulkan. Чтобы использовать это, запустите docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build.curl, requests и т. д.) с thermoptic, просто настройте прокси, и ваши отпечатки будут учтены../hooks/onstart.js.http://127.0.0.1:14111) для управления окном Dockerized Chrome. Полезно для ручного входа на сайты, а затем бесшовного использования прокси для выполнения запросов от имени вашей авторизованной сессии (и для отладки).UPSTREAM_PROXY в docker-compose.yml.
curl, с thermoptic, установленным в качестве прокси.thermoptic анализирует запрос, чтобы наилучшим образом определить, каким типом запроса браузера он должен быть (например, ручной переход по URL? Отправка формы? Запрос fetch()?).thermoptic использует Chrome Debugging Protocol (CDP) для управления браузером и настройки страницы, которая имитирует запрос точно так, как он обычно происходил бы в реальном веб-браузере.thermoptic инициирует запрос через сымитированный контекст и захватывает HTTP-ответ.thermoptic отправляет HTTP-ответ обратно клиенту.Благодаря тому, что браузер фактически выполняет запрос, используя весь свой стек, итоговые отпечатки JA4 идентичны.
ПРИМЕЧАНИЕ: Поскольку многие WAF применяют фингерпринтинг веб-браузеров на уровне JavaScript, thermoptic также предоставляет хуки для использования браузера на ключевых этапах процесса скрейпинга. См. этот раздел для получения дополнительной информации об этом.
Говоря прямо: другие подходы имеют фундаментальные недостатки, которые не позволяют им быть практичным долгосрочным решением проблемы фингерпринтинга браузера.
Многие другие попытки «обойти» фингерпринтинг браузера JA4+ делают это путём повторной реализации различных слоёв стека браузера. У этого подхода есть ряд серьёзных недостатков, таких как: