如何在客户端和服务器端(php)中集成Google reCAPTCHA版本3.以下代码用于显示recaptcha,但它不能正常工作.如何进行这种集成.
<html>
<head>
<script src='https://www.google.com/recaptcha/api.js?render=XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'></script>
</head>
<body>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', {
action: 'action_name'
});
});
</script>
<form action="verify.php" method="post">
<input type="text" name="name" placeholder="Your name" required>
<input type="email" name="email" placeholder="Your email address" required>
<textarea name="message" placeholder="Type your message here...." required></textarea>
<input type="submit" name="submit" value="SUBMIT">
</form>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
Verify.php
<?php
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) {
//your site secret key
$secret = 'XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
//get verify response data
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success):
print_r("Working Fine"); exit;
else:
print_r("No valid Key"); exit; …Run Code Online (Sandbox Code Playgroud) 是否有人在ASP.NET中具有reCaptcha V3的完整实现演示?
我找到了这篇文章:Google Recaptcha v3示例演示
目前,我正在使用带有以下代码的reCaptcha V2:
public bool RecaptchaValidate()
{
string Response = Request.Form["g-recaptcha-response"];//Getting Response String Append to Post Method
bool Valid = false;
//Request to Google Server
var CaptchaSiteKey = Settings["NewUserRegCaptchaSecretSiteKey"].ToString();
HttpWebRequest req = (HttpWebRequest)WebRequest.Create
(" https://www.google.com/recaptcha/api/siteverify?secret=" + CaptchaSiteKey + "&response=" + Response);
try
{
//Google recaptcha Response
using (WebResponse wResponse = req.GetResponse())
{
using (StreamReader readStream = new StreamReader(wResponse.GetResponseStream()))
{
string jsonResponse = readStream.ReadToEnd();
JavaScriptSerializer js = new JavaScriptSerializer();
ReCaptchaObject data = js.Deserialize<ReCaptchaObject>(jsonResponse);// Deserialize Json
Valid …Run Code Online (Sandbox Code Playgroud) 我正在从 Google reCAPTCHA v2 迁移到 v3。由于它们完全不同,我有一个问题。
我过去只将 reCAPTCHA v2 放置在存在表单的网页内,以使用户点击并避免机器人。这是可以理解的,但是对于 reCAPTCHA v3,没有一个可以点击的复选框(reCAPTCHA v3 分析用户行为和点击)。
那么...我应该将 reCAPTCHA v3 放置在表单页面中还是应该将其放置在我拥有的所有页面中(以使 recaptcha 观察用户如何与网络交互)?
背景:我的网站非常简单,包含一个带有链接列表的首页(由3rd party服务提供)-每个链接都会弹出带有“提交”按钮的文件上传输入。在该弹出窗口中,我嵌入了Recaptcha脚本,并在提交文件时验证了令牌。由于存在多个弹出设置,因此我选择V3进行零用户与验证机制的交互。
现在,出现一个问题-我该如何解释Google对Google的回应。
Google文档第3版说:
reCAPTCHA通过查看您网站上的实际流量进行学习。因此,在暂存环境中或实施后不久的分数可能与生产环境有所不同。由于reCAPTCHA v3从未中断用户流程,因此您可以先运行reCAPTCHA而无需采取任何措施,然后通过在管理控制台中查看流量来确定阈值。默认情况下,您可以使用0.5的阈值。
从我的描述中,我很清楚score,最重要的是-最可能的机器人为0.0,最可能的机器人为1.0。所以在我的代码中,我检查success == true并score >= 0.5
但是- 我在网上找到的用于服务器端验证的V3示例中,没有一个与分数有关。这是其中的3个 这三个仅检查请求是否成功:
https://dzone.com/articles/adding-google-recaptcha-v3-to-your-laravel-app
最后,我的问题是-是对V3机制的误解,还是我错过了一些东西?
谢谢。
我在java中找不到任何关于recaptcha v3的服务器端代码。我已经在我的 jsp 文件(客户端)中添加了代码(如下所示)但是如何在服务器端处理它?实际上,我需要 java 中的服务器端代码来获取 recaptcha v3。谢谢。
<head>
<script
src="https://www.google.com/recaptcha/api.js?render=MySiteKey"></script>
</head>
<form>
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<input type="hidden" name="action" value="validate_captcha">
</form>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('MySiteKey', {
action : 'validate_captcha'
}).then(function(token) {
document.getElementById('g-recaptcha-response').value = token;
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
PhP中有一些例子,例如here,但我需要java。