详解
CAPTCHA是一种机器人检测验证,当网站认为你的流量可能是自动化流量时就会出现。最经典的形式是需要你识别的扭曲文字图片;现代形式包括图片网格谜题("选出所有包含交通灯的方格")、音频验证,以及行为型/隐形CAPTCHA——后者会监测你与页面的交互方式,在你意识到有验证之前就悄悄判断你是人类还是机器人。
目前主流的CAPTCHA服务商有Google reCAPTCHA(v2、v3以及Enterprise版本)和hCaptcha,两者都被Cloudflare、Akamai等反机器人系统广泛采用。Cloudflare还推出了自家的Turnstile验证,作为reCAPTCHA和hCaptcha的替代方案。每套系统都采用不同的组合方式,融合图片谜题、浏览器指纹识别、鼠标/键盘行为分析以及IP信誉评分,最终计算出一个"人类可能性"分数。
在爬取和数据采集工作流中,应对CAPTCHA的正确思路不是去破解它,而是从一开始就避免触发它。CAPTCHA会在请求看起来可疑时触发(比如使用数据中心IP、缺少请求头、指纹不匹配、请求频率突增),因此最根本的解决方法是做好基础工作:使用住宅/移动IP、配置现代浏览器请求头、保持真实的请求时间间隔,以及使用正确的TLS指纹。当CAPTCHA确实出现时,切换到一个新的IP通常就能找到一条干净的访问路径。
工作原理
当请求到达时,网站(或其反机器人供应商)会利用以下信号计算风险评分:源IP信誉(数据中心?近期滥用记录?所在国家?)、浏览器指纹(User-Agent、sec-ch-ua、屏幕尺寸、插件)、TLS握手指纹(JA3/JA4)、行为信号(鼠标移动、按键时序、页面停留时间),以及Cookie/令牌的历史信誉。
若评分低于人类置信度阈值,系统会在响应中插入CAPTCHA验证挑战。该挑战要求客户端完成某项任务(识别文字、点击匹配图片、通过隐形行为检测),并将令牌提交回服务器。若无有效令牌,服务器将拒绝后续请求。