SlideShare a Scribd company logo
1 of 22
Download to read offline
Captcha
ReCaptcha
NoCaptcha
...
Начало начал
Давным давно, когда в интернете еще не
было школьников, боты были еще слишком
глупы и гипертекстовый векторный FidoNet
правил балом, можно было жить не тужить.
Время шло, школьники подросли, боты
обучились и началось извечное
противостояние.
С чем боролись
● Накрутка голосований и опросов
● Фейковые учетки
● Реклама и прочий спам
● Нагрузка на сервера от «тяжелых» запросов
Как боролись
● Множество самописных генераторов «капч»
Как боролись
● Хитрые «собери-пазл», «реши пример» и
прочие «матан» капчи
Как боролись
● Горшочки с медом — Honeypots
невидимые пользователю поля будут заполнены ботом
● Time stamps
анализ времени нахождения на сайте в скорости заполнения
формы
● Прочие аналитики
полет мысли ничто не ограничивает, творим все что не
запрещено УК РФ
Как боролись
● Captcha от гигантов индустрии.
Так одним из известнейших стал ReCaptcha, купленный в 2009
году компанией Google.
Докажи что ты не робот — помоги распознать тексты книг
Google ReCaptcha
Плюсы ReCaptcha
● Простой API
● Возможность переопределения поведения, explicit render
● Есть готовые клиенты для валидации введенного значения
● Настройка тем и языка
<script type="text/javascript">
var RecaptchaOptions = {
theme : 'custom',
custom_theme_widget: 'recaptcha_widget',
lang: 'ru'
custom_translations : { instructions_visual : "А не робот ли ты?",
incorrect_try_again : "Где-то я тебя видел? Не в Футураме ла? Бендер?!",
refresh_btn : "Я не Бендер. Хочу попробовать еще раз"}
};
</script>
Минусы ReCaptcha
● Появились биржи распознавания капчи
Миллион индусов упорней, чем вам кажется
Минусы ReCaptcha
● Невозможность добавить более 1 рекапчи на
страницу (если быть честным, то можно, но
это особый вид магии и не всегда это
оправдано). Все это сильно усложняет
поведение и добавляет множетство вещей,
которые необходимо контролировать.
Минусы ReCaptcha
● Зачастую невозможно прочитать текст, что
сильно раздражает пользователей
ReCaptcha
● В 2013 году в ReCaptcha были внесены изменения,
результатом которых стала упрощенная капча. При редких
запросах из нескомпрометированных подсетей капча была
до неприличия простой
ReCaptcha 2.0
Анонсированная в декабре 2014 года ReCaptcha 2.0 была
призвана исправить существовавшие недостатки. И, что самое
важное, стать максимально простой для людей.
ReCaptcha 2.0
Когда капча не уверена что вы не робот,
она попросит выбрать котика.
В совсем запущенном случае будет
показана старая добрая капча со сканами
книг.
Что изменилось
● Теперь можно делать много экземпларов
капчи на 1 странице без лишних сложностей
● Изменился механизм верификации
● Добавилась статистика запросов NoCaptcha
● Улучшенная работа клиентского виджета
Пример использования (default)
<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="?" method="POST">
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>
Как получить код валидации
- grecaptcha.getResponse()
- request.POST['g-recaptcha-response']
Как проверить код валидации
[POST] URL: https://www.google.com/recaptcha/api/siteverify
secret Required. The shared key between your site and ReCAPTCHA.
response Required. The user response token provided by the reCAPTCHA to the user and provided to your site on.
remoteip Optional. The user's IP address.
Ответ
{
"success": false,
"error-codes": [
"missing-input-response",
"missing-input-secret"
]
}
Пример использования (explicit)
<script type="text/javascript">
var onloadCallback = function() {
alert("grecaptcha is ready!");
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
Тут получим алерт при загрузке капчи
Пример использования (explicit)
<script type="text/javascript">
var onloadCallback = function() {
alert("grecaptcha is ready!");
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
Доступные параметры (api.js)
Onload callbackFn имя колбэк функции
Render explicit | onload Необязательны параметр. Указываем надо ли явно определять процедуру
отрисовки. По умолчанию рендериться будет первый найденный div c id='g-recaptcha'
hl Явное указание языка выджета. По умолчанию язык будет определяться
автоматически
Пример использования (несколько
виджетов)
Показать пример
Всякое разное
● Работа при отключенном JS
Вопросы?

More Related Content

What's hot

Spb RubyConf 2017 — надёжные вебсокеты
Spb RubyConf 2017 — надёжные вебсокетыSpb RubyConf 2017 — надёжные вебсокеты
Spb RubyConf 2017 — надёжные вебсокетыАндрей Новиков
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
 
enterprize yoba jabber bot
enterprize yoba jabber botenterprize yoba jabber bot
enterprize yoba jabber botzxcby
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...it-people
 
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21MoscowJS
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Devs
 
Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков
 Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков
Онлайн-классификация пользователей в быстрой Крипте. Родион ЖелудковYandex
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релизаHappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релизаHappyDev-lite
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Badoo Development
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
Кругом обман или использование стандартных протоколов для нестандартных вещей
Кругом обман или использование стандартных протоколов для нестандартных вещейКругом обман или использование стандартных протоколов для нестандартных вещей
Кругом обман или использование стандартных протоколов для нестандартных вещейAlexander Klestoff
 
7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад ОпухлыйMagecom UK Limited
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самSergey Xek
 
«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»Olga Lavrentieva
 
Пример fuzzy testing для поиска URL в тексте
Пример fuzzy testing для поиска URL в текстеПример fuzzy testing для поиска URL в тексте
Пример fuzzy testing для поиска URL в текстеMoscowDjango
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыUA Mobile
 

What's hot (20)

Spb RubyConf 2017 — надёжные вебсокеты
Spb RubyConf 2017 — надёжные вебсокетыSpb RubyConf 2017 — надёжные вебсокеты
Spb RubyConf 2017 — надёжные вебсокеты
 
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
 
enterprize yoba jabber bot
enterprize yoba jabber botenterprize yoba jabber bot
enterprize yoba jabber bot
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
«Typescript: кому нужна строгая типизация?», Григорий Петров, MoscowJS 21
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
 
Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков
 Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков
Онлайн-классификация пользователей в быстрой Крипте. Родион Желудков
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релизаHappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
HappyDev-lite-2016-осень, день 2 01 Денис Нелюбин. Жизнь после релиза
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Кругом обман или использование стандартных протоколов для нестандартных вещей
Кругом обман или использование стандартных протоколов для нестандартных вещейКругом обман или использование стандартных протоколов для нестандартных вещей
Кругом обман или использование стандартных протоколов для нестандартных вещей
 
7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый7 ошибок одного Black Friday - Влад Опухлый
7 ошибок одного Black Friday - Влад Опухлый
 
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай самАрхитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай сам
 
«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»
 
Fuzz testing
Fuzz testingFuzz testing
Fuzz testing
 
Пример fuzzy testing для поиска URL в тексте
Пример fuzzy testing для поиска URL в текстеПример fuzzy testing для поиска URL в тексте
Пример fuzzy testing для поиска URL в тексте
 
Павел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузерыПавел Юрийчук - Разработка приложений под мобильные браузеры
Павел Юрийчук - Разработка приложений под мобильные браузеры
 

Similar to NoCaptcha

Как превратить User Story в историю успеха
Как превратить User Story в историю успехаКак превратить User Story в историю успеха
Как превратить User Story в историю успехаDataArt
 
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Ontico
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадDmitry Maruschenko
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRАлександр Алаев
 
9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.Maxim Boguslavsky
 
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успехаSQALab
 
Александр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софтаАлександр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софтаДмитрий Шахов
 
Panda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для MyopencartPanda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для Myopencartpanda-code
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Как стать продуктивным Android разработчиком
Как стать продуктивным Android разработчикомКак стать продуктивным Android разработчиком
Как стать продуктивным Android разработчикомPavel Shchahelski
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Как сделать хороший прототип вовремя?
Как сделать хороший прототип вовремя?Как сделать хороший прототип вовремя?
Как сделать хороший прототип вовремя?Mikhail Kulakov
 
Hackday #24. Жизнь после хакатона – репортаж ИТ сообщества ForkConf
Hackday #24.  Жизнь после хакатона – репортаж ИТ   сообщества ForkConfHackday #24.  Жизнь после хакатона – репортаж ИТ   сообщества ForkConf
Hackday #24. Жизнь после хакатона – репортаж ИТ сообщества ForkConfForkConf
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskAlex Chistyakov
 
О общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеО общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеAnton Kovalenko
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийsnowytoxa
 

Similar to NoCaptcha (20)

Как превратить User Story в историю успеха
Как превратить User Story в историю успехаКак превратить User Story в историю успеха
Как превратить User Story в историю успеха
 
Joker2014
Joker2014Joker2014
Joker2014
 
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
Как жить на острие технологий в продакшне и не сойти с ума / Александр Курган...
 
QaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикадQaApi: взгляд на тестирование с другой стороны баррикад
QaApi: взгляд на тестирование с другой стороны баррикад
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseR
 
9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.9 релизов в неделю: секрет успеха.
9 релизов в неделю: секрет успеха.
 
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
9 релизов в неделю, 15 разработчиков, 4 тестировщика. Секрет успеха
 
Александр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софтаАлександр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софта
 
Panda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для MyopencartPanda - вебинар про Opencart для Myopencart
Panda - вебинар про Opencart для Myopencart
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Как стать продуктивным Android разработчиком
Как стать продуктивным Android разработчикомКак стать продуктивным Android разработчиком
Как стать продуктивным Android разработчиком
 
ClickHouse
ClickHouseClickHouse
ClickHouse
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Как сделать хороший прототип вовремя?
Как сделать хороший прототип вовремя?Как сделать хороший прототип вовремя?
Как сделать хороший прототип вовремя?
 
Hackday #24. Жизнь после хакатона – репортаж ИТ сообщества ForkConf
Hackday #24.  Жизнь после хакатона – репортаж ИТ   сообщества ForkConfHackday #24.  Жизнь после хакатона – репортаж ИТ   сообщества ForkConf
Hackday #24. Жизнь после хакатона – репортаж ИТ сообщества ForkConf
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon Saransk
 
О общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайтеО общих подходах к отображению данных на сайте
О общих подходах к отображению данных на сайте
 
еще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложенийеще один недостаток современных клиент серверных приложений
еще один недостаток современных клиент серверных приложений
 

More from Sergey Melekhin

Deeper learning dev fest nn
Deeper learning dev fest nnDeeper learning dev fest nn
Deeper learning dev fest nnSergey Melekhin
 
Dev fest siberia 2017 build a robot
Dev fest siberia 2017  build a robotDev fest siberia 2017  build a robot
Dev fest siberia 2017 build a robotSergey Melekhin
 
Ml and its bright future
Ml and its bright futureMl and its bright future
Ml and its bright futureSergey Melekhin
 
How deep is deep learning
How deep is deep learning How deep is deep learning
How deep is deep learning Sergey Melekhin
 
Основные подходы к организации Highload сервисов
Основные подходы к организации Highload сервисовОсновные подходы к организации Highload сервисов
Основные подходы к организации Highload сервисовSergey Melekhin
 
Почему Терминаторы нам пока не страшны
Почему Терминаторы нам пока не страшныПочему Терминаторы нам пока не страшны
Почему Терминаторы нам пока не страшныSergey Melekhin
 
Синие против красных
Синие против красныхСиние против красных
Синие против красныхSergey Melekhin
 
Волков не бояться! Бизнес логика и РСУБД
Волков не бояться! Бизнес логика и РСУБДВолков не бояться! Бизнес логика и РСУБД
Волков не бояться! Бизнес логика и РСУБДSergey Melekhin
 

More from Sergey Melekhin (13)

Deeper learning dev fest nn
Deeper learning dev fest nnDeeper learning dev fest nn
Deeper learning dev fest nn
 
Docker for developers
Docker for developersDocker for developers
Docker for developers
 
Dev fest siberia 2017 build a robot
Dev fest siberia 2017  build a robotDev fest siberia 2017  build a robot
Dev fest siberia 2017 build a robot
 
Ml and its bright future
Ml and its bright futureMl and its bright future
Ml and its bright future
 
How deep is deep learning
How deep is deep learning How deep is deep learning
How deep is deep learning
 
Project tango
Project tangoProject tango
Project tango
 
Основные подходы к организации Highload сервисов
Основные подходы к организации Highload сервисовОсновные подходы к организации Highload сервисов
Основные подходы к организации Highload сервисов
 
Почему Терминаторы нам пока не страшны
Почему Терминаторы нам пока не страшныПочему Терминаторы нам пока не страшны
Почему Терминаторы нам пока не страшны
 
Angular2
Angular2Angular2
Angular2
 
Халява, Please!
Халява, Please!Халява, Please!
Халява, Please!
 
Синие против красных
Синие против красныхСиние против красных
Синие против красных
 
MVP
MVPMVP
MVP
 
Волков не бояться! Бизнес логика и РСУБД
Волков не бояться! Бизнес логика и РСУБДВолков не бояться! Бизнес логика и РСУБД
Волков не бояться! Бизнес логика и РСУБД
 

NoCaptcha

  • 2. Начало начал Давным давно, когда в интернете еще не было школьников, боты были еще слишком глупы и гипертекстовый векторный FidoNet правил балом, можно было жить не тужить. Время шло, школьники подросли, боты обучились и началось извечное противостояние.
  • 3. С чем боролись ● Накрутка голосований и опросов ● Фейковые учетки ● Реклама и прочий спам ● Нагрузка на сервера от «тяжелых» запросов
  • 4. Как боролись ● Множество самописных генераторов «капч»
  • 5. Как боролись ● Хитрые «собери-пазл», «реши пример» и прочие «матан» капчи
  • 6. Как боролись ● Горшочки с медом — Honeypots невидимые пользователю поля будут заполнены ботом ● Time stamps анализ времени нахождения на сайте в скорости заполнения формы ● Прочие аналитики полет мысли ничто не ограничивает, творим все что не запрещено УК РФ
  • 7. Как боролись ● Captcha от гигантов индустрии. Так одним из известнейших стал ReCaptcha, купленный в 2009 году компанией Google. Докажи что ты не робот — помоги распознать тексты книг
  • 9. Плюсы ReCaptcha ● Простой API ● Возможность переопределения поведения, explicit render ● Есть готовые клиенты для валидации введенного значения ● Настройка тем и языка <script type="text/javascript"> var RecaptchaOptions = { theme : 'custom', custom_theme_widget: 'recaptcha_widget', lang: 'ru' custom_translations : { instructions_visual : "А не робот ли ты?", incorrect_try_again : "Где-то я тебя видел? Не в Футураме ла? Бендер?!", refresh_btn : "Я не Бендер. Хочу попробовать еще раз"} }; </script>
  • 10. Минусы ReCaptcha ● Появились биржи распознавания капчи Миллион индусов упорней, чем вам кажется
  • 11. Минусы ReCaptcha ● Невозможность добавить более 1 рекапчи на страницу (если быть честным, то можно, но это особый вид магии и не всегда это оправдано). Все это сильно усложняет поведение и добавляет множетство вещей, которые необходимо контролировать.
  • 12. Минусы ReCaptcha ● Зачастую невозможно прочитать текст, что сильно раздражает пользователей
  • 13. ReCaptcha ● В 2013 году в ReCaptcha были внесены изменения, результатом которых стала упрощенная капча. При редких запросах из нескомпрометированных подсетей капча была до неприличия простой
  • 14. ReCaptcha 2.0 Анонсированная в декабре 2014 года ReCaptcha 2.0 была призвана исправить существовавшие недостатки. И, что самое важное, стать максимально простой для людей.
  • 15. ReCaptcha 2.0 Когда капча не уверена что вы не робот, она попросит выбрать котика. В совсем запущенном случае будет показана старая добрая капча со сканами книг.
  • 16. Что изменилось ● Теперь можно делать много экземпларов капчи на 1 странице без лишних сложностей ● Изменился механизм верификации ● Добавилась статистика запросов NoCaptcha ● Улучшенная работа клиентского виджета
  • 17. Пример использования (default) <html> <head> <title>reCAPTCHA demo: Simple page</title> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <form action="?" method="POST"> <div class="g-recaptcha" data-sitekey="your_site_key"></div> <br/> <input type="submit" value="Submit"> </form> </body> </html> Как получить код валидации - grecaptcha.getResponse() - request.POST['g-recaptcha-response'] Как проверить код валидации [POST] URL: https://www.google.com/recaptcha/api/siteverify secret Required. The shared key between your site and ReCAPTCHA. response Required. The user response token provided by the reCAPTCHA to the user and provided to your site on. remoteip Optional. The user's IP address. Ответ { "success": false, "error-codes": [ "missing-input-response", "missing-input-secret" ] }
  • 18. Пример использования (explicit) <script type="text/javascript"> var onloadCallback = function() { alert("grecaptcha is ready!"); }; </script> <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> Тут получим алерт при загрузке капчи
  • 19. Пример использования (explicit) <script type="text/javascript"> var onloadCallback = function() { alert("grecaptcha is ready!"); }; </script> <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> Доступные параметры (api.js) Onload callbackFn имя колбэк функции Render explicit | onload Необязательны параметр. Указываем надо ли явно определять процедуру отрисовки. По умолчанию рендериться будет первый найденный div c id='g-recaptcha' hl Явное указание языка выджета. По умолчанию язык будет определяться автоматически
  • 21. Всякое разное ● Работа при отключенном JS