Cloudflare Turnstile: як працює і як його розв'язувати (скоро)
Cloudflare Turnstile — це капча, яка зазвичай нічого не вимагає від відвідувача. Вона виконує перевірки у браузері, і в більшості випадків проходить без жодної головоломки. Якщо система не впевнена, може показати короткий інтерактивний крок. Тоді віджет записує токен у форму, а сайт перевіряє цей токен у Cloudflare. Підтримка Turnstile у Scarnox скоро з'явиться. Цей посібник пояснює, як працює віджет, чому його часто плутають з іншими викликами, і які є загальні підходи для легітимної роботи.
Як вбудовується віджет
Сторінка містить контейнер з класом cf-turnstile і атрибутом data-sitekey. Скрипт Turnstile завантажується, виконує свої перевірки і додає приховане поле cf-turnstile-response. Значення цього поля і є токеном. Форма надсилає його разом з іншими полями, а бекенд сайту передає його в endpoint перевірки Cloudflare разом із секретним ключем сайту.
Як і інші токен-віджети, перевірка відбувається на сервері. Форма, яка приймає будь-яке значення в цьому полі без перевірки, насправді не захищена.
Режими та що вони означають для скрипта
Turnstile може працювати в кількох режимах. У керованому режимі (managed) Cloudflare сам вирішує, чи показати інтерактивний крок. У неінтерактивному режимі віджет ніколи нічого не просить у відвідувача, а лише показує статус. У невидимому режимі нічого не відображається взагалі. Для скрипта режим змінює те, що ви побачите на сторінці, але результат той самий: токен у полі форми, який перевіряється на сервері.
Токени короткоживучі і одноразові. Відправляйте форму одразу після того, як віджет створив токен, і не використовуйте повторно токен, який уже було перевірено.
Чому він блокує автоматизацію
Turnstile дивиться на сигнали з середовища браузера та на поведінку сесії. Типовий headless-браузер, відсутні або неузгоджені можливості браузера, нова сесія без історії і підозріла мережева адреса можуть підштовхнути рішення до виклику або блокування. Це сигнали тієї самої родини, що й в інших перевірках на основі оцінки, тому й підходи схожі.
Легітимні підходи
Ці підходи працюють для легітимної роботи:
- Використовуйте справжній браузер для сторінок, які завантажують Turnstile. Звичайний профіль браузера з послідовними налаштуваннями рідше отримує виклик, ніж голе автоматизаційне збирання. Посібник про виявлення headless-браузера перелічує поширені сигнали.
- Залишайтеся в сесії. Зберігайте cookie між сторінками вашого процесу, щоб відвідувач не виглядав новим на кожному запиті.
- Дотримуйтесь темпу запитів. Стабільний, схожий на людський темп зменшує кількість викликів набагато більше, ніж будь-який окремий трюк.
- Спершу прочитайте правила захищеного сайту. Багато захищених сайтів публікують API або стрічку. Перевірте це, перш ніж будувати процес у браузері. Посібник про скрапінг сайтів, захищених Cloudflare розглядає підхід докладніше.
- Використовуйте тестові ключі в розробці. Cloudflare публікує тестові sitekey для розробки, які дають передбачувані результати без справжньої перевірки. Вони для ваших інтеграційних тестів, а не для продакшн-трафіку.
- Запитайте власника. Якщо сайт ваш, ви можете налаштувати Turnstile для шляхів, які використовують ваші автоматизовані тести. Якщо ні, попросіть allowlist або API.
Що робитиме солвер Turnstile
Солвер Turnstile на основі токенів приймає sitekey і URL сторінки, створює дійсний токен для поля cf-turnstile-response і повертає його вашому коду. Ваш код записує токен у форму і швидко відправляє її. Це той самий патерн, що й у чинній інтеграції PopularCaptcha, лише з іншим типом завдання.
Scarnox ще не розв'язує Turnstile у реальному часі. Єдиний чинний тип завдання сьогодні — PopularCaptcha, proxyless. Turnstile скоро з'явиться, а деталі його запиту будуть у довіднику API, коли підтримка запрацює. Не будуйте під припущений інтерфейс до того часу.
Типові помилки
Інтеграції Turnstile зазвичай ламаються кількома передбачуваними способами. Найчастіший — використання токена після прострочення або після того, як його вже перевірили. Токени одноразові, тож повтор після невдалої відправки форми потребує свіжого результату віджета, а не старого значення. Друга помилка — sitekey від іншого середовища. Ключ для розробки на продакшн-сторінці або навпаки дає збій перевірки, який схожий на баг у вашому коді. Перш ніж щось налагоджувати, перевірте, який ключ використовує сторінка.
Інша поширена помилка — сприймати інтерактивний крок як збій. У керованому режимі Turnstile може показати короткий крок деяким відвідувачам, і скрипт, який очікує тихого проходження, зупиниться. Побудуйте процес так, щоб він чекав результату віджета і обробляв випадок, коли віджет вимагає більше.
Нарешті, не жорстко прописуйте назву поля, не перевіривши її на живій сторінці. cf-turnstile-response — стандарт, але сайт може по-різному обгорнути віджет, і швидше прочитати відрендерену форму, ніж вгадувати.
Scrape responsibly
Скрапінг сайту, захищеного Turnstile, — звичайне завдання, і він потребує такої ж уваги, як будь-який інший скрапінг. Перевірте robots.txt і умови використання. Тримайте низький темп, не збирайте персональних даних, які вам не потрібні. Якщо сайт має API, віддавайте йому перевагу. Посібник про те, чи законний веб-скрапінг охоплює основні питання.
Підготовка
Створіть обліковий запис і почніть з безкоштовного пробного кредиту, картка не потрібна. Коли підтримка Turnstile з'явиться, ви зможете протестувати її на власних сторінках, перш ніж запускати що-небудь на живому сайті.