Как работает этот флажок recaptcha и как я могу его использовать?

недавно я зарегистрировался на сайте oneplusone https://account.oneplus.net/sign-up, и заметил этот флажок recaptcha

checkbox recaptcha

Как это работает, и как я могу использовать его на своих сайтах? Гораздо лучше, чем эти загадочные слова / цифры:)

сайт recaptcha не упоминает никакого нового метода recaptcha... https://www.google.com/recaptcha/intro/index.html

5 ответов


это бета-API для reCAPTCHA. Я собираю это из источника их JS API:https://www.google.com/recaptcha/api.js ссылка "API2". И я также нашел это:http://jaswsinc.com/recaptcha-ads/ по-видимому, они сделали бета-версию только для приглашений их "нет captcha reCAPTCHA" так.... Вы, вероятно, не сможете заставить его работать на вашем сайте, пока. Я не могу найти никакой информации о выборе бета-версии, но если вы ищете "no CAPTCHA reCAPTCHA beta", вы можете увидеть ряд людей, которые упомянули о получении электронной почты от Google для них присоединиться.

Если вы найдете место, чтобы попасть в бету, поделитесь, пожалуйста! В противном случае, похоже, что публичный релиз состоится в 2015 году...


эта запись не отвечает на исходный вопрос, однако она помогает реализовать аналогичное решение. как сказал @IanM, флажок recaptcha находится в бета-фазе, и его нельзя использовать без приглашения.

ВАЖНОЕ РЕДАКТИРОВАНИЕ Google представил новый reCAPTCHA

это капча на основе JavaScript.

поскольку большинство спам-ботов не выполняют JavaScript и не могут определить корреляцию между отображаемым текстом и DOM или требуемыми действиями, они не могут нажать на флажок.

обратите внимание, что нет никакого флажка вообще, это просто элемент div с некоторым стилем CSS. Спам-боты пытаются заполнить входные элементы формы, но в КАПЧА. Галочка - это просто еще один div (класс css).

когда вы нажимаете на поле, запрос ajax уведомляет сервер о том, что div был нажат, и сервер хранит эту информацию во временном хранилище (маркирует токен: этот токен был активирован человеком). При отправке формы скрытое поле отправляет маркер, который был активирован, затем, когда сервер проверяет информацию о форме, он распознает, что маркер был активирован. Если маркер не активирован, форма будут признаны недействительными.

шаги в точках маркера:

  • создайте уникальный идентификатор и добавьте его в форму со скрытым входом
  • установить флажок на сайте (без использования <input> элемент, возможно, с использованием <div>) и добавьте к нему ранее сгенерированный идентификатор (вы можете использовать html5 data-* атрибуты)
  • когда пользователь нажимает на флажок, отправьте запрос ajax на сервер и проверьте CAPTCHA, если это допустимо отметить его как in use. (Показать результат-идентификатор OK / не OK - пользователю)
  • когда пользователь отправляет форму, данные формы содержит идентификатор. Проверьте его еще раз, он должен существовать, и он должен быть в in use государство.
  • если все проверки пройдены, данные формы готовы к использованию / process

вы можете привязать идентификатор к сеансу пользователя, IP-адресу и / или использовать ограничения по времени для улучшения безопасность.

Примечание этот вид CAPTCHA работает только тогда, когда JavaScript включен!

Примечание (edit 1) Как заявил @crazypotato, есть некоторые инструменты автоматизации, которые могут выполнять JavaScript, эти инструменты также способны отправлять правильный запрос AJAX и запускать событие Click на флажке div.

Примечание (edit 2) Обратите внимание, что скрипт, написанный специально для одного сайта или для разрыва одного типа капчи, получит рано или поздно. Нет никакой окончательной защиты, вы можете только заставить ботов (или их разработчиков) работать сложнее.

Примечание (edit 3) шаги и описание в этом ответе содержат только некоторую основную информацию об этом типе капчи, вам всегда нужно добавлять дополнительные проверки и шаги безопасности, чтобы сделать его более безопасным. Например, Google noCaptcha систематически запускает стандартную reCaptcha после 3 "div кликов".


вот мой код работает без проблем в PHP:

Клиентской Стороне:

<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>

Сервер:

if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
    $privatekey = "SECRET_KEY";
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = array(
        'secret' => $privatekey,
        'response' => $captcha,
        'remoteip' => $_SERVER['REMOTE_ADDR']
    );

    $curlConfig = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $data
    );

    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $response = curl_exec($ch);
    curl_close($ch);
}

$jsonResponse = json_decode($response);

if ($jsonResponse->success == "true")
    doSomething();
else
    doSomeOtherThing();

:)


Я пришел сюда в поисках, не нашел ответа и продолжал искать.

после моего поиска это окно все еще было открыто, поэтому я обновляю этот пост своими выводами.

здесь вы можете узнать об reCAPTCHA:

http://scraping.pro/no-captcha-recaptcha-challenge/

В основном, однако, вы добавляете это на свою веб-страницу:

<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
    <div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
    <input value="submit" type="submit" />
</form>

у вас reCAPTCHA ключи на этот сайт Google:

https://www.google.com/recaptcha/intro/index.html

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

https://developers.google.com/recaptcha/

Примечание:

из документации Google:

скрипт должен быть загружен по протоколу HTTPS и может быть включено из любой точки на странице без ограничений.

вот пример того, как я заставил его работать:

<html>
<head>
    <title>Contact</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script>
    var onloadCallback = function () {
        grecaptcha.render('dvCaptcha', {
            'sitekey': '<%=ReCaptcha_Key %>',
            'callback': function (response) {
                $.ajax({
                    type: "POST",
                    url: "CS.aspx/VerifyCaptcha",
                    data: "{response: '" + response + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {
                        var captchaResponse = jQuery.parseJSON(r.d);
                        if (captchaResponse.success) {
                            $("[id*=txtCaptcha]").val(captchaResponse.success);
                            $("[id*=lblAlarm]").hide();
                        } else {
                            $("[id*=txtCaptcha]").val("");
                            $("[id*=lblAlarm]").show();
                            var error = captchaResponse["error-codes"][0];
                            $("[id*=lblAlarm]").html("RECaptcha error. " + error);
                        }
                    }
                });
            }
        });
    };
    </script>
</head>
<body>
    <form action="?" method="POST">
        <div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
        <br />
        <asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
        <asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
    </form>
</body>
</html>

Если вам нужно проверить в ASP.NET код-позади, просто убедитесь, что элемент управления "G-recaptcha-response" заполнен:

protected static string ReCaptcha_Key, ReCaptcha_Secret;

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
    {
        // other code
    } else
    {
       lblAlarm.Text = "reCAPTCHA failed.";
    }
}

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


спасибо всем за Ваш вклад в эту тему, это здорово видеть так много людей, заинтересованных в новом инструменте recaptcha.

Я не смог найти его реализацию .net, поэтому построил простой элемент управления веб-формами, который вы можете найти здесь https://github.com/pnmcosta/recaptchav2dotnet