定义:
全自动区分计算机和人类的公开图灵测试
英语:完全自动化的公共图灵测试,告诉计算机和人类
俗称验证码,缩写为Captcha。
首先,需要明白:
验证码是种反人类的存在。但它短时间内不可能退出历史舞台。我们需要尽量优化它,尽量提升用户的体验。
为什么要有验证码呢?
是为了证明网络的那端是一个人而不是一台机器(电脑)。
为什么要区分是人还是机器呢?
原因很多,归根结底,在于做坏事上,机器的效率比人高,成本比人低!
示例,臭名昭著的百度,极其恶心的验证码:
下面是验证码的几种常用场景:
- 账号安全。比如登录窗口,如果不设置验证码,可以使用脚本进行暴力破解。
- 防作弊。比如,12306的验证码是为了防止机器恶意刷票。
- 反垃圾消息。比如,某些论坛上的验证码,防止机器群发的垃圾广告广告。
下面是几种常见可视化验证码的形式:
- 歪曲的字
- 倒立,点击
- 问答题
- 滑动拼图验证码
- 其他各种五花八门
他们有一个共同点,机器不容易辨认,可人类很容易就能识别。
现在,验证码技术也在不断发展。尤其是基于大数据的智能判断方兴未艾,按下不表。
验证码的原理
一个完整的验证逻辑分两步:
- 第一次请求
- 服务器生成一个可以比较的对象,比如字符串或数字,并将其保存起来。一般保存到会中。
- 服务器根据上述生成的对象,构造出机器难以辨识的一段数据,比如声音,图片或短信,并发送给用户。
- 数据在客户端展示,用户可以去识别。
- 第二次请求,携带用户输入的验证信息(校验阶段)
- 用户将自己的数据,连带辨识出来的验证码数据,一并请求到服务器
- 服务器将之前保存的原始数据,跟用户提交的作比较。如果相同,那么通过,否则不通过。
图片验证码
这是一种最基本的验证方式