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

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

checkbox recaptcha

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

На сайте recaptcha не упоминается какой-либо новый метод recaptcha... https://www.google.com/recaptcha/intro/index.html

Ответ 1

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

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

Ответ 2

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

ВАЖНОЕ ИЗМЕНЕНИЕ Google представила новый reCAPTCHA

Это CAPTCHA на основе JavaScript.

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

Обратите внимание, что флажка не существует, это просто элемент div с некоторым стилем CSS. Спамботы пытаются заполнить элементы ввода формы, но вход в CAPTCHA отсутствует. Флажок - это еще один div (класс css).

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

Шаги в пунктах пули:

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

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

ПРИМЕЧАНИЕ Этот тип CAPTCHA работает только при включенном JavaScript!

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

ПРИМЕЧАНИЕ (отредактируйте 2). Обратите внимание, что script, написанный специально для одного сайта или для разрыва одного типа captcha, рано или поздно пройдет. Нет никакой окончательной защиты, вы можете только сделать ботов (или их разработчиков) труднее.

ПРИМЕЧАНИЕ (edit 3) Шаги и описание в этом ответе содержат только базовую информацию об этом типе captcha, вам всегда нужно добавить дополнительные проверки и шаги безопасности, чтобы сделать его более безопасным. Например, Google noCaptcha систематически запускает стандартную reCaptcha после 3 "щелчков мышью".

Ответ 3

Вот мой код работает без проблем в 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();

:)

Ответ 4

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

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

Здесь вы можете узнать о 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:

script должен быть загружен с использованием протокола 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.";
    }
}

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

Ответ 5

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

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