网页抓取时如何绕过 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 挑战有很多种类型,很难在这里一一列出。相反,我们将它们分为您最有可能遇到的几个大类:
文本输入验证码
此类型显示一串扭曲的字母和数字。要通过挑战,您必须将它们重新输入到文本字段中。
图片验证码
图像挑战的一个典型示例是 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
验证码
亚马逊验证码
如何绕过 CAPTCHA
如果你的网页抓取工具遇到了 CAPTCHA,你首先应该做的是 轮流 你的IP地址。这通常会带来意想不到的帮助,特别是当您使用优质代理网络时。
否则,绕过 CAPTCHA 主要有两种方法:您可以尝试解决挑战,也可以完全避免它。
解决挑战
- 基于文本的挑战 可以通过机器学习来克服。您可以下载包含文本的图像,对其进行分割,然后训练神经网络来识别字母。这需要时间,但可以彻底解决问题。
- 基于图像的挑战 有几种解决方案。你可以 发现 或者训练卷积神经网络来识别图像。或者,几乎所有基于图像的验证码都为残障人士提供了无障碍模式。它允许下载音频文件并使用任何在线(免费)语音转文本 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 由另一家不参与广告业务的公司维护,并声称关心用户隐私。