Làm thế nào để hộp kiểm này recaptcha hoạt động và làm thế nào tôi có thể sử dụng nó?


149

Gần đây tôi đã đăng ký vào trang web oneplusone https://account.oneplus.net/sign-up và nhận thấy hộp kiểm này recaptcha

hộp kiểm tra lại

Làm thế nào nó hoạt động, và làm thế nào tôi có thể sử dụng nó trên các trang web của tôi? Tốt hơn nhiều so với những từ / chữ số khó hiểu đó :)

Trang web recaptcha không đề cập đến bất kỳ phương thức recaptcha mới nào ... https://www.google.com/recaptcha/intro/index.html


14
Tôi nhìn thấy nó ở cùng một nơi, và tự hỏi chính xác điều tương tự. Tôi đang đưa ra một tiền thưởng để thu hút sự chú ý. Tôi cũng tò mò.
Madara's Ghost

Có lẽ đó là trong thử nghiệm và chưa sẵn sàng để được phát hành?
dùng3791372

1
Một cách dễ dàng để làm điều này là các $('form input[type=submit]') .before('<div>Are you a human? <input type="checkbox" name="captcha" /></div>');bot sẽ không kiểm tra hộp vì nó không phải là một phần của biểu mẫu. jsfiddle.net/s6jkchmz
TylerH

1
Ngoài ra còn có phương pháp honeypot đặt trường đầu vào không thể cưỡng lại ở dạng (như 'bình luận') và sau đó ẩn nó bằng css / js. Nếu dữ liệu có mặt thì người gửi là một bot. Tôi đã sử dụng nó và nó hoạt động tốt đáng ngạc nhiên.
David H. Bennett

Câu trả lời:


30

Đây là API beta cho reCAPTCHA. Tôi thu thập điều này từ nguồn API API của họ: https://www.google.com/recaptcha/api.js tham chiếu "API2". Và tôi cũng tìm thấy điều này: http://jaswsinc.com/recaptcha-ads/ Rõ ràng họ đã thực hiện bản beta chỉ mời của "no CAPTCHA reCAPTCHA" của họ. Vì vậy, có lẽ bạn sẽ không thể làm cho nó hoạt động được trang web của bạn, chưa. Tôi không thể tìm thấy bất kỳ thông tin nào về việc chọn tham gia bản beta, nhưng nếu bạn tìm kiếm "Không CAPTCHA reCAPTCHA beta", bạn có thể thấy một số người đã đề cập đến việc nhận email từ Google để họ tham gia.

Nếu bạn tìm thấy một nơi để vào bản beta, hãy chia sẻ! Nếu không, có vẻ như phát hành công khai vào năm 2015 ...


1
Bạn có thể thử frankenstein một cái gì đó cùng nhau bằng gstatic.com/recaptcha/api2/r20140903161709/recaptcha__en.js nếu bạn tìm kiếm "g-recaptcha", "Tôi không phải là robot" hoặc "hộp kiểm" bạn có thể tìm thấy mã đó là thực hiện nó ở đó.
Ian M

3
Trích từ email:We expect to move all existing reCAPTCHA sites to the new API in 2015.
Timothy Zorn

1
Đây là bài đăng trên blog của Google thông báo về tính năng reCAPTCHA mới của CAPTCHA: googleonlinesecurity.blogspot.com/2014/12/ trên
Nealvs

4
Điều này giải thích ở đâu, làm thế nào mới No CAPTCHA reCAPTCHAhoạt động?
Nikhil Girraj

5
@NikhilGirraj, nếu bạn muốn biết làm thế nào No CAPTCHA reCAPTCHA hoạt động , tôi chỉ cho bạn bài đăng này .
Igor Savinkin

114

Mục này không trả lời câu hỏi ban đầu, tuy nhiên nó giúp thực hiện một giải pháp tương tự. Như @IanM đã nói, hộp kiểm recaptcha đang trong giai đoạn thử nghiệm và nó không thể được sử dụng mà không có lời mời.

