Arkose Labs FunCaptcha: как устроены enforcement-проверки и как их решают
Arkose Labs, которую многие разработчики по-прежнему знают как FunCaptcha, — провайдер капчи, которым пользуются крупные сайты для регистрации, входа и платежей. Его самая известная функция — enforcement-проверка: короткая игровая головоломка, например поворот объекта или подбор узора, которая появляется, когда движок оценки риска решает, что посетителя нужно проверить внимательнее. Поддержка Arkose в Scarnox скоро появится. Этот гайд объясняет, как работают такие проверки, почему они сложнее простых виджетов и какие общие подходы допустимы для легитимной работы.
Как доставляется проверка Arkose
Защищённая страница загружает скрипт Arkose и передаёт ему публичный ключ, который идентифицирует сайт. Сама проверка отдаётся с сервера провайдера, а виджет возвращает ответ посетителя в виде токена. Как и в случае с другими токен-виджетами, бэкенд сайта проверяет этот токен у провайдера, прежде чем доверять результату.
Публичный ключ — это идентификатор, который вы ищете, когда работаете со страницей, так же как sitekey идентифицирует виджет PopularCaptcha или reCAPTCHA. Гайд по поиску sitekey объясняет, как найти такие идентификаторы на странице.
Как выглядят проверки
Проверки Arkose обычно короткие и визуальные. Например: повернуть изображение, пока оно не станет ровно, выбрать подходящий элемент из набора или повторить последовательность в 3D-сцене. Дизайн часто меняется, и у каждого сайта может быть свой набор проверок. Сама головоломка тоже служит сигналом: то, как двигается посетитель и сколько времени занимает задача, может быть не менее важно, чем итоговый ответ.
Движок оценки риска
Перед показом проверки провайдер оценивает сессию. Оценка учитывает сигналы браузера, характеристики устройства, историю запросов и поведение на странице. Посетитель с низким риском может пройти без проверки. Посетителю с более высоким риском показывают одну или несколько головоломок, а при очень высоком риске доступ могут заблокировать.
Поскольку движок оценки риска настраивается под каждый сайт и со временем меняется, общий подход, который работает на одном сайте, может не сработать на другом. Это одна из причин, по которым enforcement-проверки сложнее обычных виджетов.
Почему автоматизация попадает под подозрение
Автоматизацию отмечают по тем же причинам, что и другие проверки на основе оценки: стандартный headless-браузер, новая сессия без истории, быстрый и ровный ритм запросов и IP-адреса с плохой репутацией. Каждый сигнал добавляет баллов к оценке риска. Затем проверка просит то, что автоматизация плохо умеет делать, например точное перетаскивание, похожее на человеческое.
Легитимные подходы
Для собственного тестирования и легитимных сценариев эти подходы снижают число лишних проверок:
- Используйте настоящий профиль браузера с согласованными настройками, а не урезанную сборку для автоматизации.
- Сохраняйте непрерывную сессию, чтобы посетитель не выглядел новым на каждой странице.
- Соблюдайте темп запросов, который мог бы реально создать человек.
- Используйте тестовое окружение провайдера, если сайт ваш. Arkose и большинство крупных провайдеров позволяют проверить интеграцию без реальной оценки риска.
- Спросите владельца сайта о белом списке, API или доступной альтернативе, если ваша задача законна, но её всё равно блокируют.
Эти подходы снижают частоту проверок. Они не отменяют права провайдера проверять сессию, и их нельзя использовать, чтобы пройти защиту входа в аккаунты, которые вам не принадлежат.
Что сделает решатель Arkose
Токен-решатель Arkose получил бы публичный ключ и URL страницы, сформировал бы валидный токен и вернул его вашему коду. Затем ваш код отправил бы токен вместе с формой до истечения срока жизни. Схема интеграции была бы похожа на живой поток PopularCaptcha, но детали отличаются. Scarnox опишет тип задачи и поля в справочнике API, когда поддержка выйдет.
Scarnox сегодня не решает Arkose в реальном времени. Единственный живой тип задачи — PopularCaptcha, proxyless. Поддержка Arkose скоро появится.
Где проходит этическая граница
Enforcement-проверки существуют, чтобы защищать страницы входа, платёжные потоки и формы регистрации от злоупотреблений. Использовать любой решатель на этих потоках, чтобы войти в чужие аккаунты, создать спам-аккаунты или купить ограниченный товар раньше других покупателей, недопустимо. Scarnox не поддерживает такие сценарии. Легитимную работу с защищённым сайтом стоит начинать с владельца сайта: его ответ определяет, что разрешено.
Что проверить перед задачей
Прежде чем планировать любую работу с потоком, защищённым Arkose, ответьте на несколько вопросов. Этот поток ваш? Если да, тестовое окружение провайдера и собственная копия для staging — подходящее место для разработки и тестов. Задача легитимна? Сбор публичной информации допустимым для сайта способом легитимен; вход в чужие аккаунты или массовое создание аккаунтов — нет. Есть ли у сайта API или поток данных, который делает работу в браузере ненужной? Многие сайты их предлагают, и это быстрее и стабильнее, чем автоматизация проверки.
Затем оцените объём. Enforcement-проверки реагируют на поведение во времени, поэтому задача, которая работает на низкой и ровной скорости, обычно получает меньше проверок, чем всплеск, запущенный разом. Планируйте расписание с учётом этого и убедитесь, что задача останавливается и сообщает о проблеме, когда встречает проверку, для которой не предназначена, а не повторяет попытки по кругу.
Наконец, заранее решите, что делает задача, если проверку не удалось пройти. Аккуратный отказ с записью в лог гораздо лучше, чем шквал повторов, который вредит сайту и приводит к блокировке вашего трафика.
Парсите ответственно
Если сайт, который вы планируете парсить, защищён, сначала проверьте robots.txt и условия использования. Держите низкую частоту запросов, не собирайте лишние персональные данные и ищите API, прежде чем строить браузерный сценарий. Ответы на основные вопросы есть в гайде о законности парсинга.