Kaffa

Kaffa's Faded Fadeless Abstraction

关于滑块验证码的思路

图灵测试

图灵测试是一个著名的思想实验,它要解决的问题是如何判断一台机器是否具有智能。

简单的讲,就是把判定对象看做黑盒,人与其对话,如果人分辨不出被判定对象是否是机器的话,就算它通过了图灵测试。

而“中文房间”思想实验,即呈现了图灵测试的局限——即使机器实现了智能外在的输入输出,内在结构也可以不是智能。

滑块验证码

软件安全技术的攻击与防守就好比矛和盾,随着技术的更新,此消彼长。

由于自动化技术的发展,脚本加本地代码已可以解决没有技术门槛的人类验证。二十年前,只要懂脚本,就可以让计算机自动做很多事;十六年前,Luis 在发明了验证码, 我也曾在 Google Code 中下载 tesseract-ocr 以解决中文验证码,但 Gooogle 的 reCAPTCHA 确实很扭曲,却是鲜有人破解。

但随着 AI 机器学习技术的发展,扭曲文字的自动识别难点已被攻破。在多年前的某天,滑块验证码出现了,技术社区讨论如火如荼。

稍微几年未关注,这个领域除了巨头,还产出了 API 售卖 reCAPTCHA 的小而美的公司,比如`极验`_。

GitHub 中也有不少破解其旧版本的代码,虽然没有查看其新版本,但可以简单谈谈绕过的思路。

解决思路

可以从网络层、系统层和用户层来考虑:

  • 网络层:此类验证,最后发送的数据一定需要加密,难点在于对付 js 的混淆,通过单步调试找到加密前的数据。理解数据,或直接采集多组数据,再模拟发送即可。这一种思路对耐心的要求很高。
  • 系统层:通过程序抓图和图像运算比对,计算出键盘鼠标的操作即可,这一种相对比较容易,但速度不如网络层解决快。
  • 用户层:采用软硬件结合的极客思路,用摄像头进行视觉采集,用机器手操纵鼠标,完全模拟一个有智能的会操作键盘和鼠标的人,这种可能是最一劳永逸,但门槛最高的思路。

感谢观阅,如果您觉得有用,可以扫我的赞赏码,鼓励一杯咖啡。

我的赞赏码