新的Google验证码:如何更改文本“我不是机器人”

25

我在我们瑜伽网站上安装了最新的Google reCaptcha工具,现在用户对出现在复选框旁边的文本“我不是机器人”感到困惑。

我们大多数用户不知道在这种情况下“机器人”的意思,他们认为表单已经损坏。他们也觉得使用我们的表单不太安全,因为在瑜伽网站看到“机器人”这个词很奇怪。

我该如何将“我不是机器人”文本更改为用户可以理解的其他内容?

文档对此问题没有说明...

此外,reRecaptcha的内容似乎完全通过远程JS和CSS锁定。我曾尝试使用以下JavaScript更改Google的recaptcha-anchor-label文本,但没有成功:

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

请参考以下链接以了解如何自定义Google reCAPTCHA:https://developers.google.com/recaptcha/old/docs/customization - Marc B
Nu,如果你找到了答案,请回复一下。我也想知道。谢谢。 - HelpNeeder
1
在Google组中,还有一个关于新reCaptcha的讨论线程,链接在此:https://groups.google.com/forum/#!searchin/recaptcha/change$20the$20text/recaptcha/sLFBdhneh6E/u6M_SG2fsXoJ - nu everest
有什么解决方案吗? - Ansar Muhammad
目前似乎还没有解决方案。 - nu everest
显示剩余2条评论
6个回答

36

通过使用hl脚本参数的语言代码,可以将Google Recaptcha中的"I'm not a robot"更改为不同的语言。

以下是如何强制使用西班牙语:

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

来源: Google ReCaptcha 文档


15
这并没有回答如何将文本从“我不是机器人”更改为其他对我的用户有意义的内容的问题。翻译成另一种语言会让我的用户更加困惑。“yo no soy un robot”(我不是机器人)。 - nu everest
1
如果在你的 application.rb 文件中有一个语言列表,在你的视图中有一个选择按钮来选择它们之间的差异,那么你可以插入你的 locale 变量,使脚本访问你选择的语言。Application.rb config.i18n.available_locales = %i[es en] Your view file script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=#{I18n.locale.to_s}" 对我来说完美奏效了! - HKD

5

目前使用他们的工具是不可能的。如果您想使用其他方法来阻止机器人:卸载reCaptcha,并使用您可以控制的东西,比如与瑜伽相关的简单随机问题和答案。


你有这方面的参考资料吗?你知道Google是否有计划在未来使其更易编辑吗? - nu everest
参考资料是谷歌的API文档,我假设您已经有了:https://developers.google.com/recaptcha/docs/display我不知道谷歌的计划。 - clairestreb
2
对于那些给这个答案点踩的人,请不要攻击我这个传话者!我无法改变他们编写代码的方式。 - clairestreb

4

您无法更改该特定文本,因为它属于第三方iframe,但有一个解决方法可以完全满足OP的要求。

您可以在您可以控制的父级div上附加一个新的div,将其与标签文本对齐和重叠,考虑到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"});

它可以运行 :)

输入图像描述


3
这是不可能的,因为同源策略禁止你站点上的任何脚本尝试访问带有另一个源(谷歌服务器)的iframe(验证码)。
如果我们拥有两个服务器,那么我们运行下面的代码应该没有问题 :)
$( ".g-recaptcha > div > div > iframe" ).contents().find( "#recaptcha-anchor-label" ).text('Custom Text');

2

回到这个老问题 - 现在有一个隐形版本的reCAPTCHA小部件,允许您自己设计UI。您可以将挑战的执行绑定到您创建的按钮上,或在后台编程方式调用它。

我引用文档页面作为快速参考,在此处阅读更多信息here.

必要的属性是类名'g-recaptcha',数据站点密钥中的数据站点密钥属性,以及JavaScript回调的名称,以处理数据回调属性中的验证码完成。

头:

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

Body:

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

0

我在这里使用了客户端验证码,以下是我的代码。它在我的门户网站上运行良好。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接