我们使用联盟链接。它们让我们能够维持运营,而您无需承担任何费用。

网页抓取时如何绕过 CAPTCHA

请不要再拍交通灯的照片了。

如何绕过验证码缩略图

除非您正在互联网上抓取小型网站,否则您可能遇到过 CAPTCHA。这是域名保护自己的主要方式之一,因其有效性和简单实施而广受欢迎。CAPTCHA 让您的蜘蛛发出“啊?”的声音,并堵塞您的数据收集管道,比假日粪便还要糟糕。但这并不意味着您对它们无能为力。 

本文将教您如何绕过 CAPTCHA 或使用多种方法缓解它们。它包含有关 CAPTCHA 的一般信息,您可能会觉得有用,例如触发 CAPTCHA 挑战的原因或您可以期待哪些挑战。如果这些内容与您无关,请随意跳到相关部分。

什么是验证码?

CAPTCHA 代表 C完全地 A切入 Public T测试来告诉 C电脑和 H乌曼斯 A部分。如果你不知道图灵测试是什么意思,那么这个缩写词也解释了这一点。这是一个测试,用于确定你正在与之交互的实体是计算机还是人类。换句话说,你在 Tinder 上试图勾搭的女孩实际上是一个人,还是只是一个精心设计的聊天机器人,它会试图推销一个昂贵的网络摄像头网站。 

CAPTCHA 的目的是什么?

CAPTCHA 测试的主要目的是过滤来自机器人的人工流量 (是的,网络抓取工具就是机器人)。它们通过向网站访问者提出各种挑战来实现这一点。这些挑战旨在让人类轻松解决,但让计算机很难破解。CAPTCHA 允许网站管理员遏制不受欢迎的自动化活动,例如垃圾邮件、DDoS 攻击,有时还有网络抓取。 

CAPTCHA 也有次要用途。最初,它们有助于数字化光学内容识别 (OCR) 技术无法破解的扫描质量不佳的文本段落。如今,我们通过标记图像中的对象为 Google 的机器学习算法提供免费劳动力。这真是一项崇高的事业。 

CAPTCHA 如何工作?

CAPTCHA 作为最终测试,用于确定网站访问者是人类还是机器人。 当网站检测到异常流量时,它们就会出现;然后它们会向访问者提出挑战。 

CAPTCHA 的具体配置取决于网站管理员:它可以保护整个网站或特定页面。有时,页面总是会出现 CAPTCHA,尤其是注册、评论表单或结帐页面。但更多时候,它需要某种触发器才能出现。 

什么会触发 CAPTCHA 挑战?

导致 CAPTCHA 的主要因素有:

  • 简单的 CAPTCHA 触发器。这些包括异常流量、来自单个 IP 地址的大量连接或使用低质量 数据中心 IP。例如,VPN 用户看到的 CAPTCHA 比普通网站访问者多,因为 VPN 从数据中心获取其 IP。许多员工共享 IP 地址的公司网络也是如此。 
  • 被动指纹识别。 评估您的网络和设备的参数集合。最重要的是 HTTP 标头、用户代理、TLS 和 TCP/IP 数据。 
  • 主动指纹识别。 这是一种更为复杂的技术,可以通过 JavaScript 嗅探有关硬件和软件的高级信息。它会查看 WebGL 参数、字体、插件等。 

这些触发器不必涉及 CAPTCHA – 它们可以简单地阻止访问者浏览网站。当指纹识别或其他保护方法无法确凿证明访问者不是人类时,它们就会组合在一起。以下是您可以预期的组合及其频率:

混合型皮肤频率
简单触发 + 验证码最常见的
被动指纹识别 + CAPTCHA相当常见
主动指纹识别 + CAPTCHA比较少见
简单触发 + 被动 + 主动指纹识别 + CAPTCHA罕见

正如你可以看到, 许多网站不愿意实施复杂的指纹检查。 这是因为这样做需要大量资源,而且也会损害用户体验。例如,Cloudflare 使用主动指纹识别来触发 CAPTCHA,我相信很多人不喜欢被它的“正在检查浏览器”屏幕不断打断。

一旦触发 CAPTCHA,它就会向访问者提出挑战。

CAPTCHA 挑战的主要类型

CAPTCHA 挑战有很多种类型,很难在这里一一列出。相反,我们将它们分为您最有可能遇到的几个大类:

文本输入验证码

此类型显示一串扭曲的字母和数字。要通过挑战,您必须将它们重新输入到文本字段中。

文本输入验证码示例
基于文本的 CAPTCHA 可能是最古老的类型,由最初的 CAPTCHA。由于文本很容易被机器人操纵,而人类很难输入,因此它们已经不再流行。然而,它们仍然被网络论坛甚至亚马逊等网站广泛使用。

图片验证码

图像挑战的一个典型示例是 reCAPTCHA 的图像网格,您必须在其中选择包含某个对象的方块。如果成功,您就可以通过;否则,您将获得另一个网格或测试失败。