EDIT QUAN TRỌNG Google đã giới thiệu reCAPTCHA mới

Đây là CAPTCHA dựa trên JavaScript.

Vì hầu hết các spam bots không thực thi JavaScript và không thể xác định mối tương quan giữa văn bản được hiển thị và DOM hoặc các hành động bắt buộc mà chúng không thể nhấp vào hộp kiểm.

Xin lưu ý rằng không có hộp kiểm nào cả, nó chỉ là một yếu tố div với một số kiểu CSS. Spamb đang cố gắng điền vào các yếu tố đầu vào mẫu, nhưng không có đầu vào trong CAPTCHA. Dấu kiểm chỉ là một div (lớp css).

Khi bạn nhấp vào hộp, yêu cầu ajax sẽ thông báo cho máy chủ rằng div đã được nhấp và máy chủ lưu trữ thông tin này trong bộ lưu trữ tạm thời (đánh dấu mã thông báo: mã thông báo này đã được kích hoạt bởi con người). Khi bạn gửi biểu mẫu, một trường ẩn sẽ gửi mã thông báo đã được kích hoạt, sau đó khi máy chủ xác thực thông tin biểu mẫu, nó sẽ nhận ra rằng mã thông báo đã được kích hoạt. Nếu mã thông báo không được kích hoạt, biểu mẫu sẽ bị vô hiệu.

Các bước trong các gạch đầu dòng:

  • Tạo một định danh duy nhất và thêm nó vào biểu mẫu với một đầu vào ẩn
  • Kết xuất hộp kiểm trên trang web (không sử dụng <input>phần tử, có thể sử dụng <div>) và thêm số nhận dạng được tạo trước đó vào nó (bạn có thể sử dụng các data-*thuộc tính html5 )
  • Khi người dùng nhấp vào hộp kiểm, hãy gửi yêu cầu ajax đến máy chủ và xác thực CAPTCHA, nếu đó là dấu hợp lệ in use. (Hiển thị kết quả - số nhận dạng là OK / không OK - cho người dùng)
  • Khi người dùng gửi biểu mẫu, dữ liệu của biểu mẫu chứa định danh. Kiểm tra nó một lần nữa, nó sẽ tồn tại và nó phải ở in usetrạng thái.
  • Nếu tất cả các xác nhận được thông qua, dữ liệu của biểu mẫu đã sẵn sàng để sử dụng / xử lý

Bạn có thể liên kết mã định danh với phiên, địa chỉ IP của người dùng và / hoặc bạn có thể sử dụng giới hạn thời gian để cải thiện bảo mật.

LƯU Ý Loại CAPTCHA này chỉ hoạt động khi bật JavaScript!

LƯU Ý (chỉnh sửa 1) Như @crazypotato đã nêu, có một số công cụ tự động hóa, có thể thực thi JavaScript, các công cụ này cũng có khả năng gửi yêu cầu AJAX thích hợp và kích hoạt sự kiện Click trên div hộp kiểm.

LƯU Ý (chỉnh sửa 2) Xin lưu ý rằng một tập lệnh được viết cho một trang web cụ thể hoặc để phá vỡ một loại hình xác thực sẽ sớm được xử lý. Không có sự bảo vệ cuối cùng, bạn chỉ có thể làm cho các bot (hoặc nhà phát triển của chúng) làm việc chăm chỉ hơn.

LƯU Ý (chỉnh sửa 3) Các bước và mô tả trong câu trả lời này chỉ chứa một số thông tin cơ bản về loại hình xác thực này, bạn luôn phải thêm các xác nhận bổ sung và các bước bảo mật để đảm bảo an toàn hơn. Ví dụ: Google noCaptcha kích hoạt một cách có hệ thống một reCaptcha tiêu chuẩn sau 3 "lần nhấp div".


