难以捉摸的recaptcha bug.复制代码总是失败

rak*_*tin 12 html javascript recaptcha

我的用户中只有极少数人会获得一个验证码,要求他们复制并粘贴代码,但它总是会失败 - 而大多数用户都会得到正常的(复选框)正常通过.谷歌搜索只返回三个人获取验证码的实例,其中没有任何有任何有价值的信息

关于为什么他们获得验证码的任何想法,最重要的是它为什么失败?

Ale*_*ara 6

为什么会这样:

当客户端禁用JavaScript时会发生这种情况.我们来看看下面的示例代码.

来自reCAPTCHA的示例代码:提示和指南 API文档:

<script type="text/javascript"
   src="https://www.google.com/recaptcha/api/challenge?k=your_public_key">
</script>

<noscript>
   <iframe src="https://www.google.com/recaptcha/api/noscript?k=your_public_key"
       height="300" width="500" frameborder="0"></iframe><br>
   <textarea name="recaptcha_challenge_field" rows="3" cols="40">
   </textarea>
   <input type="hidden" name="recaptcha_response_field"
       value="manual_challenge">
</noscript>
Run Code Online (Sandbox Code Playgroud)

我们可以看到,有些noscript标签包含a iframe,a textarea和hidden input.禁用JavaScript时,它将呈现noscript标记的内容,它看起来像这样.

禁用JavaScript

iframe包含一个表格,用户可以输入验证码并提交表单,基于此,iframe将加载包含响应代码了新的一页.由于JavaScript被禁用,将该令牌获取到父页面表单的唯一方法是让用户将令牌复制并粘贴到textarea示例中.

解决方法?:

只要用户正确地复制并粘贴令牌,它就可以正常工作.仔细检查验证码的HTML是否包含正确的备用元素.您还可以在浏览器中禁用JavaScript以自行测试.