Menu

Как обойти любую капчу с задачами AntiGate

Новая видео версия урока об AntiGate задачах доступна здесь.

После нескольких лет исследований и разработки, мы представляем универсальное решение, которое поможет вашим роботам проходить через закрытые любыми капчами двери :). Мы называем это "AntiGate", и это шаблоны сценариев, которые наши работники используют для выполнения конкретных задач.

В какой-то момент ваше приложение встречает "шлюз" с новым типом капчи, обфусцированным кодом javascript, и т.п. Здесь наши задачи AntiGate начинают свою работу. Вы поручаете одному из наших работников создать настоящую, человеческую сессию браузера.
  • Во-первых, выберите шаблон. Вы можете использовать существующий или создать свой собственный. Шаблон – это набор последовательных шагов, которые работники выполняют.
  • Во-вторых, предоставьте дополнительную информацию, которая требуется шаблону. Например, значение для заполнения текстового поля, CSS селектор этого поля или адрес куда работник должен перейти. Мы поговорим о шаблонах чуть ниже.
  • В-третьих, и опционально – прокси. Вам они нужны, если веб-сайт ассоциирует каждую cookie сессию с конкретным IP-адресом.
Определившись с 3-мя пунктами, вы создаете задачу в нашем API. Работник переходит на ваш веб-сайт с нашим плагином для браузера и выполняет все шаги сценария вручную или автоматически. В конце задачи мы собираем всю информацию о сессии со страницы, такую как cookies, значения localStorage, отпечаток браузера, и передаем назад в ваше приложение. Всё, что требуется вашему приложению, – это восстановить сессию нашего работника и продолжить взаимодействие с сайтом, как будто оно является этим работником. Круто ведь? :)

Что такое шаблоны AntiGate?

Шаблон AntiGate задает точный сценарий, по которому будут действовать наши работники. Шаблон состоит из шагов, все из них выполняются последовательно. Как только выполнен один шаг, работник переходит к следующему. Когда все шаги выполнены, задача завершается и создается слепок со страницы браузера, который передается в ваше приложение.

Какие существуют шаги?
  • Заполнить текстовое поле автоматически или вручную.
  • Подождать пока контрольный текст появится (или исчезнет) на странице.
  • Подождать пока элемент DOM заданный по CSS селектору появится (или исчезнет) на странице.
  • Подождать пока ключевое слово появится (или исчезнет) из адреса текущей страницы.
В текстовом поле шаблона "описание для работников" вы можете описать любые другие шаги вы ожидаете от работников. Например: "Solve a captcha and press the submit button".
Давайте рассмотрим пример. Перейдите в Developers Center и создайте бесплатный шаблон для теста. Не беспокойтесь, вы ничего не сломаете!
Нажмите, чтобы добавить шаблон
Нажмите, чтобы загрузить пример
Обратите внимание на шаги
Вы загрузили демонстрационный пример. Вы можете сохранить его в своем аккаунте и протестировать позже. Давайте ознакомимся с полным списком свойств шаблона:
  • Имя шаблона. Как только вы его сохраните, его нельзя будет изменить. После публикации шаблон станет доступен по этому имени.
  • Описание для клиентов. Публичные шаблоны доступны в каталоге шаблонов.
  • Описание для работников. Этот текст увидят работники наверху страницы.
    Пример интерфейса работников
  • Переменные. Список имен переменных, которые вы можете использовать в шагах вместо постоянных значений. В этом примере у нас 2 переменные, "login" и "password". Они используются в шагах 1 и 2, чтобы заполнить демонстрационную форму входа в аккаунт. Таким образом, вы можете присылать эти данные в API вместо постоянных значений логина и пароля в шаблоне.
    Переменные используются в шагах 1 и 2
  • . Здесь вы можете редактировать и менять порядок шагов сценария. В нашем примере мы делаем следующее:
    1. Автоматически заполняем текстовое поле по CSS селектору "#login". Значение поля определяется переменной "login".
    2. Автоматически заполняем текстовое поле по CSS селектору "#password". Значение поля определяется переменной "password".
    3. Ожидаем появление контрольного текста на странице. Он перманентно установлен в значение "Test passed with login".

Теперь вы можете сохранить шаблон, и он появится в Developer Center. Заметьте, шаблон имеет статус "Sandbox", что означает, что он доступен только вам и не доступен в API. Здесь вы можете протестировать ваш новый шаблон, как будто вы являетесь работником.