图像验证码示例

图像 CAPTCHA 非常流行,您很可能最常遇到它们。基于图像的挑战有多种变体,例如定义对象的边界或按类别标记您看到的内容。

音频验证码

这些挑战会提供一段音频摘录,然后要求输入您听到的字母、单词或数字。

音频验证码示例

音频 CAPTCHA 很少单独出现。相反,它们作为其他类型挑战的后备选项,供可访问性有限的用户使用。为了增加语音识别软件的难度,音频测试有时会使声音失真。

谜题验证码

此类 CAPTCHA 包括数学问题(加法、减法和其他运算)、文字谜题、空间任务和类似的测试。

谜题验证码示例

例如,一种流行的 CAPTCHA 系统 fun CAPTCHA 经常要求网站访问者滚动一个里面有 3D 模型的球。另一个 CAPTCHA 系统 Geetest 要求您移动一块拼图来完成拼图。拼图 CAPTCHA 依靠运动和类似的机制来避免机器学习模型非常擅长解决的识别任务。

按钮验证码

这种类型也称为 noCAPTCHA,因为它要求访问者点击复选框,而不是向他们提出挑战。因此,如果一切顺利,普通用户无需执行任何其他操作即可通过。如果验证失败,则会出现常规挑战(通常是图像)。

按钮验证码示例

按钮 CAPTCHA 被 Google 的 reCAPTCHA 和 hCAPTCHA 广泛使用,这是互联网上最受欢迎的两个系统。它减少了解决挑战的阻力,并且在阻止机器人方面非常有效。该系统使用行为线索来监控访问者如何勾选复选框;我们将在下面的 reCAPTCHA v2 中简要介绍它们。 

隐形CAPTCHAs

隐形 CAPTCHA 甚至不会给您一个复选框来勾选 — 事实上,普通人根本看不到它。它完全在后台运行,系统会监视访问者并决定是否向他们提出挑战。 

隐形 CAPTCHA 是 Google 倡导的最新技术进步。其目的是让人们更加方便。然而,这种 CAPTCHA 因使用侵入性和侵犯隐私的技术来过滤机器人流量而受到批评。

社交媒体登录

社交媒体登录要求新用户使用他们的社交媒体帐户注册,然后才能查看内容或使用服务。

社交媒体登录示例

虽然严格意义上来说社交媒体标志并不完全是 CAPTCHA,但它也用于过滤来自机器人的人工流量。它们非常有效,因为仅仅填写虚假信息是不够的——你还需要一个虚假的社交媒体账户。因此,你突然需要处理两个网站而不是一个,而且社交平台对于自动化工具来说并不是一个容易攻克的难题。

最流行的 CAPTCHA 系统

以下是互联网上一些较为流行的 CAPTCHA 系统:

reCAPTCHA v2

Google 自己的 CAPTCHA 解决方案。它于 2013 年发布,此后取代了该公司基于文本的 reCAPTCHA v1。尽管已经有了第三个版本,但版本 2 仍然是网站管理员非常流行的工具。 

reCAPTCHA v2 以“无需验证码的 reCAPTCHA”而闻名。这是因为 它给出了一个简单的“你是机器人吗?”复选框 而不是挑战。运动鞋黄牛称这个框为“一键验证码”。它减少了每次解决验证码的麻烦。 

验证失败或成功的原因是什么?Google 会考虑用户的 Cookie 历史记录、鼠标移动和其他行为数据。如果这些参数缺失或不匹配,它们可能会触发 CAPTCHA 挑战。由于依赖 Cookie,v2 因向非 Chrome 用户提供更多挑战而臭名昭著。 

2017 年,谷歌推出了隐形 reCAPTCHA。它的工作原理与常规 v2 类似,但您无需点击特殊框,而是可以将其绑定为在点击任何按钮时触发。 

reCAPTCHA v3

谷歌于 2017 年发布了 reCAPTCHA 的第三个版本。与 v2 不同,v3 并没有取代其前身,并且版本 2 和 3 均可作为替代选项。 v3 的设计目的是为了无需任何交互即可工作。 它对用户来说是不可见的,并在后台持续监控他们的行为。根据这些行为,它会给用户打分——他们被机器人攻击的可能性有多大。如果分数较低,reCAPTCHA v3 会让网站管理员 选择要采取的行动:提出 v2 挑战、限制请求数量、阻止用户或让他们通过。为了评估访客,reCAPTCHA v3 使用先进的主动指纹识别方法,通过 JavaScript 窃取信息。

验证码

