如何隐藏 Google Invisible reCAPTCHA 徽章

Posted

技术标签:

【中文标题】如何隐藏 Google Invisible reCAPTCHA 徽章【英文标题】:How to hide the Google Invisible reCAPTCHA badge 【发布时间】:2017-11-16 12:15:09 【问题描述】:

在实施新的 Google Invisible reCAPTCHA 时,默认情况下,您会在屏幕右下角看到一个小小的“受 reCAPTCHA 保护”徽章,当您滚动它时会弹出该徽章。

我想隐藏这个。

【问题讨论】:

【参考方案1】:

data-badge 属性设置为inline

<button type="submit" data-sitekey="your_site_key" data-callback="onSubmit" data-badge="inline" />

并添加以下 CSS

.grecaptcha-badge 
    display: none;

【讨论】:

小心;这似乎禁用了垃圾邮件检查。 这真的会禁用垃圾邮件检查吗?如果是这样,为什么所有的赞成票? @Zade 也许改用 opacity: 0visibility: hidden ?你也有一个链接到它统计的地方吗? 用户协议规定您必须按照@Yann39 上面所说的方式通知用户。 @Helenesh 值得单独回答吗?【参考方案2】:

Google 现在允许从 FAQ 隐藏徽章:

我想隐藏 reCAPTCHA 徽章。什么是允许的?

只要您在用户流程中明显包含 reCAPTCHA 品牌,您就可以隐藏徽章。请包含以下文字:

This site is protected by reCAPTCHA and the Google
    <a href="https://policies.google.com/privacy">Privacy Policy</a> and
    <a href="https://policies.google.com/terms">Terms of Service</a> apply.

例如:

因此您可以使用以下 CSS 简单地将其隐藏:

.grecaptcha-badge  
    visibility: hidden;

不要使用display: none;,因为它似乎会禁用垃圾邮件检查(感谢@Zade)

【讨论】:

接受它,或选择其他服务。 Google 有权要求您展示其免费服务的品牌。您甚至可以重新定位徽章,使其与developers.google.com/recaptcha/docs/invisible#render_param 表格内联。 好吧,我只在我的联系人表单页面上使用这个验证码 v3。所以这是我希望这个徽章显示的唯一页面。它不适用于我网站上的其他地方。可能吗? @AndrewTruckle 为什么不呢? @Simon_Weaver 我现在明白系统会分析所有页面以判断是否是机器人。 @Yann39 - 请更新您的答案。可以隐藏它,例如将其添加到联系人页面:developers.google.com/recaptcha/docs/faq【参考方案3】:

由于根据 TOU 隐藏徽章并不是真正合法的,并且现有的放置选项破坏了我的 UI 和/或 UX,因此我提出了以下自定义,它模仿了固定定位,但改为内联呈现:

您只需要在您的徽章容器上应用一些 CSS:

.badge-container 
  display: flex;
  justify-content: flex-end;
  overflow: hidden;
  width: 70px;
  height: 60px;
  margin: 0 auto;
  box-shadow: 0 0 4px #ddd;
  transition: linear 100ms width;

.badge-container:hover 
    width: 256px;

我认为你可以合法地推动它。

【讨论】:

不错。我使用transform: scale(0.6)opacity: 0.6 进一步推动了它(实际上没有完全隐藏它) 您能否让蓝色横幅向右打开而不是向左打开?还要适应它的配色方案吗? @VaishalPatel 在理论上是的,但有两个缺点:首先,Google 不鼓励篡改原生徽章设计;其次,您在更改中对现有设计的假设越多,就越脆弱您的解决方案变成了 - 请记住,Google 可以随时更改徽章样式和布局。 @krukid 我使用了他们默认的内联样式。 这个答案已经过时了,看FAQ。【参考方案4】:

I saw next comment about this

如果您想将自己的 CSS 应用到徽章上,将徽章内联放置也很有帮助。但请记住,您在注册 API 密钥时同意显示 Google 的条款和条件 - 所以请不要隐藏它。 虽然可以使用 CSS 使徽章完全消失,但我们不建议这样做。

【讨论】:

【参考方案5】:

这不会禁用垃圾邮件检查

div.g-recaptcha > div.grecaptcha-badge 
    width:0 !important;

【讨论】:

【参考方案6】:

我的解决方案是隐藏徽章,然后在用户关注表单输入时显示它 - 因此仍然遵守 Google 的 T&C。

注意:我正在调整的 reCAPTCHA 是由 WordPress 插件生成的,因此您可能需要自己用 &lt;div class="inv-recaptcha-holder"&gt; ... &lt;/div&gt; 包装 reCAPTCHA。

CSS

.inv-recaptcha-holder 
  visibility: hidden;
  opacity: 0;
  transition: linear opacity 1s;


.inv-recaptcha-holder.show 
  visibility: visible;
  opacity: 1;
  transition: linear opacity 1s;

jQuery

$(document).ready(function () 
  $('form input, form textarea').on( 'focus', function() 
    $('.inv-recaptcha-holder').addClass( 'show' );
  );
);

显然,如果需要,您可以更改 jQuery 选择器以针对特定表单。

【讨论】:

【参考方案7】:

我决定在我的联系页面以外的所有页面上隐藏徽章(使用 Wordpress):

/* Hides the reCAPTCHA on every page */
.grecaptcha-badge 
    visibility: hidden !important;


/* Shows the reCAPTCHA on the Contact page */
/* Obviously change the page number to your own */
.page-id-17 .grecaptcha-badge 
    visibility: visible !important;

我不是网络开发人员,所以如果有问题请纠正我。

编辑:更新为使用可见性而不是显示。

【讨论】:

这会起作用,但 page-id-# 是特定于您的网站的,因此任何使用它的人都需要调整 id 以适应他们想要执行显示的页面。 ||我看到有报道说这样做 display:none;也会禁用检查,但我现在不确定。 小心!这将禁用垃圾邮件检查。查看我的答案以获取更多信息 根据 Michael & Helenesh 的上述 cmets 更新【参考方案8】:

对于 Google reCaptcha v3,FAQ 表示:

只要包含 reCAPTCHA,您就可以隐藏徽章 品牌在用户流中可见。请包含以下文字:

This site is protected by reCAPTCHA and the Google
    <a href="https://policies.google.com/privacy">Privacy Policy</a> and
    <a href="https://policies.google.com/terms">Terms of Service</a> apply.

例如:

注意:如果您选择隐藏徽章,请使用

.grecaptcha-badge  visibility: hidden; 

尚不清楚它是否适用于 reCaptcha v2。我建议升级到 v3,因为它为您的访问者提供了更好的体验。

【讨论】:

仅适用于 v3! v2 仍然需要显示徽章。 :( @ADTC 这仍然适用吗?酱汁? @user13160957 我更新了答案。它仍然适用于 v3。 @ADTC 我不明白为什么这只适用于 v3。能否请您提供您的信息来源的参考? @RenéSchubert 正如我所提到的:“尚不清楚它是否适用于 reCaptcha v2。” 再次查看链接的常见问题解答,您似乎应该能够在不违反条款的情况下也在 v2 中执行此操作。 只有谷歌才能肯定回答这个问题!【参考方案9】:

对于 Wordpress 上 Contact Form 7 的用户,此方法对我有用: 我在所有页面上都隐藏了 v3 Recaptcha,除了带有 Contact 7 Forms 的页面。

但是这种方法应该适用于您使用唯一类选择器的任何站点,该选择器可以识别具有文本输入表单元素的所有页面。

首先,我在 CSS 中添加了一个可以折叠磁贴的目标样式规则:

CSS

 div.grecaptcha-badge.hide
    width:0 !important;

然后我在标题中添加了 JQuery 脚本以在窗口加载后触发,因此“grecaptcha-badge”类选择器可用于 JQuery,并且可以添加“隐藏”类以应用可用的 CSS 样式。

$(window).load(function ()  
    if(!($('.wpcf7').length)) 
      $('.grecaptcha-badge').addClass( 'hide' );
       
);

我的磁贴仍然会在每一页上闪烁半秒,但这是我迄今为止发现的最好的解决方法,我希望能遵守。改进建议表示赞赏。

【讨论】:

【参考方案10】:

如果您使用的是 Contact Form 7 更新和最新版本(版本 5.1.x),则需要安装、设置 Google reCAPTCHA v3 才能使用。

默认情况下,您会在屏幕右下角的每个页面上显示 Google reCAPTCHA 徽标。根据我们的评估,这正在为用户创造糟糕的体验。而且您的网站、博客会变慢一点(由 PageSpeed 分数反映),您的网站将不得不从 Google 加载额外的 1 个 javascript 库才能显示此徽章。

您可以按照以下步骤从 CF7 中隐藏 Google reCAPTCHA v3(仅在必要时显示):

首先,您打开主题的 functions.php 文件(使用文件管理器或 FTP 客户端)。该文件位于:/wp-content/themes/your-theme/ 并添加以下 sn-p(我们正在使用此代码删除每个页面上的 reCAPTCHA 框):

    remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts' );

接下来,您将在您希望它显示 Google reCAPTCHA 的页面中添加这个 sn-p(联系页面、登录、注册页面……):

if ( function_exists( 'wpcf7_enqueue_scripts' ) ) 
    add_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 10, 0 );

请参阅 OIW 博客 - 如何从 WordPress 的联系表 7 中删除 Google reCAPTCHA 徽标(隐藏 reCAPTCHA 徽章)

【讨论】:

【参考方案11】:

Matthew Dowell 帖子的一个轻微变体,它避免了短暂的闪烁,但只要可见联系表格 7 表格就会显示:

div.grecaptcha-badge
    width:0 !important;


div.grecaptcha-badge.show
    width:256px !important; 

然后我在我的子主题的 header.php 中添加了以下内容:

<script>
jQuery( window ).load(function ()  
    if( jQuery( '.wpcf7' ).length ) 
        jQuery( '.grecaptcha-badge' ).addClass( 'show' );
    
);
</script>

【讨论】:

【参考方案12】:

我已经测试了所有方法并且:

警告: display: none 禁用垃圾邮件检查!

visibility: hiddenopacity: 0 不要禁用垃圾邮件检查。

使用代码:

.grecaptcha-badge  
    visibility: hidden;

当您隐藏徽章图标时,Google 希望您通过添加以下内容在您的表单上 reference 他们的服务:

<small>This site is protected by reCAPTCHA and the Google 
    <a href="https://policies.google.com/privacy">Privacy Policy</a> and
    <a href="https://policies.google.com/terms">Terms of Service</a> apply.
</small>

【讨论】:

这个答案需要更高!它以简洁的方式包含解决方案的所有必要信息。 正是我想要的,这很好用。此外,对于任何寻找允许证明的人,请检查此页面(如果您还没有在这个 SO 线程中看到它)developers.google.com/recaptcha/docs/faq 感谢您提到这个@Jake。我已将此添加到我的答案中。 有没有人发现隐藏徽章而不是 css hack 的记录方法? Google 提供了一种显示其品牌的替代方式,但我找不到隐藏其徽章的受支持方法。【参考方案13】:

Recaptcha 联系表格 7 和 Recaptcha v3 解决方案。

body:not(.page-id-20) .grecaptcha-badge 
    display: none;

不止一个联系表单页面?

body:not(.page-id-12):not(.page-id-43) .grecaptcha-badge 
    display: none;

如果您有更多联系表单页面,您可以添加更多“不”。

body:not(.page-id-45):not(.page-id-78):not(.page-id-98) .grecaptcha-badge 
    display: none;

确保你的身体部分是这样的:

<body>

将其更改为如下所示:

 <body <?php body_class(); ?>>

【讨论】:

请其他答案,显示无禁用垃圾邮件检查。 @Helenesh 什么是垃圾邮件检查以及它与添加 CSS 样式有何关系?【参考方案14】:

注意:如果您选择隐藏徽章,请使用 .grecaptcha-badge visibility: hidden;

只要您在用户流程中明显包含 reCAPTCHA 品牌,您就可以隐藏徽章。请包含以下文字:

本网站受 reCAPTCHA 和 Google<a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.

保护

更多详情在这里reCaptacha

【讨论】:

这应该是更新/正确的答案。 display: none 本身会禁用垃圾邮件检查,如果您不输入文本 This site is protected...【参考方案15】:

是的,你可以做到。您可以使用 cssjavascript 来隐藏 reCaptcha v3 徽章。

    CSS 方式 使用display: nonevisibility: hidden 隐藏reCaptcha 批次。简单快捷。
.grecaptcha-badge 
    display:none !important;

    Javascript 方式
var el = document.querySelector('.grecaptcha-badge');
el.style.display = 'none';

隐藏徽章是有效的,根据谷歌政策并在常见问题解答here 中回答。建议显示谷歌的隐私政策和使用条款,如下所示。

【讨论】:

'不是 querySelect' 而是 'querySelector'。 display: none 禁用垃圾邮件检查!

以上是关于如何隐藏 Google Invisible reCAPTCHA 徽章的主要内容,如果未能解决你的问题,请参考以下文章

html Google Invisible Captcha

visible,invisible,gone区别

Kendo MVVM 数据绑定 Invisible/Visible

隐藏列表视图中的项目

Android Visibility控件显示和隐藏

动画元素从 Gone 到 Visible(而不是从 Invisible)