4
Tôi nghĩ câu hỏi cụ thể là "Làm cách nào để tôi kích hoạt tính năng này với reCAPTCHA của Google?" Tôi khá tự tin Tôi có thể tự thực hiện điều này, nhưng nó không đơn giản với trường hợp của họ.
Madara's Ghost

Nếu bạn nhấp vào Báo cáo sự cố ở cuối trang Streetview, bạn sẽ nhận được cùng một Recaptcha mới. Đó là nơi lần đầu tiên tôi nhìn thấy nó và tìm thấy trang SO này khi tôi đi tìm kiếm.
user2605793

1
Điều gì sẽ ngăn bot gửi yêu cầu ajax đó? Nếu tất cả mọi người (hoặc một trang web bán lớn) đều thực hiện CAPTCHA như thế này thì chắc chắn nó sẽ bị khai thác. Cloudflare có một hệ thống phát hiện bot tương tự dường như hoạt động mà không yêu cầu người dùng làm bất cứ điều gì.
Steen Schütt

Trước hết, tôi hoàn toàn đồng ý với nhận xét của bạn và vâng, một bot được viết trực tiếp để khai thác một trang web sẽ được thông qua (và điều này đúng với bất kỳ loại capthas nào). Tôi bắt đầu bài viết của tôi với most botsvà không all bots. Ngoài ra còn có các giải pháp khi trình ngắt captcha dựa trên hình ảnh chỉ cần gửi hình ảnh đến một phần mềm và loại người trong các ký tự (và employe được trả bằng số lượng bài đăng thành công). Làm thế nào bạn sẽ ngăn chặn điều này? :)
Pred

1
@Pred "Spamb đang cố gắng điền vào các yếu tố đầu vào của biểu mẫu, nhưng không có đầu vào nào trong CAPTCHA." Thật là thảm hại. jackiechanface.jpg
crazypotato

9

Đây là mã của tôi đang chạy mà không gặp vấn đề gì trong PHP:

Phía khách hàng:

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

Phía máy chủ:

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();

:)


Bạn đã bỏ qua một số phần của mã máy khách / html chưa? chỉ hỏi bởi vì trong mã PHP của bạn, bạn đang kiểm tra một bài đăng có tên g-recaptcha-responsenhưng không có yếu tố nào được xác định trong mã phía máy khách của bạn ... tôi có thiếu điều gì không?
benomatis

5

Tôi đến đây trong tìm kiếm của tôi, không thấy câu trả lời, và vì vậy tôi tiếp tục tìm kiếm.

Sau khi tìm kiếm, cửa sổ này vẫn mở, vì vậy tôi đang cập nhật bài đăng này với những phát hiện của mình.

Đây là nơi bạn có thể tìm hiểu về reCAPTCHA :

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

Về cơ bản, mặc dù, bạn thêm điều này vào trang web của bạn:

<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>

Để nhận các khóa reCAPTCHA của bạn , hãy truy cập trang web Google này:

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

Khi bạn có khóa của mình bằng liên kết ở trên, bạn có thể tìm hiểu sâu hơn về mã hóa này bằng thông tin Google sau:

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

GHI CHÚ:

Từ tài liệu Google:

Tập lệnh phải được tải bằng giao thức HTTPS và có thể được bao gồm từ bất kỳ điểm nào trên trang mà không bị hạn chế.

Đây là một ví dụ về cách tôi làm cho nó hoạt động:

<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>

Nếu bạn cần xác thực trong mã ASP.NET phía sau, chỉ cần xác minh điều khiển "g-recaptcha-reply" được điền vào:

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

Hy vọng, một số bạn thấy điều này hữu ích.


3

Cảm ơn tất cả các bạn đã đóng góp cho chủ đề này, thật tuyệt khi thấy nhiều người quan tâm đến công cụ recaptcha mới.

Tôi không thể tìm thấy triển khai .net của nó, vì vậy đã xây dựng một điều khiển biểu mẫu web đơn giản mà bạn có thể tìm thấy ở đây https://github.com/pnmcosta/recaptchav2dotnet

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.