JS `CAPTCHA` (验证码) 识别与绕过技术

各位观众老爷们,晚上好!今天咱就来聊聊这让人又爱又恨的“验证码”——CAPTCHA,以及如何用JS来识别它(当然,咱们只聊聊技术原理,别干坏事儿啊!)。 开场白:验证码这磨人的小妖精 话说这互联网江湖,鱼龙混杂,各种机器人爬虫横行霸道。为了保护咱们的网站不被它们薅羊毛,验证码(CAPTCHA)应运而生。这玩意儿,表面上看是几个歪七扭八的字母数字,实则肩负着区分人类和机器的重任。 但问题来了,验证码也经常误伤友军,让人类也得费劲巴拉地辨认,简直是“敌我不分,一律打倒”。更可气的是,有些坏家伙,想方设法地绕过验证码,搞得咱们防不胜防。 所以,今天咱就来扒一扒这验证码的底裤,看看JS能做些什么。 第一部分:验证码类型大观园 验证码的种类繁多,按难度等级可以简单分为: 验证码类型 难度等级 描述 常用技术 简单型 低 纯数字、纯字母、简单的算术题(比如 1+1=?) OCR (光学字符识别), 简单的字符串处理 复杂型 中 扭曲变形的字母数字、带干扰线的字母数字、滑动验证、点击验证 图像处理(二值化、去噪、分割)、机器学习(CNN)、模板匹配、行为分析 行为验证 高 拖动拼图、点击选择图像中的 …