报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

谷歌的诀窍:如何取消验证码

  • 2014-12-23
  • 本文字数:1207 字

    阅读完需:约 4 分钟

谷歌最近研发出一种新方法,该方法能够通过一个简单的方法区分机器人和人,从而取消网站上那些烦人的验证码,并带给用户更好的新体验。

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,意思是完全自动地区分计算机和人类的图灵测试。很多年来,互联网上的注册、验证等都是通过那些独特的验证码来防止机器人对服务器进行暴力占用。通过扭曲的验证码符号,它可以防止恶意破解密码、恶意刷票、论坛灌水等等不太正常的行为。同时可以防止一些非正规用户对程序进行暴力破解。

然而,验证码带给真正人的用户体验往往是非常烦人而且繁杂的。为了上一个论坛网站,用户需要首先通过验证码注册账户,接着通过验证码登录网站,最后通过验证码回复用户所感兴趣的帖子。同时,过度扭曲的验证码往往很不容易识别出来,从而增加了用户尝试的次数,更加让这个过程变得臃肿。为了解决这个问题,谷歌的相关人员前后进行多次研究,并且提出了相关方法。

在一年前,谷歌提出了一种改进方法,即视觉或者视屏的迷宫,叫做“reCAPTCHA”。这种方式在图灵测试中对人类和机器人的区别率达到了 99.8%,这是一种非常有效的改进。然而,在“reCAPTCHA”方法提出之后,相关人员又对机器人识别做出了更加智能的改进,从而让机器人适应了新的验证方式,这时,现有的验证码就无法再做到有效区别机器和人了。

因此,谷歌在最近提出了一种新的分析方式来判别人类还是机器人。他们改进了这种方法,让那些使用验证码的网站可能再也不需要用户来输入一个验证码了。用户只需要点击一个复选框(如下图)即可完成验证工作。如果这样还不能判定是机器人还是人类,那么这种方式会使用老的 reCAPTCHA 方法来验证。根据谷歌内部透露,早期使用新的 reCAPTCHA 的用户群体,在使用新方式的时候,约 60% 的 WordPress、80% 的 Humble Bundle 用户只是用了复选框点击判断,并没有看到老的 reCAPTCHA 界面。

这种方式的具体原理是在用户使用网络的时候就开始收集大量信息,包括 IP 地址、Cookies 等,然后通过这些数据来判定用户现在与过去的使用方式是否一致,从而确定到底是不是机器人。谷歌还会根据用户鼠标在复选框上的移动方式、点击方式等细微的地方,确定人与机器人的区别。还有一些其他的细微变量也帮助了谷歌判断,但是目前谷歌没有透露,以防止那些机器人的软件破解这种新的方式。

当需要使用这种新的验证方式的时候,网站开发者需要从谷歌获取一个密码对。新的 reCAPTCHA API 同时为移动设备提供了一套自动、清晰的组件,该 API 禁用了 JavaScript 来防止对信息的盗取。大部分现行的浏览器,像 Chrome 3+、Firefox 3+、IE 7+、Opera 10.10+ 以及 Safari 4+ 都已支持该 API。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-12-23 02:529759
用户头像

发布了 268 篇内容, 共 127.4 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

互联网工程师Java面试八股文及答案整理(2023最新版)

Java你猿哥

Spring Cloud springboot java面试 面经 JVM面试

运维审计录像的作用是什么?用什么软件好?

行云管家

堡垒机 运维审计 审计录像

Databend v1.1 版本发布!

Databend

ElasticSearch 高级检索,按照顺序进行搜索

alexgaoyh

elasticsearch dsl 顺序搜索 高级检索 与或关系

解决流水线瓶颈、提升编码效率的五个方法(上篇)

龙智—DevSecOps解决方案

ci cicd 持续集成 流水线

云服务是什么意思?有什么用?

行云管家

云计算 云服务

OneCode 开源集成开发工具ESD功能介绍

codebee

开源 低代码平台

技术分享 | 如何迅速将分布式政企应用转型为云原生微服务架构

IT科技苏辞

分布式文件系统FastDFS

会踢球的程序源

Java fastdfs 分布系统

打造安全无忧软件应用的十大最佳实践

龙智—DevSecOps解决方案

软件开发 软件开发安全

600+ 道 Java面试题及答案整理(建议收藏)

会踢球的程序源

Java 面试 java面试 应届生 Java八股文

阿里高工纯手写的《分布式架构手册》仅仅一天GitHub就标星128K

Java你猿哥

架构 分布式 分布式架构

大咖力荐 |《中国企业软件研发管理白皮书》为什么值得看?

万事ONES

【经验分享】硬件工程师需要知道的DFM可制造性设计

华秋PCB

工具 电路 PCB PCB设计 可制造性

PostgreSQL技术内幕(七)索引扫描

酷克数据HashData

数据库 postgresql

解析单存储库:定义、优势与挑战

龙智—DevSecOps解决方案

谷歌 Monorepo Monolith 单储存库

爆肝一月!527页文档详解SpringCloud微服务和分布式系统实践

Java你猿哥

数据库 分布式 SSM框架 微服务设计

第二届“鼎新杯”数字化转型应用大赛申报通道正式开启

信通院IOMM数字化转型团队

数字化转型 鼎新杯

人工智能会取代人类成为地球的主宰么?| 社区征文

毛小毛

人工智能 ChatGPT 三周年征文

优秀的pdf编辑器:Acrobat Pro DC 中文直装版

真大的脸盆

Mac PDF Mac 软件 PDF格式转换

实战分享丨 MySQL 与 Django 版本匹配相关经验

Java你猿哥

Java MySQL SSM框架 实战 Diango

Postman Runner 使用指南

Liam

Java 后端 Postman 接口测试 API 开发

ReentrantLock和Synchronized使用与区别,多线程安全问题

共饮一杯无

synchronized ReentrantLock 三周年连更

研究思考丨关于软件复杂度的困局

阿里巴巴云原生

阿里云 云原生 复杂度

Linux 修改系统时间的两种方式

会踢球的程序源

Java Linux

【Linux】系统中安装Go环境

A-刘晨阳

Go Linux 三周年连更

关于自托管环境,您了解多少?

龙智—DevSecOps解决方案

Atlassian Data Center

RocketMQ 多级存储设计与实现

阿里巴巴云原生

阿里云 RocketMQ 云原生

缓存一致性设计思路

我爱娃哈哈😍

redis 缓存 缓存一致性

某程序员哀叹:写几年代码,回头一看80%都没用,没法写上简历!

Java你猿哥

Java 程序员 面试 简历

涅槃重生!字节大牛力荐大型分布式手册,凤凰架构让你浴火成神

Java你猿哥

架构 分布式架构 凤凰架构

谷歌的诀窍:如何取消验证码_Google_张天雷_InfoQ精选文章