前言
当前业务背景下,很多国内业务纷纷出海,寻求新的机会增长点,最近老王也在接触北美业务,渐渐也要熟悉海外常用的一些技术解决方案以及供应商。最近为了保护重要接口以及页面的安全性,需要对业务支持人机验证,防止接口爆破以及规避爬虫抓取数据。今天给大家分享下海外常用的一些技术手段。
一、CAPTCHA
CAPTCHA(验证码,全称为"全自动区分计算机和人类的图灵测试")是用来区分人类和计算机恶意自动注册程序的一串字符。
使用验证码的意义:
- 机器人防护: 验证码是防止机器人进入网站并可能造成伤害的有效方法。这可能涉及黑客攻击、垃圾邮件或其他恶意行为。
- 更好的安全性: 通过限制机器人对网站的访问,验证码可以提高整体安全性并保护用户信息。
以下原因使得区分人类和机器人至关重要:
- 防止恶意活动: 通过定位和阻止机器人,网站所有者可以保护他们的财产免受垃圾邮件、黑客攻击和抓取机密信息等潜在威胁。
- 更好的用户体验: 通过减少垃圾邮件和不受欢迎的消息数量,阻止机器人还可以改善用户体验。
- 更好的安全性: 通过限制机器人对网站的访问,验证码可以提高整体安全性并保护用户信息。
二、reCAPTCHA
2.1.简介:
reCAPTCHA 是google提供的一项使用高级风险分析引擎和自适应质询来防止恶意软件在网站上从事滥用活动的验证服务。同时,合法用户将能够登录、购买、查看页面或创建帐户,虚假用户将被阻止。
官网:www.google.com/recaptcha/a...
2.2.优势:
- 十多年来,reCAPTCHA 一直处于爬虫程序缓解的最前沿,并积极保护 500 万个站点网络的数据。
- 一种无缝的欺诈检测服务,可在批准有效用户的同时阻止机器人和其他自动攻击。
- reCAPTCHA 基于风险的爬虫程序算法应用连续机器学习,将每个客户和爬虫程序的交互都考虑在内,以克服传统基于挑战的爬虫程序检测技术的二进制启发式逻辑。
2.3版本介绍:
eCAPTCHA v3:v3版本可以不通过任何用户交互进行验证,并返回一个分数0-1,1表示肯定是人类,开发者可以根据分数进行验证提示,一般用于限制爬虫等。
reCAPTCHA v2 复选框版本:用户可以通过点击"我不是机器人"的复选框,从而触发图片选择以及后续的验证操作,类似图。
reCAPTCHA v2 隐式验证版本:与复选框模式职责相同,区别在于用户使用时看不到复选框,取而代之的是通过点击按钮触发后续验证,比如博客园登录,用户在输入完账号密码后点击登录按钮,这时会弹出图片验证,如果通过了验证才会发起来登录请求。
V2版本分为复选框、隐式验证三个版本,使用不同版本都得创建对应的秘钥,在开发中如果存在版本替换,一定记得对应替换秘钥。
同时还有企业版本,不同版本所具备的能力如下:
2.4.对接流程
2.4.1.对接流程图
2.4.2.密钥获取
1.打开官网,点击v3 Admin Console
2.点击右上角+,打开注册新网站
输入网站标签,创建的验证码类型和支持的域名地址
3.点击提交创建新的密钥
在您的网站提供给用户的 HTML 代码中使用此网站密钥。
6LcD-1opAAAAAGifGEqj0dTtYiVj5iWLOk9J3M93
此密钥用于您的网站和 reCAPTCHA 之间的通信。
6LcD-1opAAAAAJRZBAs-U-ub1wvoZbXQtOLeNsmV
2.4.3.web对接
- 1、引入官方提供的js
xml
<script src="<https://www.google.com/recaptcha/api.js"> async defer></script>
- 2、在需要的人机验证的模块引入以下代码,data-sitekey为网站公钥
具体样例如下:
xml
<html>
<head>
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form method="POST">
<div class="g-recaptcha" data-sitekey="6LcD-1opAAAAAGifGEqj0dTtYiVj5iWLOk9J3M93"></div>
<br/>
<input type="submit" value="Submit">
</form>
</body>
</html>
2.4.4.服务端对接
1.访问API www.google.com/recaptcha/a...
参数如下:
- secret: 网站访问私钥
- response:前端验证完返回的token
- remoteip:远程用户的ip(选填)
2.返回信息:
json
{
"success": true,
"challenge_ts": "2024-01-24T11:07:10Z",
"hostname": "123.207.217.135"
}
2.5.优缺点:
优点:
- 品牌认知度很大。 熟悉 Google 和 Google 服务通常使其成为首选。
- 设置 API 密钥对后,用户可以选择 reCAPTCHA v2 和 reCAPTCHA v3 之间的客户端集成。
- 每月最多可免费进行一百万次评估。
缺点:
- 谷歌及其产品在中国这个世界上最著名的数字社区被屏蔽。
- 当您与 reCAPTCHA 交互时,您可能正在帮助 Google 实现其机器学习目标。 您实际上是通过选择船只、公共汽车或交通信号灯的图像来为 Google 标记数据集。 谷歌表示它使用这些数据来解决人工智能难题。 这些问题究竟是什么很难说,但很多人已经注意到这些图像通常集中在与交通和运输相关的项目上。
- 有些图像质量很差,有时甚至有颗粒感。 这给有视力障碍的人带来了额外的挑战。
- reCAPTCHA v2 和 v3 都缺乏功能,包括支持。 只有 v3 被列为客户友好型。 大多数功能都是为企业级用户保留的。
- 只有企业级是可定制的。
- reCAPTCHA 可能不符合 GDPR。
- 有很多关于用户隐私和谷歌如何使用用户数据的问题。
2.6.收费策略
注意:从4月份开始,reCAPTCHA每月免费次数从100w次下调到1w次,超过的就要收费了。
三.hCaptcha介绍
3.1.简介
与 Google reCAPTCHA 一样,hCAPTCHA 是一项服务,通过区分人类和机器人流量来帮助保护网站免受垃圾邮件和滥用。它是由Intuition Machines公司创建的。它采用先进的风险分析技术来确定用户是人类还是机器人,并且与 Google reCAPTCHA 一样,它可以通过多种方式实现,包括复选框、图像选择和音频挑战。
官网信息:www.hcaptcha.com/
3.2.优势
hCAPTCHA 和 reCAPTCHA 之间的主要区别之一是 hCAPTCHA 更关注隐私。它不会跟踪用户,并允许网站所有者自定义验证码难度级别。
hCAPTCHA 可以通过使用简单的 API 与网站集成,并且可以对其进行定制以满足网站的特定需求。
3.3.版本介绍
主要包含企业版,pro版一级公共版本。
公共版本是最基础的版本,只支持复选框图形选择人机验证,并且要求所有的都进行验证。
Pro版本可以进行更多维度的选择,
3.4.对接流程
3.4.1.对接流程图
- 用户访问站点
- 前端加载hcaptcha Js,生成人机验证吗
- 用户进行验证码校验
- 将用户认证的结果发到验证码服务器,并返回token
- 根据对应的业务,前端将token请求到后台,后台对本次请求有效性进行验证 11.验证通过则继续。
3.4.2.密钥获取
1.打开官网,注册账号之后,点击登录
登陆完成之后获取到用户的密钥:secret: ES_ab371ada1dfc42ea8a4104259baa3153
2.点击添加站点
3.填写站点名称一级支持域名,设置验证码行为模式以及挑战难度,点击保存
4.获取到站点key
账户信息:
siteKey: f8594e0c-e36b-4b2b-8ed4-4a8810a2fa7e
secret: ES_ab371ada1dfc42ea8a4104259baa3153
5.可以进行流量分析
3.4.3.web对接
- 1、引入
- 2、在需要的人机验证的模块引入以下代码,data-sitekey为网站公钥
具体样例如下:
xml
<html>
<head>
<title>hCaptcha Demo</title>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
</head>
<body>
<form action="" method="POST">
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<div class="h-captcha" data-sitekey="f8594e0c-e36b-4b2b-8ed4-4a8810a2fa7e"></div>
<input type="submit" value="Submit" />
</form>
</body>
</html>
3.4.4.服务端对接
1.访问APIapi.hcaptcha.com/siteverify
参数如下:
- secret: 网站访问私钥
- response:前端验证完返回的token
2.返回信息:
json
{
"success": true,
"challenge_ts": "2024-01-24T12:45:02.000000Z",
"hostname": "123.207.217.135",
"credit": false
}
3.5优缺点:
优点:
- 完整的第 508 节和 WCAG 2.1 AA 合规性(可访问性)。
- hCaptcha 是一种隐私优先的工具。
- 所有图像标记都来自需要标记这些数据集的其他公司的数据集。
- JavaScript API 允许您自定义 hCaptcha 行为。
- hCaptcha 适用于所有国家/地区。
- 每月最多可免费进行一百万次评估。
- 对于需要更多特性和功能的用户,有 Plus 和 Enterprise 层。
缺点:
- 回扣收入和慈善捐赠仅列为出版商计划的一部分,而不是专业或企业级别。
- 不是每个人都能像 hCaptcha 那样完成基于图像的安全检查,因此可能存在一些可访问性问题。 hCaptcha 表示,这些问题已通过第 508 节和 WCAG 2.1 AA 合规性得到解决。
- 一些图像可能更难以解决,因为它们质量差或来自晦涩的数据集。 对于有视力障碍的人来说,这可能更具挑战性。
- Intuition Machines 没有发布有关哪些公司从用户的图像标签中受益的信息。 他们只说这些信息属于保密协议,并且这些图像是为与他们合作的其他公司贴上标签的。
3.6 收费模式
#### Publisher | #### Pro | #### 企业 |
---|---|---|
每月最多释放一百万个请求 | 99美元/月 10w次,超过部分1美元1000次评估 | 和销售沟通 |
四.两者的对比
所有权: reCAPTCHA 由 Google 拥有和开发,而 hCAPTCHA 由 Intuition Machines 拥有和开发。
隐私: reCAPTCHA 收集有关用户行为和与网站互动的数据,而 hCAPTCHA 更注重隐私,不会跟踪用户。
难度级别: reCAPTCHA 的难度级别由 Google 的算法决定,而 hCAPTCHA 允许网站所有者选择验证码的难度级别。
定制: 这两种服务都可以使用简单的 API 与网站集成,并进行定制以满足网站的需求。但是,hCAPTCHA 允许在难度级别方面进行更多自定义。
便利性:reCAPTCHA对应的站点密钥生成之后,就决定了验证码的验证方式,是隐式,显式还是评分。而hCAPTCHA更加灵活,可以通过后台进行设置进行控制。
综合考虑上建议使用hCAPTCHA作为人机验证的技术方案。
五.集成方案概要
5.1.复选框选择
1.集成采用隐形复选框得模式,当用户在做指定操作
2.建议升级Pro版本,使用被动99%无摩擦模式,保证安全性的前提,减少对客户的打扰。
5.2.触发验证场景
1.用户登录获取验证码
2.oauth授权登录
3.其他场景需要的由产品补充。
5.3.前端需要支持得能力
1.可以根据后台配置开关,控制是否开启人机验证,防止第三方服务不可用阻塞我们得业务流程,进行服务降级。
2.通过验证的token根据业务带到服务端
5.4 服务端需要支持得能力
1.提供是否开启人机验证得全局配置接口
2.对于引入人机验证的业务接口支持token参数得接收
3.需要对接hCAPTCHA进行验证结果得校验。