网站被采集或者镜像是一件很烦心的事,我的一个adsense账号就是被爬虫给爬死了,无效流量太多,导致我adsense账号被封,惨痛教训之后,我找到了利用reCAPTCHA v3的无打扰模式的验证码屏蔽机器人爬虫采集的方法。
原理是:
利用Google reCAPTCHA v3这种无干扰验证码为每个请求返回一个分数,根据分数决定是否能访问,若分数太低,让进入reCAPTCHA v2验证码模式。这样不会错过任何真实访客。
Google reCAPTCHA v3 获取到分数后会存入cookie里,并通过authcode函数加密cookie,设定秘钥有效期。用户再次访问时检查是否有cookie,有的话,让其直接访问网站, 没有在再次进入v3来获取分数,分数低就进入v2。若能通过v2验证码就设定一个分数
PHP代码被我分成3个文件,第一个是判断检查cookie的文件checkingbots.php,后2个分别是v3,v2后端生产cookie的文件 recaptcha1.php,recaptcha2.php
使用方法:我网站是wordpress搭建的,我直接在模板head.php 文件开头位置贴上如下代码。
<?php include( 'checkingbots.php' ); ?>
checkingbots.php传到模板文件夹,并把 recaptcha1.php,recaptcha2.php传到网站根目录。
文件里的key改成您自己Google reCAPTCHA key. 网站域名也改成您的。
PHP是我业余学的,所以若有不足,请各位海涵,若能帮改进,便是更再好不过。
之前写过最初原理见《如何使用reCAPTCHA v3来防止爬虫、采集及垃圾评论? 》
20210219第一版reCAPTCHA v3防采集代码下载:
checkingbots.php
recaptcha1.php
recaptcha2.php