Typecho Wiki
每一个作品都值得被记录

比Google reCAPTCHA更好用的验证码服务商hcaptcha使用教程

Typecho维基君资源分享 • 1039次浏览 • 发布 2023-02-23 • 更新 2023-02-23
极致加速的V2Ray 助您畅享全球网络 & 搬瓦工VPS最新优惠码
🛜自用大流量超低月租手机卡推荐榜单 #拒绝流量焦虑

简单、友好、免费的验证码第三方服务商hcaptcha使用感受上比Google reCAPTCHA V2/V3 使用体验更好。

目前hCaptcha是互联网占比到15%市场份额的独立验证码服务商。hCaptcha使用的机器学习技术,能够在保护隐私消耗少量资料的前提下,精确识别出典型的机器人行为,连Cloudflare都从Google reCAPTCHA更换到验证码厂商hCaptcha。

尽管hcaptcha验证形式只有图片辨认类型,没有国内滑块、旋转等验证码炫酷,但是免费可靠,使用简单,而且国内使用访问速度不错。

比Google reCAPTCHA更好用的验证码服务商hcaptcha使用教程

点击 “Sign Up Now” 注册hCaptcha

hcaptcha在为阻档机器人访问的同时,还是顺便赚钱的验证码,如下,我刚挂一天,就有0.2776 HMT币。

比Google reCAPTCHA更好用的验证码服务商hcaptcha使用教程

hcaptcha验证码使用教程:

在网页中放置下面JS,前,或是 中,都行

<script src="https://www.hCaptcha.com/1/api.js" async defer></script>

在表格上放置下面显示验证码的块:

<div class="h-captcha" data-sitekey="your_site_key"></div>

后端代码:

<?php
$data = array(
'secret' => "my-secret (should start with 0x..)",
'response' => $_POST['h-captcha-response']
);$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);// var_dump($response);$responseData = json_decode($response);
if($responseData->success) {
// your success code goes here
} 
else {
// return error to user; they did not pass
}
?>

完整的PHP接收表单验证码例子:

<?php
if(isset($_POST['submit'])):
if(isset($_POST['h-captcha-response']) &amp;&amp; !empty($_POST['h-captcha-response'])):
// get verify response
$data = array(
'secret' => "你的服务密匙",
'response' => $_POST['h-captcha-response']
);
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$verifyResponse = curl_exec($verify); $responseData = json_decode($verifyResponse); $name = !empty($_POST['name'])?$_POST['name']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$message = !empty($_POST['message'])?$_POST['message']:'';
if($responseData->success):
//contact form submission code
$to = 'your@email.com';
$subject = 'New contact form has been submitted';
$htmlContent = "
<h1>Contact request details</h1>
<p><b>Name: </b>".$name."</p>
<p><b>Email: </b>".$email."</p>
<p><b>Message: </b>".$message."</p>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
//send email
@mail($to,$subject,$htmlContent,$headers);$succMsg = 'Your contact request has been submitted successfully.';
$name = '';
$email = '';
$message = '';
else:
$errMsg = 'hCaptcha verification failed. Please try again.';
endif;
else:
$errMsg = 'Please click on the hCaptcha button.';
endif;
else:
$errMsg = '';
$succMsg = '';
$name = '';
$email = '';
$message = '';
endif;
?>
<html>
<head>
<title>Using hCaptcha with PHP</title>
<script src="https://www.hCaptcha.com/1/api.js" async defer></script>
</head>
<body>
<div>
<h2>Contact Form</h2>
<?php if(!empty($errMsg)): ?&gt;&lt;div class="errMsg"&gt;&lt;?php echo $errMsg; ?></div><?php endif; ?>
<?php if(!empty($succMsg)): ?&gt;&lt;div class="succMsg"&gt;&lt;?php echo $succMsg; ?></div><?php endif; ?>
<div>
<form action="" method="POST">
<input type="text" class="text" value="<?php echo !empty($name)?$name:''; ?>" placeholder="Your full name" name="name" >
<input type="text" class="text" value="<?php echo !empty($email)?$email:''; ?>" placeholder="Email adress" name="email" >
<textarea type="text" placeholder="Message..." required="" name="message"><?php echo !empty($message)?$message:''; ?></textarea>
<div class="h-captcha" data-sitekey="网站Key"></div>
<input type="submit" name="submit" value="SUBMIT">
</form>
</div> 
<div class="clear"> </div>
</div>
</body>
</html>

hcaptcha使用常见问题

问:怎样知道代码运行正常?

答:可在面板看到 served 和 solved 数量,如果solved 有显示数字,说明hCaptcha运行正常。

问:如何防止用户没有完成验证,直接点了提交按钮?

#(去掉#)  $("form").submit(function(event) {
var hcaptchaVal = $('[name=h-captcha-response]').value;
if (hcaptchaVal === "") {
event.preventDefault();
alert("Please complete the hCaptcha");
}
});

问:hCaptcha plugin for WordPress 有hCaptcha WP插件吗?

答:如果嫌麻烦,不想用代码,而且用wordpress博客程序, 那么直接用WP 插件即可,可以在WP插件搜索中找到。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »