词汇表

什么是 CAPTCHA?

CAPTCHA(全自动区分计算机和人类的公开图灵测试)是一种挑战-响应系统,网站用它来区分人类访客和自动化 Bot,通常要求访客解决一个对人类来说简单但对软件来说困难的谜题。

了解 CAPTCHA 的工作原理、出现原因、现代变体(图像、音频、隐形、行为式),以及如何在抓取时避免触发它们。

详解

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验证挑战。该挑战要求客户端完成某项任务(识别文字、点击匹配图片、通过隐形行为检测),并将令牌提交回服务器。若无有效令牌,服务器将拒绝后续请求。

类型

文字型 CAPTCHA

需要用户识别并输入的扭曲文字图像。这是最经典的形式,如今已基本淘汰,因为 OCR 和机器学习可以轻松解决。

图像网格 CAPTCHA(reCAPTCHA v2)

「请选出所有包含交通灯/人行横道/消防栓的方格。」这是当隐形 reCAPTCHA 标记请求时常用的备用方案。

隐形 / 行为式 CAPTCHA(reCAPTCHA v3、Turnstile)

大多数情况下无需用户交互。系统被动地对页面和访客进行指纹识别,并返回一个评分(0.0 = Bot,1.0 = 人类)。网站自行决定执行的阈值。

音频 CAPTCHA

语音数字或单词挑战,主要作为视觉 CAPTCHA 的无障碍备用方案。

hCaptcha

Cloudflare 及众多注重隐私的网站使用的 reCAPTCHA 替代方案。功能上类似——图像网格挑战加行为信号——但政策和商业模式不同。

常见使用场景

注册和联系表单的垃圾邮件防护
针对撞库攻击的登录限速
评论区/论坛的 Bot 防御
抢票 Bot 防御(演出票、球鞋、预订)
对受保护 API 和页面的爬虫威慑
常见问题

常见问题

关于以下内容的常见问题 captcha.

您的流量触发了「疑似 Bot」信号。最常见的原因包括:数据中心 IP(立即被标记)、缺失或不匹配的浏览器请求头、网站期望有 JavaScript 引擎但实际没有、同一 IP 的突发性请求,或过时的 TLS 指纹。请切换到住宅代理,发送现代请求头,并控制请求节奏。