2

我试图从 recaptcha 中获得答案,而不是仅仅获得成功/失败的消息,但未能获得方法。为了掌握场景,让我们假设一个。

通过在我的 php 页面中触发这一行,我得到了一个 recaptcha:

echo recaptcha_get_html($publickey, $error);

然后我遇到了挑战。

recpatha挑战

现在,当用户提交它时,此代码将被执行。

$resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);

这个函数定义是:

function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())

现在,什么是 $extra_params ?我在哪里可以了解这一点。php 的 recapthca api 中没有任何说明。是否有任何选项可以通过在“$extra_params”中传递一些东西来获取recaptcha 的文本?

提交后,它会向我发送以下回复:

Array ( [0] => HTTP/1.1 200 OK Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Fri, 01 Jan 1990 00:00:00 GMT Date: Fri, 20 Jul 2012 18:49:51 GMT Content-Type: text/plain X-Recaptcha-Request-Duration: 8 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Server: GSE Connection: close [1] => true success ) You got it!

现在,我想在响应中得到 recaptcha的答案。在这个特定的挑战中,这将是“reign eveloost”

非常感谢任何帮助。

4

2 回答 2

1

reCAPTCHA 没有返回呈现给用户的实际质询的方法。原因是出于安全考虑。我个人认为 reCAPTCHA 是一个很棒的概念,但它是世界上最烦人的事情之一,因为有一半时间你无法阅读挑战。我发现自己点击“新挑战”按钮超过 10 次。

无论哪种方式,如果你想做你提到的事情,你最好使用自托管的验证码解决方案。

$extra_params变量还包括调用的附加参数。谷歌没有提到它允许额外的参数,所以在我的最佳理解中,它被添加以防谷歌在未来为 API 实现新的参数,而这些新参数现在不包含在库中。对于使用旧版本库的人来说,这将变得更加简单。

于 2012-08-08T22:35:02.533 回答
0

经过大量的谷歌搜索和研究工作,我发现recaptcha 的工作方式,不可能得到答案。我只能设法知道一个成功的状态。仅此而已。

于 2012-08-29T04:09:33.727 回答