- reCAPTCHA
- Introducing the reCAPTCHA Android API
- The reCAPTCHA advantage
- Advanced Security
- Ease of Use
- Creation of Value
- What is reCAPTCHA?
- Advanced Security
- reCAPTCHA protects and defends
- Not just distorted text
- Bots Beware
- Как добавить CAPTCHA в приложения для Android
- Предпосылки
- 1. Настройка проекта
- 2. Получение ключей reCAPTCHA
- 3. Генерация капчей
- Как добавить CAPTCHA в приложения для Android
- Предпосылки
- 1. Настройка проекта
- 2. Получение ключей reCAPTCHA
- 3. Создание CAPTCHA
- 4. Проверка токенов CAPTCHA
- 5. Создание сервера
- Заключение
reCAPTCHA
Introducing the reCAPTCHA Android API
reCAPTCHA protects internet users from spam and abuse wherever they go. Today we’re excited to introduce the new Android API of reCAPTCHA (see our blog). As part of Google SafetyNet API, it mitigate risks on mobile through enhanced security and uses the latest Invisible reCAPTCHA technology to streamline user experience. Get developer updates here.
The reCAPTCHA advantage
Advanced Security
State of the art spam & abuse protection for your website
Ease of Use
Low friction, effortless interaction for your users
Creation of Value
Apply the human bandwidth to benefit people everywhere
What is reCAPTCHA?
reCAPTCHA is a free service that protects your website from spam and abuse. reCAPTCHA uses an advanced risk analysis engine and adaptive CAPTCHAs to keep automated software from engaging in abusive activities on your site. It does this while letting your valid users pass through with ease.
reCAPTCHA offers more than just spam protection. Every time our CAPTCHAs are solved, that human effort helps digitize text, annotate images, and build machine learning datasets. This in turn helps preserve books, improve maps, and solve hard AI problems.
Advanced Security
reCAPTCHA protects and defends
reCAPTCHA is built for security. Armed with state of the art technology, it always stays at the forefront of spam and abuse fighting trends. reCAPTCHA is on guard for you, so you can rest easy.
Not just distorted text
reCAPTCHA doesn’t depend solely on text distortions to separate humans from machines. Rather it uses advanced risk analysis techniques, considering the user’s entire engagement with the CAPTCHA, and evaluates a broad range of cues that distinguish humans from bots.
Bots Beware
reCAPTCHA is the most widely used CAPTCHA provider in the world. Our broad installed publisher base provides an unparalleled view into abusive activity on the internet, so the bad guys cannot hide. reCAPTCHA knows when to be tough to keep the bots at bay.
Источник
Как добавить CAPTCHA в приложения для Android
Если вы разрабатываете приложение для Android, которое должно взаимодействовать с вашим внутренним сервером, важно предпринять шаги, чтобы защитить его от ботов — автоматических сценариев, которые пытаются передать человеку. В противном случае ваш сервер имеет очень реальный шанс быть захваченным ими.
CAPTCHA, сокращенно от «Полностью автоматизированных тестов Public Turing» для рассказа «Компьютеры и люди отдельно», в настоящее время являются наиболее эффективной защитой от ботов. Как вы, возможно, уже знаете, это обычно тесты на основе изображений, голоса или здравого смысла, которые удобны для человека, но чрезвычайно сложны для компьютеров.
В этом руководстве я покажу вам, как использовать недавно выпущенный API-интерфейс SafetyNet reCAPTCHA для добавления CAPTCHA в ваши приложения Android.
Предпосылки
Чтобы следовать этому уроку, вам понадобится следующее:
- Android Studio 3.0 Canary 4 или выше
- устройство или эмулятор под управлением Android 4.4 или выше
- Node.js 8.1.3 или выше
1. Настройка проекта
Запустите Android Studio и создайте новый проект с пустым действием. В форме « Настройка нового проекта» обязательно введите значимое имя пакета — оно будет использоваться при регистрации приложения в службе reCAPTCHA.
Кроме того, установите флажок Включить поддержку Kotlin . Поскольку Kotlin теперь является официальным языком Android, мы будем использовать его вместо Java в этом руководстве.
API SafetyNet являются частью сервисов Google Play. Чтобы иметь возможность использовать их в своем проекте, добавьте следующую зависимость implementation в файл build.gradle модуля app :
Кроме того, для выполнения сетевых операций мы будем использовать библиотеку Fuel , которая имеет очень лаконичный API на основе Kotlin. Поэтому добавьте его как еще одну зависимость implementation .
Вы не можете выполнять сетевые операции без разрешения INTERNET , поэтому добавьте следующую строку в файл манифеста вашего проекта:
Наконец, нажмите кнопку « Синхронизировать сейчас» , чтобы завершить настройку проекта.
2. Получение ключей reCAPTCHA
Вам понадобятся два ключа, прежде чем вы сможете использовать сервис reCAPTCHA:
- ключ сайта, который необходимо передать службе из вашего приложения для Android
- и секретный ключ, который необходимо передать службе с вашего внутреннего сервера
Чтобы получить ключи, используйте свою учетную запись Google и войдите в консоль администратора reCAPTCHA. Если вы открываете консоль в первый раз, вам автоматически будет предоставлена короткая форма регистрации, в которой вы сможете ввести имя пакета вашего приложения.
После того, как вы примете условия обслуживания reCAPTCHA, продолжайте и нажмите кнопку Register , чтобы сгенерировать оба ключа.
Теперь вы можете добавить ключ сайта в свой проект Android Studio, просто упомянув его в файле res / values / strings.xml :
Мы будем работать с секретным ключом только ближе к концу этого урока, поэтому запишите его в безопасное место.
3. Генерация капчей
Когда мы слышим слово CAPTCHA, мы обычно думаем о грязных изображениях, содержащих трудно читаемые буквы и цифры. Однако такие капчи, благодаря достижениям в технологиях компьютерного зрения, уже недостаточно хороши, чтобы остановить всех ботов.
CAPTCHA, генерируемые сервисом reCAPTCHA, очень продвинуты и очень интерактивны. На самом деле, их решение сродни игре в простые игры. Следовательно, вы не можете напрямую встраивать их в макет своей деятельности. Вместо этого вы должны добавить кнопку в макет, который при нажатии должен привести пользователя к новому экрану или диалоговому окну, содержащему CAPTCHA.
Следующий код показывает, как добавить виджет Button в XML-файл макета вашей деятельности:
Источник
Как добавить CAPTCHA в приложения для Android
Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)
Если вы разрабатываете приложение для Android, которое должно взаимодействовать с вашим внутренним сервером, важно принять меры для его защиты от автоматизированных скриптовых ботов, которые пытаются выдавать себя для человека. В противном случае ваш сервер может быть ими атакован.
CAPTCHA, сокращение от Completely Automated Public Turing tests for telling Computers and Humans Apart, в настоящее время является наиболее эффективной защитой от ботов. Как вы, возможно, уже знаете, они обычно представляют собой образ, голос или тесты на основе здравого смысла, которые легко доступны для людей, но чрезвычайно сложны для компьютеров.
В этом уроке я покажу вам, как использовать недавно выпущенный API reCAPTCHA для добавления CAPTCHA в ваши приложения для Android.
Предпосылки
Чтобы иметь возможность следовать этой статье, вам понадобится следующее:
- Android Studio 3.0 Canary 4 или выше
- устройство или эмулятор под управлением Android 4.4 или выше
- Node.js 8.1.3 или выше
1. Настройка проекта
Запустите Android Studio и создайте новый проект с пустым действием. В настройке нового проекта убедитесь, что вы вводите осмысленное имя пакета — вы будете использовать его при регистрации своего приложения с помощью службы reCAPTCHA.
Кроме того, установите флажок Включить поддержку Kotlin. Поскольку Kotlin теперь является официальным языком Android, в этом учебнике мы будем использовать его вместо Java.
API SafetyNet входят в состав сервисов Google Play. Чтобы иметь возможность использовать их в своем проекте, добавьте следующую implementation зависимость в файл build.gradle модуля app :
Кроме того, для выполнения сетевых операций мы будем использовать библиотеку Fuel, которая имеет очень сжатый API на основе Kotlin. Поэтому добавьте его как другую implementation зависимость.
Вы не можете выполнять сетевые операции без разрешения INTERNET , поэтому добавьте следующую строку в файл манифеста вашего проекта:
Наконец, нажмите кнопку Синхронизировать сейчас, чтобы завершить настройку проекта.
2. Получение ключей reCAPTCHA
Перед использованием службы reCAPTCHA вам понадобятся два ключа:
- ключ сайта, который должен быть передан службе из вашего приложения для Android
- и секретный ключ, который должен быть передан службе с вашего внутреннего сервера
Чтобы получить ключи, используйте свою учетную запись Google и войдите в консоль администратора reCAPTCHA. Если вы впервые открываете консоль, вам автоматически будет представлена краткая форма регистрации, в которой вы можете ввести имя своего приложения.
После того, как вы примете условия обслуживания reCAPTCHA, нажмите кнопку Зарегистрироваться, чтобы сгенерировать оба ключа.
Теперь вы можете добавить ключ сайта в свой проект Android Studio, просто указав его внутри файла res/values/strings.xml:
Мы будем работать с секретным ключом только в конце этого урока, поэтому запишите его сейчас в безопасное место.
3. Создание CAPTCHA
Когда мы слышим слово CAPTCHA, мы обычно думаем о грязных изображениях, содержащих трудночитаемые буквы и цифры. Однако такие CAPTCHA, благодаря достижениям в области технологий компьютерного зрения, уже недостаточно хороши, чтобы остановить всех ботов.
CAPTCHA, созданные службой reCAPTCHA, очень продвинуты и очень интерактивны. Фактически, их решение сродни игре в простые игры. Следовательно, вы не можете напрямую вставлять их в макет своей деятельности. Вместо этого вы должны добавить кнопку в макет, при нажатии на которую пользователь должен увидеть новый экран или диалоговое окно, содержащее CAPTCHA.
В следующем коде показано, как добавить виджет Button в XML-файл макета вашей деятельности:
Прежде чем вы начнете генерировать CAPTCHA, вам придется инициализировать клиент для API SafetyNet. Вы можете сделать это, вызвав метод getClient() класса SafetyNet . Соответственно, добавьте следующий код внутри метода onCreate() вашего класса Activity :
CAPTCHA должна отображаться, когда пользователь нажимает кнопку, поэтому добавьте обработчик события on-click к нему, используя метод setOnClickListener() . Внутри обработчика все, что вам нужно сделать, это вызвать метод verifyWithRecaptcha() и передать ключ вашего сайта в качестве аргумента, чтобы открыть диалог, содержащий CAPTCHA.
Возвращаемое значение метода verifyWithRecaptcha() является объектом Task . Присоединив к нему обработчик события on-success, вы сможете получить объект RecaptchaTokenResponse , содержащий токен, который вы можете использовать, чтобы указать, прошел ли пользователь или не прошел CAPTCHA:
4. Проверка токенов CAPTCHA
Токен, полученный на предыдущем шаге, должен снова быть передан службе reCAPTCHA, чтобы проверить, прошел ли пользователь или не прошел тест. Однако на этот раз вызов службы reCAPTCHA должен быть сделан с вашего внутреннего сервера.
Разумеется, сервер не будет иметь токен, если ваше приложение Android не отправит его ему. Поэтому теперь мы должны написать код для отправки токенов из приложения Android на сервер.
Пока давайте предположим, что наш сервер имеет конечную точку под названием validate , которая может принимать токен в качестве параметра строки запроса. Я буду использовать 10.0.2.2 в качестве IP-адреса сервера и 8000 в качестве порта. Если вы собираетесь запускать сервер на своем компьютере и в приложении на эмуляторе, запущенном на том же компьютере, вы также можете использовать один и тот же IP-адрес.
Теперь вы можете вызвать метод httpGet() библиотеки Fuel , чтобы отправить токен на сервер. Метод ожидает, что список параметров строки запроса будет единственным аргументом, поэтому я предлагаю вам использовать метод утилиты listOf() для создания списка, содержащего один элемент: токен, назначенный параметру запроса с именем user_token.
Поскольку метод httpGet() выполняется асинхронно, вы должны вызвать метод responseString() для обработки возвращаемого значения. В следующем коде показано, как это сделать:
Вы можете видеть, что теперь у нас есть доступ к объекту result . В случае отсутствия ошибок он будет содержать ответ нашего сервера в виде строки.
Предположим, что наш сервер возвращает строку «PASS», если пользователь проходит тест, и «FAIL» в противном случае. То, что вы на самом деле делаете, когда пользователь проходит или не проходит тест, конечно, зависит от вас. Пока я предлагаю вам просто отображать соответствующие сообщения Toast . Следующий код показывает вам, как сделать это кратко:
На данный момент приложение готово. Вы можете продолжить и развернуть его на свой эмулятор или устройство.
5. Создание сервера
Мы уже сделали несколько предположений о нашем веб-сервере на более ранних этапах. Настало время создать его, убедившись, что он не отклоняется от этих предположений.
Быстрый и простой способ создания полностью функционального веб-сервера — использовать платформу Node.js и фреймворк Express.js. Чтобы создать новый проект Node.js, создайте новый каталог на своем компьютере и запустите в нем команду npm init .
Чтобы добавить фреймворк Express к проекту, вы можете использовать команду npm install .
Кроме того, нам понадобится пакет Request для связи с сервисом reCAPTCHA. Поэтому установите его как зависимость.
Теперь вы можете использовать свой любимый редактор кода для создания нового файла с именем index.js и начать писать необходимый код на стороне сервера.
Начните с загрузки модулей express и request с помощью функции require() и создания нового Express-приложения, вызвав функцию express() .
У нашего экспресс-приложения должна быть конечная точка, называемая validate , к которой можно получить доступ, используя метод HTTP GET. Поэтому создайте для него новый маршрут, используя метод get() :
Чтобы проверить токен, созданный приложением Android, вы должны теперь сделать запрос POST службе reCAPTCHA. Запрос должен содержать ваш секретный ключ и сам токен. В следующем коде показано, как создать тело запроса POST, извлекая токен из строки запроса:
Чтобы действительно выполнить запрос POST, вы можете вызвать метод post() модуля request . Его ответ — это короткий документ JSON, содержащий ключ success . Как и следовало ожидать, его значение будет true , только если пользователь прошел проверку
Следующий код показывает вам, как разбирать документ JSON, извлекать ключ success и генерировать ответы «PASS» и «FAIL», которые требуется нашим приложениям для Android:
Наконец, вы должны вызвать метод listen() объекта приложения Express, чтобы он мог прослушивать соединения.
На этом этапе наш веб-сервер готов. Чтобы запустить его, вернитесь к терминалу и выполните следующую команду:
Если вы запустите приложение Android сейчас, нажмите кнопку и успешно разрешите CAPTCHA, вы увидите сообщение Toast , сообщающее вам, что вы человек.
Заключение
Теперь вы знаете, как использовать API-интерфейс SafetyNet reCAPTCHA для защиты вашего приложения Android и внутренней инфраструктуры от ботов. Вам больше не нужно беспокоиться об автоматизированных регистрациях, скриншотах экрана или спаме, созданных ботом.
Чтобы узнать больше о API reCAPTCHA, вы можете обратиться к официальной документации.
Тем временем, ознакомьтесь с некоторыми из наших замечательных статей о разработке приложений для Android!
Источник