Тестирование шаблонов

Вам понадобится браузер Chrome, и мы рекомендуем создать новый профиль пользователя, так как нам понадобится установить плагин, который имеет доступ к cookies пользователя.
Пример интерфейса работников
Далее, на карточке шаблона, нажмите кнопку "Тест".
Следуйте инструкциям и загрузите плагин для вашей операционной системы. Затем, перезагрузите страницу, чтобы плагин на ней заработал, заполните значения переменных "login" и "password" с произвольными значениями и нажмите кнопку "Запустить тест". Должна открыться новая страница, которая будет выглядеть примерно вот так:

Около адресной строки находится голубая панель, которую плагин добавляет сверху целевой страницы. Таким образом работники узнают об их задании и контролируют выполнение задачи.

Заметьте также, что поля логина и пароля скрываются после их заполнения данными. Это сделано намеренно. Хоть работники и имеют полный доступ к данным задачи через панель разработчика, 99.99% из них не будут утруждать себя изучением происходящего под капотом.
После решение рекапчи, нажмите кнопку "Sign In". Последний шаг шаблона, "WAIT_CONTROL_TEXT_PRESENT", будет пройден. Плагин найдет контрольную фразу "Test passed with login", которая указана в вашем шаблоне в качестве постоянной. Вкладка закроется автоматически и слепок сессии будет отображен в поле результатов.
Пример результатов

Те же данные слепка можно получить через API. Но для того, чтобы ваш шаблон был доступен в API, его нужно сначала опубликовать.

Публикация шаблонов

У вас есть 2 варианта публикации: сделать шаблон публичным или приватным.
  • Приватные шаблоны доступны только по вашему API ключу. Другие клиенты не смогут им воспользоваться. Стоимость ревью и публикации: $1.
  • Публиные шаблоны доступны всем. Вы будете зарабатывать 5% комиссию с каждой траты клиентов по этому шаблону. Вы должны оставить какие-нибудь контакты для наших клиентов, чтобы в случае проблем с шаблоном они обращались непосредственно к вам. Стоимость ревью и публикации: $1.
Мы тщательно рассматриваем шаблоны. Здесь перечислены базовые требования, чтобы ваш шаблон был успешно переключен в продакшен режим:
  • Никакой нелегальной деятельности.
  • Шаблоны не должны дублировать существующие.
  • Не присылайте пустые или тестовые шаблоны.
  • Предоставьте пример адреса страницы и значения переменных. Мы запустим тест и все шаги должны успешно выполниться.

Запросы в API

Запрос на создание задачи в API для шаблона выше может выглядеть следующим образом:

curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY",
    "task":
        {
            "type":"AntiGateTask",
            "websiteURL":"https://anti-captcha.com/demo/?page=recaptcha_v2_textarea",
            "templateName":"Demo sign-in at anti-captcha.com #123456",
            "variables": {
                "login":"some value",
                "password":"some value"
            }
        }
}' https://api.anti-captcha.com/createTask

Вот и все, вы передаете "templateName" и "variables" параметры для заполнения шаблона.

Использование результатов задач

Успешно выполненная задача AntiGate вернет решение, которое включает "cookies", "localStorage", "fingerprint" and "url". Вашему приложению нужно перейти по адресу "url", используя "cookies" в этом запросе, и, как минимум, использовать значение "fingerprint.self.navigator.userAgent" в качестве User-Agent браузера. Более сложные сайты сохраняют важные данные в localStorage, который, как бы является современной версией cookies. В этом случае вам нужно вставить эти данные в страницу до ее фактической загрузки и выполнения любых яваскриптов. Это может быть сделано в таких средах как Puppeteer. Эта тема заслуживает отдельной статьи.

Создание ваших собственных шаблонов

Просто следуйте по шагам выше без собственно загрузки шаблона для примера. Заполните все детали аккуратно и добавьте шаги. Примите во внимание, что шаги выполняются последовательно. Плагин не допустит выполнение следующего шага, пока текущий не был выполнен. В любой момент вы можете сохранить свой шаблон и протестировать его с плагином для работников.

Цены

На текущий момент мы установили цену в размере $2 за 1000 задач. Дополнительно, каждая секунда выполнения задачи стоит 1/60 от стоимости задачи. Например, задача стоит $0.002, и работник потратил 20 секунд на ее решение.
Финальная цена задачи будет $0.00266 = 0.002 + (0.002 / 60 * 20) .