Як працює цей прапорець "Резюме" і як я можу ним користуватися?


150

Нещодавно я зареєструвався на веб-сайті oneplusone https://account.oneplus.net/sign-up , і помітив цю прапорець recaptcha

прапорець recaptcha

Як це працює, і як я можу використовувати його на своїх сайтах? Набагато краще, ніж ті криптичні слова / цифри :)

Сайт recaptcha не згадує жодного нового методу recaptcha ... https://www.google.com/recaptcha/intro/index.html


14
Я побачив це саме там, де було, і дивувався саме такому. Я закладаю щедроту, щоб привернути увагу. Я також цікавий.
Привид

Можливо, це тестування та ще не готове до випуску?
користувач3791372

1
Простий спосіб зробити це - $('form input[type=submit]') .before('<div>Are you a human? <input type="checkbox" name="captcha" /></div>');боти не встановлять прапорець, оскільки це не є частиною форми. jsfiddle.net/s6jkchmz
TylerH

1
Існує також метод опеньків, щоб ввести непереборне поле для введення у форму (наприклад, "коментарі"), а потім приховати його css / js. Якщо дані є, то відправник є ботом. Я використав це, і це працює напрочуд добре.
Девід Х. Беннетт

Відповіді:


30

Це бета-API для reCAPTCHA. Я збираю це з джерела їх API JS: https://www.google.com/recaptcha/api.js із посиланням на "API2". І я також виявив це: http://jaswsinc.com/recaptcha-ads/ Мабуть, вони зробили бета-версію лише для запрошень свого "no CAPTCHA reCAPTCHA". Отже, ви, ймовірно, не зможете змусити це працювати над ваш сайт, поки. Я не можу знайти будь-яку інформацію про включення бета-версії, але якщо ви шукаєте "Не бета-версія CAPTCHA reCAPTCHA", ви можете побачити декілька людей, які згадували про отримання електронного листа від Google, щоб вони приєдналися.

Якщо ви знайдете місце для бета-версії, будь ласка, поділіться! Інакше виглядає, що публічний реліз виходить у 2015 році ...


1
Ви можете спробувати франкенштейн щось разом, використовуючи gstatic.com/recaptcha/api2/r20140903161709/recaptcha__en.js, якщо шукаєте "g-recaptcha", "я не робот" або "прапорець", ви можете знайти код, який є реалізуючи його там.
Ян M

3
Витяг з електронного листа:We expect to move all existing reCAPTCHA sites to the new API in 2015.
Тимофій Зорн,

1
Ось запис у блозі Google, який оголошує нову функцію No CAPTCHA reCAPTCHA: googleonlinesecurity.blogspot.com/2014/12/…
Nealvs

4
Де це пояснюється, як працюють нові No CAPTCHA reCAPTCHA?
Nikhil Girraj

5
@NikhilGirraj, якщо ви хочете знати, як не працює CAPTCHA reCAPTCHA , я вказую на це повідомлення .
Ігор Савінкін

114

Цей запис не відповідає на початкове запитання, проте допомагає реалізувати подібне рішення. Як сказав @IanM, прапорець recaptcha знаходиться в бета-фазі, і його не можна використовувати без запрошення.

ВАЖЛИВА РОБОТА Google представила нову систему RECAPTCHA

Це CAPTCHA на базі JavaScript.

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

Зверніть увагу, що прапорець взагалі відсутній, це лише елемент діва з деяким стилем CSS. Спам-боти намагаються заповнити елементи введення форми, але вводу CAPTCHA немає. Галочка - це ще один div (css class).

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

Крок у кульових точках:

  • Створіть унікальний ідентифікатор та додайте його до форми із прихованим входом
  • Зробіть прапорець на сайті (не використовуючи <input>елемент, можливо, використовуючи <div>) та додайте до нього раніше створений ідентифікатор (ви можете використовувати html5data-* атрибути )
  • Коли користувач натискає прапорець, надішліть сервер запит ajax та підтвердіть CAPTCHA, якщо він дійсний, позначте його як in use . (Покажіть результат - ідентифікатору все в порядку / не в порядку - користувачеві)
  • Коли користувач надсилає форму, дані форми містять ідентифікатор. Перевірте це ще раз, воно повинно існувати, і воно повинно бутиin use стані.
  • Якщо всі перевірки пройдено, дані форми готові до використання / обробки

Ви можете прив’язати ідентифікатор до сеансу користувача, IP-адреси та / або використовувати обмеження часу для підвищення безпеки.

ПРИМІТКА Цей вид CAPTCHA працює лише тоді, коли включений JavaScript!

ПРИМІТКА (відредагуйте 1) Як зазначено @crazypotato, є деякі засоби автоматизації, які можуть виконувати JavaScript, ці інструменти також здатні надіслати належний запит AJAX та запустити подія Click у розділі прапорця.

ПРИМІТКА (відредагуйте 2) Зауважте, що рано чи пізно буде пророблений сценарій, написаний на одному веб-сайті або для розбиття одного типу капчу. Кінцевого захисту немає, ви можете лише змусити ботів (або їх розробників) працювати більше.

ПРИМІТКА (редагуйте 3) Етапи та опис у цій відповіді містять лише основну інформацію про цей тип капчу, вам завжди потрібно додати додаткові перевірки та заходи безпеки, щоб зробити її більш захищеною. Наприклад, Google noCaptcha систематично запускає стандартну reCaptcha після 3 "натискань".


4
Я думаю, що питання стосується конкретного питання: "Як увімкнути цю функцію за допомогою Google ReCAPTCHA?" Я впевнений, що я можу це реалізувати самостійно, але це не так просто у їхньому випадку.
Привид

Якщо натиснути Повідомити про проблему внизу сторінки Streetview, ви отримаєте ту саму нову Recaptcha. Саме там я вперше побачив це і знайшов цю сторінку SO, коли я пішов шукати.
user2605793

1
Що заважатиме боту надсилати запит на ajax? Якби всі (або напіввеликий сайт) мали реалізувати подібну CAPTCHA, вона, безумовно, була б використана у будь-якому випадку. Cloudflare має подібну систему виявлення ботів, яка, здається, працює, не вимагаючи від користувача нічого робити.
Стівен Шютт

Перш за все, я цілком погоджуюся з вашим коментарем, і так, бот, написаний безпосередньо для використання одного сайту, буде підданий (і це справедливо для будь-яких видів каптаж). Я почав свою посаду з most botsі ні all bots. Також є рішення, коли вимикач Captcha на основі зображень просто надсилає зображення персонажам програмного забезпечення та типів людини (а службовцю оплачується кількість успішних постів). Як би ви запобігли цьому? :)
Pred

1
@Pred "Спам-боти намагаються заповнити елементи введення форми, але вводу CAPTCHA немає." Це пафосно. jackiechanface.jpg
crazypotato

9

Ось мій код без проблем працює в 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();

:)


Ви не залишили деякі частини клієнтської сторони / html-коду? просто запитую, тому що у вашому PHP-коді ви перевіряєте посаду з ім'ям, g-recaptcha-responseале такий код не визначений у вашому коді клієнта ... я щось пропускаю?
benomatis

5

Я прийшов сюди в пошуках, не побачив відповіді, і тому продовжував пошуки.

Після мого пошуку це вікно все ще було відкрито, тому я оновлював цю публікацію своїми висновками.

Тут ви можете дізнатися про 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-відповідь" заповнений:

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.";
    }
}

Сподіваємось, деякі з вас вважають це корисним.


3

Дякую всім за ваш внесок у цю тему, це чудово бачити, як багато людей зацікавлені у новому інструменті recaptcha.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.