深色proxyscrape 徽标

网络抓取时如何绕过验证码?- 5 个简单步骤

方法, 刮削, Jan-03-20235 分钟阅读

当你从大型网站上抓取数据时,你最不可能面对的就是验证码来证明你是人类。作为一名网络搜刮者,你可能已经知道为什么网络安全专业人员不得不发明验证码。它们是你的机器人自动提出无穷无尽的网站访问请求的结果。因此,即使是真正的用户也不得不经历面对以不同形式出现的验证码的痛苦。不过,无论你是不是网络搜刮者,都可以绕过验证码,这也是本文的目的所在。但首先,让我们深入了解一下什么是验证码。

绕过验证码进行网络抓取

验证码通常是为了检测网站中的非自然流量而触发的。为了绕过这一限制,用户更倾向于使用一种可以破解所有这些验证码并像真人一样访问网站的解决方案。绕过验证码的解决方案之一就是 Capsolver。在网络请求中使用代理也可以帮助用户以自然流量的方式访问网站。 

什么是验证码?

CAPTCHA 是 "区分计算机和人类的完全自动化公共图灵测试 "的缩写。这个缩写还真长,不是吗?现在你可能想知道这个缩写的最后一部分图灵测试是什么意思--嗯,它是一个简单的测试,用来判断是人类还是机器人在与网页或网络服务器交互。

毕竟,验证码可以将人类与机器人区分开来,帮助网络安全分析师保护网络服务器免受暴力攻击、DDoS 以及某些情况下的网络刮擦。 

让我们来看看验证码是如何区分人类和机器人的。

验证码如何操作?

您可以在网站的表单中找到验证码,包括联系、注册、评论、注册或结账表单。

传统的验证码包括一张图片,图片上的字母、数字或两者都被拉长或模糊,图片放在一个有背景色或透明背景的方框中。然后,您必须识别这些字符,并将它们输入到后面的文本框中。这种识别字符的过程对人类来说比较简单,但对机器人来说却有些复杂。

模糊或扭曲验证码文本的目的是增加机器人识别字符的难度。相比之下,人类可以解读和截取不同格式的字符,如不同字体、手写体等。尽管如此,并不是每个人都能在第一次尝试时就解决验证码问题。根据研究,8%的用户会在第一次尝试时打错字,而如果验证码对大小写敏感,则有29% 的用户会失败。

另一方面,一些先进的机器人通过多年的机器学习,可以拦截扭曲的字母。因此,谷歌等公司用先进的验证码取代了传统的验证码。ReCAPTCHA 就是这样一个例子,您将在下一节中看到它。

什么是 ReCAPTCHA?

ReCAPTCHA 是谷歌提供的一项免费服务。它要求用户勾选方框,而不是输入文本、解谜或数学公式。

典型的 ReCAPTCHA 比传统形式的验证码更先进。它使用真实世界的图像和文本,如街道上的交通信号灯、旧报纸和印刷书籍中的文本。因此,用户不必依赖文字模糊和扭曲的老式验证码。

ReCAPTCHAs 如何工作?

有三种重要的 ReCAPTCHA 测试类型可以验证您是否是人类:

复选框

这些 ReCAPTCHAs 要求用户勾选 "我不是机器人 "复选框,如上图所示。虽然肉眼看来,机器人也能完成这项测试,但这要考虑几个因素:

  • 该测试调查用户在接近复选框时的鼠标移动情况。
  • 用户的鼠标移动并不是笔直的,包括大多数直接的鼠标移动。对于机器人来说,模仿同样的行为是一项挑战。
  • 最后,ReCAPTCHA 会检查浏览器存储的 cookies。

如果 ReCAPTCHA 无法验证您是人类,它会向您提出另一个挑战。

图像识别

如上图所示,这些 ReCAPTCHAs 为用户提供了九个或十六个正方形图像。每个正方形代表一张大图片或不同图片的一部分。用户必须选择代表特定物体、动物、树木、车辆或交通信号灯的方块。

如果用户的选择与进行过相同测试的其他用户的选择一致,则用户通过验证。否则,ReCAPTCHA 将提出一个更具挑战性的测试。

无互动

您知道 ReCAPTCHA 无需使用复选框或任何用户交互即可验证您是否为人类吗?

当然,系统会考虑用户与网站互动的历史记录以及用户上网时的一般行为。在大多数情况下,根据这些因素,系统就能确定你是否是机器人。

如果不这样做,就会重新使用前面提到的两种方法中的任何一种。

是什么触发了验证码和再验证码?

如果网站检测到类似机器人行为的异常活动,就会触发验证码;这些异常行为包括在几秒钟内发出无限请求,以及点击链接的速度远远高于人类。 

这样,一些网站就会自动设置验证码来保护自己的系统。

至于 ReCAPTCHAs,目前还不清楚是什么触发了它们。不过,一般原因是鼠标移动、浏览历史和 Cookie 跟踪。

网络搜索时绕过验证码的注意事项

现在,您已经清楚地了解了什么是验证码和重读码、它们如何运行以及触发它们的原因。现在,我们来看看验证码如何影响网络刮擦。

验证码会阻碍网络搜索,因为大部分搜索操作都是由自动机器人完成的。不过,不要灰心。正如本文开头提到的,有一些方法可以在网络搜刮时克服验证码。在介绍这些方法之前,让我们先来了解一下在搜刮之前需要注意的事项。

向目标网站发送过多请求