hCAPTCHA 的工作方式与 Google 的工具非常相似。 与 reCAPTCHA 一样,它会分析行为模式以确定用户是人类还是机器人。如果检查失败,用户将收到挑战。大多数情况下是图像,但 hCAPTCHA 使用了一种有趣的机制,其中挑战类型取决于最高出价者。hCAPTCHA 相对较新——它于 2018 年才作为 reCAPTCHA 的答案推出。通过关注隐私,并且对大多数网站免费,hCAPTCHA 迅速在整个网络中传播开来。2020 年 XNUMX 月,它成为 Cloudflare 的首选提供商,如今 hCAPTCHA 可能是网络上最广泛使用的 CAPTCHA 系统。

亚马逊验证码

亚马逊自己的 CAPTCHA 系统在规模上无法与前三个选项相比。但这家零售巨头是网络抓取的主要目标,所以我们就来谈谈这个。与已经转向其他方法的谷歌不同, 亚马逊仍然使用基于文本的挑战。很难确定到底是什么触发了它,这对许多人来说使得抓取亚马逊的数据变得相当不可预测。亚马逊 CAPTCHA 的另一个问题是,你并不总是知道你什么时候收到一个。无论是否使用 CAPTCHA,你仍然会得到 200 状态代码。所以,如果你的抓取工作进展顺利,不要太兴奋。亚马逊一直在玩弄 其他实现,因此尚不清楚基于文本的挑战将持续多久。但就目前而言,它们已经存在,你必须应对它们。

如何绕过 CAPTCHA

如果你的网页抓取工具遇到了 CAPTCHA,你首先应该做的是 轮流 你的IP地址。这通常会带来意想不到的帮助,特别是当您使用优质代理网络时。 

否则,绕过 CAPTCHA 主要有两种方法:您可以尝试解决挑战,也可以完全避免它。 

解决挑战

解决挑战意味着要直面挑战。这假设 CAPTCHA 不可避免,或者您的网页抓取设置不够复杂,无法欺骗网站的保护机制。最简单(且技术含量相对较低的)的方法是获取 CAPTCHA 解决服务。  2Captcha 和 Anti-CAPTCHA 等网站使用真人为您解决挑战;您只需输入哈希值并通过 API 接收解决方案即可。以这种方式处理 CAPTCHA 每 1 次挑战的成本为 3-1,000 美元。至于更高级的方法:
  • 基于文本的挑战 可以通过机器学习来克服。您可以下载包含文本的图像,对其进行分割,然后训练神经网络来识别字母。这需要时间,但可以彻底解决问题。
  • 基于图像的挑战 有几种解决方案。你可以 发现 或者训练卷积神经网络来识别图像。或者,几乎所有基于图像的验证码都为残障人士提供了无障碍模式。它允许下载音频文件并使用任何在线(免费)语音转文本 API 进行处理,而不是解决图像问题。请注意,谷歌已经加强了其主动指纹识别算法,因此您可能并不总是能获得音频选项。

避免挑战

当然,最理想的结果是完全避免使用 CAPTCHA。这比简单地暴力破解更难实现,但通常更有回报。我们建议尝试以下方法:

  • 使用优质 IP 地址。 IP 识别通常是网站使用的第一道防线。通过良好且“干净”的 住宅 IP 地址,您遇到 CAPTCHA 的可能性就会降低。 
  • 限制您提出的请求的数量。 您不应向网站发送大量来自同一 IP 的请求。更改请求之间的时间间隔,设置自然超时。不要抓取速度过快或一整天不停歇。 
  • 改善你的网络爬虫的指纹。 抓取时尽量做到有机:匹配 TLS 参数、HTTP 标头、拥有真实用户代理的数据库、在不再需要 cookie 时丢弃它们。 
  • 模仿人类行为。 如果网站保护得特别好,您可以尝试浏览其页面、点击链接和模拟鼠标移动。您可能还想使用无头浏览器。 无头库 像 Puppeteer 一样完全呈现 JavaScript 并包含其他有用的功能来帮助伪装你的网络爬虫。 

结语

现在您知道了什么是 CAPTCHA、它们的主要类型以及绕过它们的一些方法。请注意,并非所有 CAPTCHA 都是相同的 - 它们的触发条件和难度取决于网站的安全性和您的操作。请记住这一点,祝您的网页抓取顺利!

代理服务器作为房屋

关于绕过 CAPTCHA 的常见问题

CAPTCHA 刚推出时,在阻止机器人方面非常有效。如今,由于机器学习的进步,CAPTCHA 的效率有所下降,但 CAPTCHA 仍能阻止大量不成熟的机器人流量。

是的。reCAPTCHA 训练 Google 的 AI 模型,使其更好地理解图像和文本。其他系统(如 hCAPTCHA)为付费公司标记数据。

它们的技术基础非常相似。主要的区别在于它们的原理。reCAPTCHA 来自 Google,因此它并不总是尊重我们的隐私,而是使用获取的数据来改进 Google 的算法。hCAPTCHA 由另一家不参与广告业务的公司维护,并声称关心用户隐私。

Adam Dubois 的图片
亚当·杜波依斯
代理极客和开发人员。