【问题标题】:Complete a reCAPTCHA form to make a phone-call填写 reCAPTCHA 表格以拨打电话
【发布时间】:2015-10-07 20:45:57
【问题描述】:

我希望人们通过我的个人页面(适用于移动设备和桌面设备)与我联系,但我不希望我的手机号码被机器人抓取。所以我想我可以让访问我页面的用户检查 Google reCAPTCHA 表单以访问我的电话号码。

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

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

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

提前致谢!

【问题讨论】:

    标签: html web recaptcha conventions smartphone


    【解决方案1】:

    AFAIK 你不能只在客户端使用 reCaptcha。

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

    比如 PHP。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 哦,对了,我没看那个步骤!所以看起来谷歌有一个页面,你可以在其中发送g-recaptcha-responsegoogle.com/recaptcha/api/siteverify。看起来它返回一个带有布尔字段 success 的 JSON 响应。那么我该如何接听回复并拨打电话呢?
      • 如前所述,安全选项是输出包含您的联系方式的 HTML 文档。 &lt;a href="tel:your number"&gt;your number&lt;/a&gt; 是个不错的选择。如果您想假设(并且您知道他们对假设的看法)用户的浏览器设置了正确的 tel 方案 URI 处理程序,那么您可以将 HTTP 重定向输出到 tel 方案 URI。
      • 明白了!也许最好将电话号码保留为 HTML 链接。那么问题是,如果我将 reCAPTCHA 包含为:&lt;form action="https://www.google.com/recaptcha/api/siteverify" method="POST"&gt; &lt;div class="g-recaptcha" data-sitekey="6Lc5XQ4TAAAAAN18KgCH-E-tVEVnzwP80NDX9v9Q"&gt;&lt;/div&gt; &lt;br/&gt; &lt;input type="submit" value="Submit"&gt; &lt;/form&gt; 如何保存 Google 的 siteverify 端点的结果?我是否需要其他一些 Javascript 来捕获结果并将 reCAPTCHA 替换为电话号码链接?
      • 你不要那样做。 https://www.google.com/recaptcha/api/siteverify 是您的服务器端程序与之通信的 Web 服务的 URL。表单提交到您网站上的服务器端程序。
      【解决方案3】:

      ...如果我包含 reCAPTCHA 表单...如何保存 Google 的 siteverify 端点的结果?我是否需要其他一些 Javascript 来捕获结果并将 reCAPTCHA 替换为电话号码链接?

      当然,您需要一些基于 Javascript 浏览器的逻辑来针对机器人验证真人。请参阅我的回答 here 和完整的 post

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-21
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        相关资源
        最近更新 更多