验证码如何判断你是不是真人
大家好,这里是 码谈 Code Talk ,我们用程序员的视角观察这个有趣的世界。
这一期我们看看,系统是如何判断你是不是真人的。
现如今我们上网的时候可能会碰到一些奇形怪状的“小游戏”,这些拼图、选择的小游戏可不是用来给你消遣的,而是程序用来判断你是否是真人的验证码。
验证码本质上就是为了阻止一些程序可以全自动完成的操作,为之加上一个验证步骤。这些恶意程序可能会批量注册账号,发一堆垃圾信息让你的评论区根本没法看;也可能恶意刷票,比如微信上你让我给你家宝宝投票最美宝贝活动,我看不惯,就喜欢另一个小孩,给他直接刷上一万票,直接让TA登顶;还有可能你是个房产中介,挨家挨户的拜访才获得的用户资料,我直接用爬虫就给全部下载下来放到我自己的APP上了。为了阻止这些行为,系统纷纷用上了验证码。
最开始的验证码相对简单,数字、英文、中文,排列的歪七扭八的,加上干扰视觉的点和线,生成出来图片,这就是最基础的验证码,验证的方式就是用户输入图片中的文字,这也是CAPTCHA被叫做验证码的原因了。
破解者应对这种验证码的方式也很简单粗暴,就是人工打码,这里所说的打码可不是给影片打上马赛克的打码工,而是人工输入验证码的工作。你可能会看到过这样的广告,“在家兼职,每天200,会打字就行”,这背后的由头可能就是打码工,他们可能会发给你一个软件,让你注册账号,然后就是一直盯着屏幕敲验证码,枯燥且劳累,可能一天下来连电费都挣不回来,更别提那些直接以兼职为名的骗你层层交保证金的诈骗行为了。
现如今随着OCR识别技术和人工智能的发展,这些纯字符的验证码已经不能保障网站的安全了,网站也纷纷采用了更为“方便”的行为验证码。行为验证码通过对用户的行为特征进行分析,比如访问者所在网络段可信度、用户移动鼠标的轨迹和打字的速度都能成为判断依据,并且这些验证码服务提供商会利用使用者每次验证的数据自我学习升级,调整模型。
如果系统认为你足够可信,可能点击一下验证就能直接进行下一步操作,如果觉得你有点可疑,可能会让你进行滑动拼图验证,如果系统认为你这个人真的有点可疑,还会让你进行文字点选、图标点选、语序点选和空间推理等验证操作。
除此之外,在注册这样重要的操作上,应用还会要求用户使用绑定了身份证的手机号、微信号、支付宝账号进行验证,以确保实名上网和防止羊毛党疯狂注册领取新手福利。
破解者对此也并非毫无办法,比如爬虫程序可以用IP池里的大量IP轮流访问、模拟鼠标键盘移动假装人类操作,更狠的是直接雇佣真人完成这些工作,只要有足够的利益,没有什么操作是不可能的。
验证码和破解者不断升级自己的技术和手段,这不仅是厂商与对手的博弈,也是厂商在用户体验和系统安全的之间的取舍。验证码对于普通用户可能只是麻烦一点,对于使用读屏软件的视障人士,可能就是很难逾越的鸿沟了。科技向善,希望随着技术的发展,将来的验证码能够有效阻止恶意用户操作的同时,也能不给普通用户添麻烦,让所有人无障碍使用。
这里是码谈 Code Talk,我们用程序员的视角观察这个有趣的世界,如果你对视频内容有意见和建议,或者有选题方面的点子,欢迎通过弹幕、评论和私信与我们互动,我们下期再见。