首先,你必须确保不允许网络搜刮/爬虫在短时间内发送过多请求。大多数网站都在其条款和条件页面中提到了网站允许的请求数量。请务必在开始搜索前阅读这些条款。

HTTP 标头

当您连接到一个网站时,您会向连接网站发送有关您设备的信息。他们可能会使用这些信息根据你的设备规格定制内容,并进行度量跟踪。因此,当他们发现请求来自同一设备时,你之后发送的任何请求都会被阻止。

因此,如果您自行开发了网络搜刮器/爬虫,您就可以为您的搜刮器发出的每个请求更改页眉信息。这样,在目标网站看来,它就会接收到来自不同设备的多个请求。阅读此处 ,了解有关 HTTP 标头的更多信息。

IP 地址

您应该注意的另一个事实是,目标网站没有将您的 IP 地址列入黑名单。如果您使用搜刮器/爬虫发送过多请求,他们很可能会将您的 IP 地址列入黑名单。 

为了解决上述问题,您可以使用代理服务器,因为它可以屏蔽您的 IP 地址。 

使用池旋转 HTTP 标头和代理(下一节将详细介绍)可确保多个设备从不同位置访问网站。因此,您应该能够继续进行刮擦,而不会受到验证码的干扰。尽管如此,您必须确保不会以任何方式损害网站的性能。

不过,您需要注意的是,代理服务器无法帮助您克服注册、密码更改、结账等表单中的验证码。它只能帮你克服网站因僵尸行为而触发的捕获。要避免此类表单中的验证码,我们将在下一节中介绍验证码解决程序。

其他类型的验证码

除了上述关键因素外,在使用机器人进行网络搜刮时,您还需要了解以下验证码:

蜜罐--蜜罐是一种包含在 HTML 表单字段或链接中的验证码,但其可见性通过 CSS 隐藏。因此,在让你的机器人刮取内容之前,请确保元素的 CSS 属性是可见的。
单词/匹配验证码--这就是数学方程式中的验证码,例如解 "3+7"。也可以是文字谜题。
社交媒体登录--例如,有些网站要求使用 Facebook 账户登录。不过,这些网站并不受欢迎,因为大多数管理员都知道,人们不愿意用自己的社交媒体账户登录。
时间跟踪--这些验证码可监控您执行特定操作(如填写表格)的速度,以确定是人类还是机器人。

如何绕过验证码进行网络抓取

轮流使用代理服务器和高质量 IP 地址

如上一节所述,每次向目标网站发送请求时都需要轮换代理。这也是避免验证码在刮擦时触发的一种方法。在这种情况下,您需要使用干净的住宅 IP 代理
当您轮换使用代理服务器时,目标网站将很难确定您的IP 地址。这是因为,在每次请求中,出现的都是代理的 IP 地址,而不是您自己的 IP 地址。

旋转用户代理

由于您将使用刮板进行网络刮擦,因此需要将用户代理伪装成常用的网络浏览器或受支持的机器人,如网站识别的搜索引擎机器人。

仅仅更改用户代理是不够的,你需要有一个用户代理字符串列表,然后对它们进行轮换。这种轮换会导致目标网站将你视为不同的设备,而实际上是一台设备在发送所有请求。

作为这一步的最佳实践,最好保存一个真实用户代理数据库。此外,如果不再需要 cookie,请将其删除。

验证码解决服务

更直接、技术含量更低的验证码解决方法是使用验证码解决服务。他们使用人工智能(AI)、机器学习(MI)和其他技术来解决验证码问题。

目前行业内一些著名的验证码解码器有CapsolverAnti-CAPTCHA

如果您让刮擦器每隔一瞬间就直接访问一个 URL,那么接收网站就会产生怀疑。因此,目标网站会触发验证码。

为了避免这种情况,可以设置引用头,使其看起来是从其他页面引用的。这样可以降低被检测为机器人的可能性。或者,也可以让机器人在访问所需的链接之前先访问其他页面。

避免蜜罐

蜜罐是网页上的隐藏元素,安全专家用它来诱捕机器人或入侵者。虽然浏览器会显示其 HTML,但其 CSS 属性被设置为隐藏。然而,与人类不同的是,蜜罐代码会在机器人抓取数据时被它们看到。因此,它们落入了蜜罐设置的陷阱。

因此,在开始搜刮之前,你必须确保检查网页中所有元素的 CSS 属性是否被隐藏或不可见。只有在确定所有元素都没有被隐藏时,才能设置机器人进行刮擦。

常见问题

1. What does bypassing CAPTCHAs for Web Scraping mean?
绕过 CAPTCHAs(验证码)简单地说就是在从众多网站中抓取数据时移除拦截器的过程。因为验证码的设计目的是验证网络流量是否是有机的。
2. What is ReCaptcha?
ReCaptcha 可防止您的网站受到垃圾邮件和恶意僵尸流量的侵害。它能生成互动谜题,以区分有机流量和僵尸流量。
3. How will a proxy help users in bypassing Captchas?
当您从机器人或任何刮擦解决方案背靠背发送网络请求时,验证码可能会很容易地识别出流量来自垃圾机器人。因此,使用来自代理的代理地址会让你看起来更像实时流量。

结论

这篇文章将让你全面了解如何在刮网时避开验证码。避免验证码可能是一个复杂的过程。不过,通过使用本文讨论的特定技术,您可以开发出能够避开验证码的机器人。

我们希望您能利用本文讨论的所有技巧。