Scarnox · Blog

Як працює reCAPTCHA v2 і як її розв'язувати (скоро)

reCAPTCHA v2 - це класична капча Google. Вона показує прапорець з написом "Я не робот" і, коли не впевнена щодо відвідувача, додає завдання із зображеннями. Розв'язувачу для неї потрібно створити дійсний токен відповіді, який сайт зможе перевірити в Google. Підтримка reCAPTCHA v2 у Scarnox скоро з'явиться. Цей посібник пояснює, як працює віджет, які загальні підходи використовують люди сьогодні і чого очікувати від розв'язувача на основі токенів.

Scarnox ще не розв'язує reCAPTCHA v2 у роботі. Єдиний тип завдання, який працює сьогодні, - це PopularCaptcha без проксі. Якщо вашому проєкту потрібна reCAPTCHA v2 вже зараз, наведені нижче підходи є реалістичними варіантами.

Як працює віджет

Сторінка вбудовує контейнер з атрибутом data-sitekey. Цей sitekey ідентифікує сайт для Google. Коли віджет завантажується, він виконує перевірки в браузері, дивлячись на поведінку відвідувача, cookie та історію, і надсилає оцінку ризику до Google.

Якщо оцінка показує низький ризик, прапорець позначається сам, а віджет записує токен у приховане поле g-recaptcha-response. Якщо ризик вищий, відвідувач бачить завдання з зображеннями, наприклад вибір плиток, на яких є певний об'єкт. Проходження завдання теж записує токен.

Серверна частина сайту надсилає цей токен до кінцевої точки перевірки Google разом із секретним ключем сайту. Google повертає успіх або невдачу. Оскільки перевірка відбувається на сервері, форма, яка приймає токен без перевірки в Google, не захищена reCAPTCHA взагалі.

Чому її помічають

Прапорець - це рішення про ризик, а не головоломка. Зазвичай спрацьовують такі фактори:

Розуміння цих факторів важливіше, ніж сам віджет. Якщо ваш трафік не викликає прапорця, ви ніколи не побачите завдання із зображеннями.

Загальні підходи, що працюють сьогодні

Ці підходи широко використовуються, і вони чесні. Вони зменшують частоту появи капчі під час легітимної роботи.

  1. Тримайте справжні сесії. Використовуйте повторно cookie і стабільний профіль браузера протягом сесії, а не починайте з нуля на кожній сторінці.
  2. Регулюйте темп запитів. Стабільний повільний темп набагато більше схожий на людину, ніж серія запитів.
  3. Використовуйте справжній браузер для віджета. Повноцінний браузер із звичайними налаштуваннями рідше викликає підозри, ніж урізана headless-збірка. Посібник про виявлення headless-браузера перелічує поширені сигнали.
  4. Попросіть виняток або тестовий ключ. Якщо сайт ваш, використовуйте опубліковані Google тестові ключі на staging. Якщо ні, попросіть власника додати вас до списку дозволених.
  5. Залучіть людину. Для завдань з невеликим обсягом людина може пройти прапорець і передати токен далі. Це повільно, але надійно.

Ці підходи не гарантують, що капча ніколи не з'явиться. Вони зменшують частоту її появи, а це і підтримує стабільність легітимної роботи.

Чого очікувати від розв'язувача на основі токенів

Розв'язувач reCAPTCHA v2 на основі токенів робитиме те, що PopularCaptcha робить сьогодні. Він бере sitekey і URL сторінки, створює дійсний токен g-recaptcha-response і повертає його вашому коду. Ваш код потім вставляє токен у форму і відправляє її до того, як токен спливе.

Scarnox опише тип завдання та будь-які додаткові поля в довідці по API, коли з'явиться підтримка reCAPTCHA v2. До того часу не створюйте код на основі припущеного інтерфейсу. Форма запиту буде схожою на приклад PopularCaptcha, але точні значення перевіряйте в документації.

Чеклист для завдання з reCAPTCHA v2

Коли плануєте завдання, що стосується форми з reCAPTCHA v2, перевірте такі пункти:

Типові помилки

Найчастіша проблема з інтеграцією reCAPTCHA v2 - токен, який сайт відхиляє, хоча він виглядає правильно. Три причини пояснюють більшість таких випадків. Перша - невідповідність між sitekey і URL сторінки: токен прив'язаний до сторінки, на якій показали віджет, тож sitekey, взятий з однієї сторінки і відправлений на іншу, не спрацює. Друга - застарілий токен. Токени короткоживучі, тож скрипт, який розв'язує спочатку, а потім довго виконує інші кроки, відправить прострочене значення. Третя - відсутня серверна перевірка з вашого боку. Якщо ваші тести лише підтверджують, що токен існує, ви не помітите, що крок перевірки не працює.

Друга група помилок пов'язана з робочим процесом навколо віджета. Логін в одній сесії з відправкою форми з іншої - поширена помилка, бо перевірка може залежати від сесії, яка завантажила віджет. Багаторазові повтори відхиленої форми поспіль також роблять сесію підозрілою, через що один виклик капчі може перетворитися на серію. Коли щось не спрацювало, зробіть паузу, перевірте стан сторінки і спробуйте ще раз зі свіжими значеннями.

Скрапінг відповідально

Якщо форма є частиною завдання зі скрапінгу, перевірте robots.txt і умови сайту, перш ніж почати. Тримайте низьку частоту запитів і не збирайте персональні дані, які вам не потрібні. Посібник про законність веб-скрапінгу розглядає основні міркування.

Що далі