Recaptcha v2

ya ne robot ya robert

Небольшая предыстория. Я изначально использовал родную капчу компонента JCommentskcaptcha. В какой-то момент отключил ее, поскольку она раздражала комментаторов. Тут же в комментарии посыпался спам в гигантских количествах. Начал использовать CleanTalk — символически платный ($9 в год) плагин, защищающий от спамботов не только комментарии, но и вход/регистрацию, контакты и формы многих сторонних расширений. Спам было прекратился, но в последнее время эти гады настрополились слать мусорные комментарии, по форме маскирующиеся под нормальные и даже включающие в тексте заголовки статей. Их CleanTalk пока отфильтровать не может. Подобных «комментариев» стало приходить по 4-5 в день — не очень критично, да и убивать их легко прямо из уведомлений в почте. Но все же захотелось найти компромиссное решение проблемы — капчу, блокирующую не отлавливаемый CleanTalk
-ом спам, но в то же время не раздражающую потенциальных комментаторов.

NO CAPTCHA reCAPTCHA от Гугла (или просто reCAPTCHA v2.0) подходит идеально. Начиная с Joomla 3.4, вторая версия включена в плагин reCAPTCHA, поставляемый с CMS. На время написания прошло почти два года с того релиза, а разрабы JComments так и не озаботились добавить поддержку этого плагина в свой компонент. Это никак не умаляет его достоинств — JComments был и остается лучшим бесплатным решением для комментариев на Джумла-сайте. Тем более что встроить сабж в комментарии достаточно просто своими силами. Для этого вам предстоит выполнить ряд несложных действий.

  1. Если ваш сайт не зарегистрирован в reCAPTCHA, заходите на страницу сервиса, кликаете на кнопку Get reCAPTCHA и добавляете доменное имя сайта. (Понятно, что нужно иметь аккаунт в Google.) Получаете два ключа — публичный и приватный. Замечу здесь, что если вы ранее пользовались первой версией reCAPTCHA, ключи для нее не подходят ко второй версии.
  2. В админке сайта заходим в Расширения | Extensions > Менеджер плагинов | Plugins, находим плагин CAPTCHA - reCAPTCHA и кликаем на его имя. В настройках плагина выбираем версию 2.0, вводим полученные от Гугла ключи, определяем стиль и размер. Если плагин выключен — включаем его. Сохраняем настройки.

  3. Редактируем два файла компонента JComments. Вам понадобится найти указанные оригинальные куски кода и заменить их на кастомизированные. Кликабельные скриншоты результатов сравнения в WinMerge с номерами строк и подсветкой изменений наглядно покажут, где, что и на что поменять (справа — изначальный код, слева — измененный).

    Изменение 1.

    Редактируем файл componentscom_jcommentstpldefaulttpl_form.php. Находим следующий кусок кода:

    
    

    Заменяем на:

    
    

    Результат сравнения:

    Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments - кастомизация 1

    ogri.me

    ) Renders the container as a reCAPTCHA widget and returns the ID of the newly created widget.
    container
      The HTML element to render the reCAPTCHA widget.  Specify either the ID of the container (string) or the DOM element itself.
    parameters
      An object containing parameters as key=value pairs, for example, {«sitekey»: «your_site_key», «theme»: «light»}. See grecaptcha.render parameters.
    grecaptcha.reset(
    ) Resets the reCAPTCHA widget.
    opt_widget_id
      Optional widget ID, defaults to the first widget created if unspecified. grecaptcha.getResponse(
    ) Gets the response for the reCAPTCHA widget.
    opt_widget_id
      Optional widget ID, defaults to the first widget created if unspecified.

    Examples

    Explicit rendering after an onload callback

     <html>   <head>    <title>reCAPTCHA demo: Explicit render after an onload callback</title>  <script type="text/javascript">     var onloadCallback = function() {    grecaptcha.render('html_element', {    'sitekey' : 'your_site_key'  });  };     </script>  </head>  <body>   <form action="?" method="POST">    <div id="html_element"></div>   <br>  <input type="submit" value="Submit">  </form>   <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"  async defer>  </script>  </body> </html> 

    Explicit rendering for multiple widgets


     <html>  <head>  <title>reCAPTCHA demo: Explicit render for multiple widgets</title>  <script type="text/javascript">  var verifyCallback = function(response) {  alert(response);  };  var widgetId1;  var widgetId2;  var onloadCallback = function() {  // Renders the HTML element with id 'example1' as a reCAPTCHA widget.  // The id of the reCAPTCHA widget is assigned to 'widgetId1'.  widgetId1 = grecaptcha.render('example1', {  'sitekey' : 'your_site_key',  'theme' : 'light'  });  widgetId2 = grecaptcha.render(document.getElementById('example2'), {  'sitekey' : 'your_site_key'  });  grecaptcha.render('example3', {  'sitekey' : 'your_site_key',  'callback' : verifyCallback,  'theme' : 'dark'  });  };  </script>  </head>  <body>  <!-- The g-recaptcha-response string displays in an alert message upon submit. -->  <form action="javascript:alert(grecaptcha.getResponse(widgetId1));">  <div id="example1"></div>  <br>  <input type="submit" value="getResponse">  </form>  <br>  <!-- Resets reCAPTCHA widgetId2 upon submit. -->  <form action="javascript:grecaptcha.reset(widgetId2);">  <div id="example2"></div>  <br>  <input type="submit" value="reset">  </form>  <br>  <!-- POSTs back to the page's URL upon submit with a g-recaptcha-response POST parameter. -->  <form action="?" method="POST">  <div id="example3"></div>  <br>  <input type="submit" value="Submit">  </form>  <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"  async defer>  </script>  </body> </html> 

    developers.google.com

    • 30 нояб -0001
    • Автор:
    • Опубликовано в: Статьи
    • Сообщение: Оставить комментарий

    Как обновить recaptcha v2 на новую recaptcha v3

     

    Каждый владелец веб-ресурса сталкивается с такой проблемой как спам и бороться с этим можно с помощью CAPTCHA, который используется для того, чтобы отличить машину от человека методом определения цифр на картинке, отдельных фрагментов на изображении и другое. С это задачей легкостью справится даже ребенок, она достаточно сложная для машины. В сегодняшней статье мы рассмотрим, как установить и настроить ReCaptcha v2.0, более новую и улучшенную версию, с усовершенствованным дизайном и интерфейсом. После обновления программы, значительно упростился процесс серверной проверки.

     

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

     


    Как установить ReCaptcha v2.0

     

    В предложенную форму вводим наименование сайта, владельца (почтовый ящик) и домен. Без использования «http://» и «www» и нажимаем кнопку «Регистрация», после чего получаем 2 ключа, один из них секретный, далее приступаем к установке CAPTCHA на сайте.

    Как установить ReCaptcha v2.0

     

    Для того чтобы установить CAPTCHA необходимо ввести CAPTCHA в предложенную форму следуя достаточно понятной инструкции Google. В коде HTML необходимо использовать первый ключ, API можете подключить в любом месте, можно сразу после формы, не обязательно должно быть в HEAD

     

    <form method="post">   <input type="text" name="email">   <input type="text" name="url">     <div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ"></div>     <input type="submint" name="sub_but">  </form>    <script src='https://www.google.com/recaptcha/api.js'></script>


     

    Для интегрирования с сервером необходимо добавить код проверки ReCaptcha. Код на php прописываем, там, где будет проходить проверка данных у сайта.

     

    //Получаем пост от recaptcha  $recaptcha = $_POST['g-recaptcha-response'];    //Сразу проверяем, что он не пустой  if(!empty($recaptcha)) {   //Получаем HTTP от recaptcha   $recaptcha = $_REQUEST['g-recaptcha-response'];   //Сюда пишем СЕКРЕТНЫЙ КЛЮЧ, который нам присвоил гугл   $secret = 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ';   //Формируем utl адрес для запроса на сервер гугла   $url = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret ."&response=".$recaptcha."&remoteip=".$_SERVER['REMOTE_ADDR'];     //Инициализация и настройка запроса   $curl = curl_init();   curl_setopt($curl, CURLOPT_URL, $url);   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);   curl_setopt($curl, CURLOPT_TIMEOUT, 10);   curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");   //Выполняем запрос и получается ответ от сервера гугл   $curlData = curl_exec($curl);     curl_close($curl);    //Ответ приходит в виде json строки, декодируем ее   $curlData = json_decode($curlData, true);     //Смотрим на результат    if($curlData['success']) {   //Сюда попадем если капча пройдена, дальше выполняем обычные    //действия(добавляем коммент или отправляем письмо) с формой       } else {   //Капча не пройдена, сообщаем пользователю, все закрываем стираем и так далее   }  }  else {   //Капча не введена, сообщаем пользователю, все закрываем стираем и так далее  }


     

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

    bitoo.ru

    form-tour-tpl

    Пользователь сайта оставил заявку на заказ тура:<br />   <p><b>Контактная информация:</b></p> <p><b>Имя:</b> [[+name]]</p> <p><b>Телефон:</b> [[+tel]]</p> <p><b>Комментарий:</b> [[+message]]</p>

    Скриптов для обработки сабмита нет…

    Сама форма:

    <form id="modal" method="post" action="[[~29]]"> 		<div id="modal-close"></div> 		<div id="modal-head">Заказать тур</div>.    
    х..."></textarea> <div class="form-item"> [[!recaptchav2_render]] [[!+fi.error.recaptchav2_error]] <span class="error_g-recaptcha-response error"></span> </div> <input type="submit" value="Отправить" onclick="yaCounter36509375.reachGoal('send'); return true;"> <p><small>Нажимая на кнопку "Отправить", вы даете согласие <a href="/PDF/obrabotka-personalnih-danix-lptravel.pdf" title="Обработка персональных данных" target="_blank">на обработку персональных данных</a> и соглашаетесь с <a href="polozhenie-o-konfidenczialnosti.html" title="Обработка персональных данных" target="_blank">политикой конфиденциальности</a></small></p> </form>

    modx.pro

    Процедура первая – регистрация и ключ


    Для начала надо зарегистрировать сайты на https://www.google.com/recaptcha/intro/android.html, для чего переходим на страницу, ищем справа вверху синее окошко «Получить reCAPTCHA» и зеленеем от ожидания.

    Ниже в окне «Регистрация сайтов» выбираем reCAPTCHA V2, указываем домены, на которых хотим её использовать и принимаем пользовательское соглашение.

    После регистрации вы получаете два ключа – публичный и секретный.

    Интеграция reCAPTCHA на joomla

    Ключи на руках – счастье в кармане, переходим в админку Joomla. Для начала идём по пути наименьшего сопротивления:

    Система – Общие настройки – Настройки сайта

    Ищем пункт «CAPTCHA (по умолчанию)» и ставим

    CAPTCHA – reCAPTCHA

    С версии Joomla 3.8.6 V1 нет, если движок моложе, то выбираем V2 вручную.

    Теперь идём в компоненты – плагины, ищем:

    CAPTCHA — reCAPTCHA

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

    замена файла tpl_form.php

    Теперь на странице контактов при отправке письма будет появляться гугловская капча…. Дело решено? Отнюдь, так как спам на 99% идёт через компонент JComments, которому чихать на системные настройки joomla.

    reCAPTCHA V2 в JComments

    По умолчанию в JComments стоит буквенная капча, которая ломается Хрумером, как консервная банка с тушёнкой в руках голодного туриста. В настройках компонента нет возможности переключиться на reCAPTCHA. Что делать, как защитить сайт от спама в комментариях и найти в мире красоту и гармонию?

    замены файла jcomments.ajax.php

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

    componentscom_jcommentstpldefaulttpl_form.php

    componentscom_jcommentsjcomments.ajax.php

    Ниже я предлагаю готовые файлы tpl_form.php и jcomments.ajax.php, просто замените старые на новые и на вашей улице тоже перевернётся грузовик с тульскими пряниками. Код замены универсальный, подходит для всей линейки joomla 3 и не зависит от цифр публичного и секретного ключа. Фома-неверующий может сделать бекап, но файлы взяты с этого блога, они рабочие и не нуждаются в корректировке.

    Вот архив rar, в котором две изменённых файла JComments.

    www.zegeberg.ru

    Извините, что являюсь ответчиком плохих новостей, но после исследований и отладки довольно ясно, что нет способа настроить стиль новых элементов управления reCAPTCHA. Элементы управления завернуты в iframe, что предотвращает использование CSS для их стилей, а Политика одинакового происхождения препятствует доступу JavaScript к содержимому, исключая даже хакерское решение.

    В отличие от reCAPTCHA API версии 1.0, нет параметров настройки в API Версия 2.0. Если мы рассмотрим, как работает этот новый API, не удивительно, почему.

    Выдержка из Вы робот? Представляем «No CAPTCHA reCAPTCHA» :

    В то время как новый API reCAPTCHA может казаться простым, за этим скромным флажком существует высокая степень сложности. CAPTCHA долгое время полагались на неспособность роботов решать искаженный текст. Однако недавно наши исследования показали, что сегодняшняя технология искусственного интеллекта может решить даже самый сложный вариант искаженного текста с точностью 99,8%. Таким образом, искаженный текст сам по себе больше не является надежным тестом.

    Чтобы противостоять этому, в прошлом году мы разработали бэкэнд Advanced Risk Analysis для reCAPTCHA, который активно рассматривает взаимодействие пользователей с CAPTCHA — до, во время и после — для определения того, является ли этот пользователь человеком. Это позволяет нам меньше полагаться на ввод искаженного текста и, в свою очередь, предлагать лучший опыт для пользователей. Мы говорили об этом в нашей статье «День Святого Валентина» в начале этого года.

    Если вы смогли напрямую манипулировать стилем элементов управления, вы можете легко вмешаться в логику пользовательского профилирования, которая делает возможным новый reCAPTCHA.

    Теперь новый API предлагает параметр theme, с помощью которого вы можете выбрать заданную тему, например light и dark. Однако в настоящее время нет способа создать пользовательскую тему. Если мы проверим iframe, мы найдем имя theme, которое будет передано в строке запроса атрибута src. Этот URL-адрес выглядит примерно следующим образом.

    https://www.google.com/recaptcha/api2/anchor?...&theme=dark&... 

    Этот параметр определяет, какое имя класса CSS используется в элементе-оболочке в iframe и определяет используемую тему.

    element class name

    Копаясь в мини-источнике, я обнаружил, что на самом деле есть 4 действительных значения темы, которые больше, чем 2, указанные в документации, но default и standard совпадают с light.

    object of classes

    Мы можем видеть код, который выбирает имя класса из этого объекта здесь.

    class choosing code

    Нет кода для настраиваемой темы, и если указано другое значение theme, оно будет использовать тему standard.

    В настоящее время нет возможности полностью стилизовать новые элементы reCAPTCHA, стилизованы только элементы оболочки вокруг iframe. Это было почти наверняка сделано намеренно, чтобы пользователи не нарушали логику профилирования пользователей, что делает возможным новый флажок без надписи. Возможно, Google может реализовать ограниченный пользовательский API темы, возможно, позволяя вам выбирать пользовательские цвета для существующих элементов, но я бы не ожидал, что Google внедрит полный стиль CSS.

    qaru.site

    Новый интерфейс reCaptcha 2

    Одним из существенных изменений, на который мы наталкиваемся практически сразу при ознакомлении с reCaptcha2 является новый интерфейс оформления защитного изображения.
    Интерфейс был существенно переработан — теперь он отображается в виде небольшого виджета с импровизируемым чекбоксом «я не робот», при клике на котором пользователю предлагается разгадать изображение.

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

    В случае неудачного разгадывания изображения капча уведомит об этом, что является существенным улучшением — пользователю не нужно будет перезагружать страницу несколько раз. Капча так же уведомит о неудаче в случае истекания время сессии.
    Посмотреть reCaptcha2 можно в живую на демо-страничке от гугла.

    Новый API

    Вместе с новым интерфейсом reCaptcha2 для взаимодействия используется и новый алгоритм внедрения и взаимодействия с удаленным API.
    Ключи для использования reCaptcha2 на ваших сайтах можно получить в новом интерфейсе (требуется авторизация google):

    Все так же используется алгоритм приватного и публичного ключа, которые в данной версии названы как «секретный ключ» и «ключ» соответственно. Существенным изменением является то, что ключ в reCaptcha2 не может быть глобальным — теперь каждый домен, на котором планируется использовать reCaptcha2 должен быть указан в настройках. Для localhost и 127.0.0.1 капча будет работать без указания домена.
    С новым api внедрить капчу в тело страницы — дело 2х строк кода(*пример простого внедрения):

    <script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha" data-sitekey="your_site_key"></div> 

    Несмотря на это, api обладает достаточно большим набором функций для различных вариаций выгрузки reCaptcha2 и настройки ее визуализации(отображение по callback’у, стилизация и другие).
    Изменился и API для валидации взаимодействия пользователя с капчей. Сразу хочу отметить, что ранее используемый стандартный post field — recaptcha_response_field теперь именуется как g-recaptcha-response. Сам API теперь возвращает результат проверки в формате JSON, что собственно не может не радовать. Запрос на валидацию при submit`e формы с капчей должен выглядеть следующим образом:
    www.google.com/recaptcha/api/siteverify?secret=your_secret&response=response_string&remoteip=user_ip_address

    где соответственно secret — приватный ключ (секретный ключ), response — результат ответа пользователя (post.g-recaptcha-response), remoteip — ип-адрес пользователя (не обязателен). Результат обработки на данном URL будет возвращен в JSON формате:

    {  "success": true|false,  "error-codes": [...] } 

    в результате чего, валидация капчи будет выполнена в 1 строку (json_decode; object->success).
    Документация: смотреть на google

    habr.com

    ИТОГО

    1. Проблема только с reCaptcha v2, а reCaptcha v1 решается без проблем (пока) — ИМХО, в то время как мой ИП был в бане у reCaptcha v2 и попытка аудиопроверки выдавала «Повторите попытку папизже» я успешно прошел reCaptcha v1, которую уже мало кто использует;
    2. reCaptcha v2 выходит за границы своего прямого назначения — т.е. проверяет не только «человечность» посетителя, а ещё в добавок проверяет и ИП юзверя на наличие его в своих чёрных списках выполняя таким образом ещё и роль тупого брандмауэра, а н@hуя ж в каптче ip2ban;
    3. При попытке открыть сайт «by Cloudflare» видя reCaptcha v2 сразу разворачиваюсь и иду н@hуй, туда же по ходу дела н@hуй идёт и сам сайт теряя посетителей;
    4. Если на нужном сервисе, которому нет альтернативы, пользуется reCaptcha v2, то дабы его пользовать нужно либо пиzdов@ть в гости к другу, а н@hуй тогда Интернет, либо менять прокси и чистить историю браузера, либо дополнительно покупать выделенный ИП только ради паскудной reCaptcha v2;
    5. Слать мессаги в «Группы Google» можно до посинения, — будут постоянные отлупы типа «яа, лимонада-лимонада, арбузы-арбузы, соси арбузы…»;
    6. Если ты чувак владелец сайта и у тебя нет лишних посетителей, то не ставь себе эту еб@ную reCaptcha v2 и не используй Cloudflare — в мире есть дохуя других не менее надёжных и менее ущербных для пользователя-человека методов проверки.

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

    reCaptcha v2 будь проклята, гори в аду вместе с её авторами и всеми теми, кто её применяет на своих сайтах!

    АЛСО

    • reCAPTCHA Help — Google
    • Сообщение о подозрительном трафике из вашей сети — Cправка — Google Поиск
    • Frequently asked questions | reCAPTCHA | Google Developers
      • What happens to reCAPTCHA v1?

        Any calls to the v1 API will not work after March 31, 2018. Starting in November 2017, a percentage of reCAPTCHA v1 traffic will begin to show a notice informing users that the old API will soon be retired.
        —-
        Тобишь с 31 марта 2018 reCAPTCHA v1 уходит на покой.

    www.remoteshaman.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector