完成 reCAPTCHA 表单以拨打 phone 电话

Complete a reCAPTCHA form to make a phone-call

我希望人们通过我的个人页面(移动和桌面友好)与我联系,但我不希望我的手机 phone 号码被机器人抓取。所以我想我可以让访问我页面的用户勾选 Google reCAPTCHA 表单以访问我的 phone 号码。

<form action="?" method="POST">
  <div class="g-recaptcha" data-sitekey="6Lc5XQ4TAAAAAN18KgCH-E-tVEVnzwP80NDX9v9Q"></div>
  <br/>
  <input type="submit" value="Submit">
</form>

那么我应该为表格操作做些什么呢?我不希望我的号码在那里使用 "tel:" 标准,因为这样我的号码在源代码中仍然可见。

总而言之,我只是想知道在不泄露 phone 号码或允许机器人抓取的情况下以编程方式实例化 phone 调用的最佳方法是什么。

提前致谢!

据我所知,您不能仅在客户端使用 reCaptcha。

您需要一种服务器端语言(仅)来处理和验证验证码请求。

例如PHP。

您将服务器端程序的 URL 从提交的表单数据中读取 g-recaptcha-response 并将其验证为 described in the documentation 然后输出错误消息或 HTML 包含您的详细联系信息的文档。

...if I include the reCAPTCHA form... How do I save the results of Google's siteverify endpoint? Do I need some other Javascript to capture the result and replace the reCAPTCHA with the phone-number link?

当然,您需要一些 Javascript 基于浏览器的逻辑来验证真人与机器人。看我的回答 and the complete post

在我的回答中,ajax 调用 thre proxy.php 让用户进行验证。 因此,如果成功,您将再次 ajax 调用您的服务器以检索您的 phone 号码并插入它而不是 g-recaptcha 代码。因此,您可以通过将 phone 号码设置为仅被证明是人类的人来保护隐私:

...
var url='proxy.php?url=' + 'https://www.google.com/recaptcha/api/siteverify';
$.ajax({ 'url' : url, 
           dataType: 'json',
           data: { response: response},
           success: function( data  ) {                     
            var res = data.success.toString();
                    // alert( "User verified: " + res);                    
            if (res ==  'true') { 
                    $.ajax( url: '<url to fetch your phone number>',
                            success: function( phone ){
                              document.getElementById('g-recaptcha').innerHTML = phone;
                            } // end of success for phone
                    ); // end of $.ajax to get phone

             } // end if
          } // end of success for user verify 
     }); // end of $.ajax to proxy.php