Обнаруживайте парсеры AI с помощью отпечатков пальцев TLS, а не пользовательских агентов
GPTBot, ClaudeBot и PerplexityBot теперь подделывают пользовательские агенты Chrome в более чем 30% запросов. Снятие отпечатков пальцев JA4 TLS улавливает их при рукопожатии еще до того, как ваш источник даже анализирует заголовки.
Ваш robots.txt говорит User-agent: GPTBot Disallow: /. GPTBot это уважает. Дюжина трубопроводов RAG, построенных на вершине requests, httpx, а безголовый Chrome со строкой Mozilla/5.0 в заголовках — нет. Недавние выборки трафика от крупных издателей показывают, что от 30 до 60% обращений Chrome происходят из стеков TLS, не связанных с браузером. Пользовательский агент — это театр; Клиент TLS Hello — это правда.
JA4, формат отпечатков пальцев TLS, опубликованный FoxIO в 2023 году, хэширует части Client Hello, которые клиент не может легко изменить, не разветвляя свою библиотеку TLS: порядок шифрования, расширения, ALPN, алгоритмы подписи. Настоящий Chrome и Python httpx скрипт имеет совершенно разные отпечатки пальцев, независимо от того, что он пишет в заголовке User-Agent. В этом посте показано, как читать JA4 на краю, классифицировать его по /v1/tls/fingerprintи примите меры до того, как запрос достигнет источника.
Как выглядит JA4
JA4 состоит из трех разделов, соединенных подчеркиванием. В первом разделе кодируется версия TLS, ALPN и количество шифров. Второй хэширует наборы шифров. Третий — расширения хэшей и алгоритмы подписи. Типичный отпечаток Chrome 124:
t13d1516h2_8daaf6152771_e5627efa2ab1
Питон httpx 0.27 клиент:
t13d1517h2_8daaf6152771_b1ff8ab2d16f
Тот же TLS 1.3, тот же ALPN h2, аналогичный хэш шифра, но хэш расширения отличается, потому что httpx согласовывает другой порядок расширения от BoringSSL. Этот третий раздел — дискриминатор, который ловит парсеры, выдающие себя за Chrome.
Классифицировать отпечаток пальца
Отправьте JA4 в /v1/tls/fingerprint и получите идентификационные данные клиента, вердикт и оценку доверия. Конечная точка поддерживает корпус отпечатков пальцев, индексированный по клиентской библиотеке и диапазону версий.
Пример ответа для Python httpx JA4 выше:
The verdict Поле — единственная часть, с которой вам нужно действовать на краю. browser_match — это логический ярлык для «является ли это какой-либо известной реальной версией браузера» и является полезным знаменателем для мониторинга.
Cloudflare Worker, 30 строк
Cloudflare предоставляет доступ к JA4 request.cf.ja4 для любой зоны с включенным снятием отпечатков TLS (бесплатно в плане Pro, доступно через заголовки Workers на бесплатном уровне с tls_client_hello запрос). Кэшируйте вердикт на час, поскольку отпечатки пальцев стабильны, пока не обновится клиентская библиотека.
Кэш поддерживает частоту вызовов API, пропорциональную уникальным отпечаткам пальцев, а не объему запросов. Типичный сайт видит менее 5000 отдельных JA4 в день, поэтому восходящий вызов в устойчивом состоянии встречается редко. Рабочие изоляты удаляют карту при холодном запуске, поэтому на практике кэш ограничен; для источников с высокой мощностью замените на caches.default с TTL 1 час.
В Экспрессе то же самое
Если ваш CDN пересылает JA4 в заголовке (Fastly's fastly-tls-ja4, Клаудфлер cf-ja4или свой собственный от вышестоящего Worker), обработчик происхождения представляет собой тонкое промежуточное программное обеспечение.
Решите действия для каждого приговора
Три пути реагирования охватывают большинство случаев. Не блокируйте неизвестную корзину; вы будете сжигать реальных пользователей на новых версиях браузеров.
Код статуса 402 введен намеренно. Он указывает операторам скреперов на /api за лицензирование, а не сообщать им, что они заблокированы, и именно это попадает в список «издателей, враждебно настроенных по отношению к ИИ». Дружественная версия дает вам случайного клиента API вместо нагромождения Twitter.
Измерьте влияние
Before flipping any block, log JA4 plus User-Agent for a week. Важная диаграмма - это «доля запросов, в которых User-Agent требует Chrome, а JA4 говорит о скрапере». Большинство команд видят от 15 до 40%. Это число и будет вашим радиусом поражения, если вы отправляете черный список только для User-Agent. После включения шлюзования на основе JA4 тот же график должен показать, что доля упала до однозначных цифр в течение нескольких часов.
Уровень бесплатного пользования botoi охватывает 1000 классификаций отпечатков пальцев в день (5 запросов в минуту). В сочетании с кешем этого достаточно для любого сайта малого и среднего размера. Возьмите ключ в botoi.com/api/signup.
Ссылка на конечную точку: API отпечатков пальцев TLS. Связанный: Наблюдение за API, когда агенты ИИ чаще всего обращаются к вам.
FAQ
- Почему пользовательские агенты больше не работают?
- Сканеры, обучающие ИИ, и их многочисленные имитаторы (настоящие боты, парсеры серого рынка, конвейеры RAG, созданные клиентами) все чаще отправляют «Mozilla/5.0 ... Chrome/120», потому что издатели добавили блоки robots.txt и User-Agent. Рукопожатие TLS устанавливается клиентской библиотекой (Go net/http, Python httpx, Node undici, headless Chrome), и его гораздо сложнее подделать, не переписывая клиент.
- Что такое JA4?
- JA4 — это формат отпечатков пальцев TLS Client Hello, опубликованный FoxIO в 2023 году. Он хеширует согласованную версию TLS, наборы шифров, расширения, ALPN и алгоритмы подписи в строку типа t13d1516h2_8daaf6152771_e5627efa2ab1. Два клиента, совместно использующие JA4, используют один и тот же стек TLS, независимо от того, что утверждает их заголовок User-Agent.
- Будет ли это блокировать реальных пользователей?
- Нет. В реальных Chrome, Safari и Firefox есть хорошо известные JA4, которые изменяются только при обновлении версии браузера. Конечная точка botoi помечает отпечатки пальцев, связанные с библиотеками очистки (curl, wget, Requests, httpx, Go default, Node undici, Headless Chrome с исправлениями для защиты от обнаружения). Вы разрешаете браузеру использовать отпечатки пальцев, а остальное оспариваете или ограничиваете.
- Могут ли парсеры подделать JA4?
- Да, с усилием. Такие инструменты, как Curl-impersonate и библиотека Python tls_client, могут имитировать Chrome JA4. Спуферы по-прежнему составляют небольшое меньшинство парсерского трафика в 2026 году, и как только идентификатор спуфера становится общедоступным, вы классифицируете его как любой другой отпечаток пальца. JA4 повышает стоимость одного HTTP-заголовка до разветвленной библиотеки TLS; этой стоимости достаточно, чтобы сдержать «длинный хвост».
- Как получить отпечаток пальца на краю?
- Cloudflare предоставляет ja4 для объекта запроса через cf.botManagement и для рабочих через request.cf.tlsClientHelloLength плюс ja4. Быстро предоставляет его через fastly.tls. AWS CloudFront does not yet expose it directly; маршрутизируйте через CF Worker или используйте конечную точку botoi /v1/tls/fingerprint с необработанным клиентским Hello.
Начните разработку с botoi
150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.