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

网页抓取时如何绕过 CAPTCHA

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

如何绕过验证码缩略图

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

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

什么是验证码?

CAPTCHA 的全称是完全自动化公共图灵测试,用于区分计算机和人类” 。如果你不知道图灵测试是什么意思,其实这个缩写本身就解释了的含义。它是一种测试,用来判断你正在与之交互的实体是计算机还是人类。换句话说,它可以判断你在 Tinder 上搭讪的那个女孩究竟是真人,还是一个精心设计的聊天机器人,试图推销某个昂贵的网络摄像头网站。

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。由于文本很容易被机器人操纵,而人类很难输入,因此它们已经不再流行。然而,它们仍然被网络论坛甚至亚马逊等网站广泛使用。

图片验证码

图像挑战的一个典型示例是 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

如果你的网络爬虫遇到验证码,首先应该尝试轮换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 的图片
亚当·杜波依斯
代理极客和开发人员。