Новый Google reCaptcha: как изменить текст "Я не робот"

Я установил последний инструмент reCaptcha Google на нашем сайте йоги. Теперь пользователи запутались в тексте "Я не робот", который появляется рядом с этим флажком.

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

Как изменить текст "Я не робот" на что-то еще, что пользователи понимают?

В этом вопросе появляются молчание...

Кроме того, похоже, что содержимое reRecaptcha полностью заблокировано с помощью удаленных JS и CSS. Я безуспешно пытался использовать следующий javascript для изменения текста для Googles recaptcha-anchor-label:

<script type="text/javascript">
    $(document).ready(function () {
        $("#recaptcha-anchor-label").text("Something different.");
    });
</script>

Ответы

Ответ 1

Возвращаясь к этому старому вопросу - теперь существует невидимая версия виджета reCAPTCHA, которая позволяет вам самостоятельно разрабатывать пользовательский интерфейс. Вы можете привязать выполнение вызова к созданной вами кнопке или вызвать ее программно в фоновом режиме.

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

Необходимыми атрибутами являются имя класса "g-recaptcha", ключ вашего сайта в атрибуте data-sitekey и имя обратного вызова JavaScript для обработки завершения капчи в атрибуте data-callback.

Руководитель:

   <script src="https://www.google.com/recaptcha/api.js" async defer></script>
   <script>
     function onSubmit(token) {
       document.getElementById("demo-form").submit();
     }
   </script>

Тело:

  <form id='demo-form' action="?" method="POST">
    <button class="g-recaptcha" data-sitekey="your_site_key" data-callck='onSubmit'>Submit</button>
    <br/>
  </form>

Ответ 2

В Google Recaptcha можно изменить "Я не робот" на другом языке, используя коды языков для параметра hl script.

Вот как вы заставляете испанский язык, например:

<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=es">

Источник: Документы Google ReCaptcha

Ответ 3

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

Ответ 4

Вы не можете изменить этот конкретный текст, потому что он относится к третьей стороне iframe, хотя есть обходное решение, которое выполняет именно то, что просит ОП.

Вы можете добавить новый div в родительский div, который вы можете контролировать, выравнивать и перекрывать его над текстом ярлыка, учитывая, что в Captcha Google всегда фиксированный размер. Поэтому в соответствии с документацией, учитывая, что у вас может быть основной Captcha div в вашем коде с class="g-recaptcha", вы просто выполните:

$('.g-recaptcha').append('<div id="new_label"></div>');  
$('#new_label').text("My own text");
$('#new_label').css({"position":"absolute", "width":"160px", "top":"27px", "left":"53px", "background-color":"#f9f9f9"});

работает:)

введите описание изображения здесь

Ответ 5

Это невозможно, потому что Same Origin Policy запрещает любой script (который на вашем сайте) пытаться получить доступ к iframe ( captcha), который имеет другое происхождение (сервер Google).

У нас не должно быть проблем с запуском кода ниже, если у нас есть оба сервера:)

$( ".g-recaptcha > div > div > iframe" ).contents().find( "#recaptcha-anchor-label" ).text('Custom Text');

Ответ 6

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

 this.canvas = document.getElementById( 'myCanvas' ) as HTMLCanvasElement;
    var context = this.canvas.getContext( '2d' );
    context.clearRect( 0, 0, this.canvas.width, this.canvas.height );
    var alpha = [];
    alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
         '2', '3', '4', '5', '6', '7', '8', '9'];
    var i;
    for ( i = 0; i < 6; i++ ) {
        var a = alpha[Math.floor( Math.random() * alpha.length )];
        var b = alpha[Math.floor( Math.random() * alpha.length )];
        var c = alpha[Math.floor( Math.random() * alpha.length )];
        var d = alpha[Math.floor( Math.random() * alpha.length )];
        var e = alpha[Math.floor( Math.random() * alpha.length )];
        var f = alpha[Math.floor( Math.random() * alpha.length )];
        var g = alpha[Math.floor( Math.random() * alpha.length )];
    }
    this.captchaCode = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' ' + f + ' ' + g;
    var ctext = this.captchaCode;
    this.loginForm.controls['captcha'].setValue( this.captchaCode.replace( /\s/g, "" ) );

Вот я рисую холст изображения

 /*Text to image captcha */
    var imageObj = new Image();
    imageObj.onload = function() {
        context.drawImage( imageObj, 0, 0 );
        context.font = "24px arial";
        context.fillText( ctext, 84, 32 );
    };
    imageObj.src = 'assets/modules/dummy-assets/common/img/captcha2.jpg';