🥳加入Scrapeless 社区申请免费试用以访问我们强大的网页抓取工具包!
返回博客

如何在网页抓取中绕过 reCAPTCHA

Michael Lee
Michael Lee

Expert Network Defense Engineer

16-Aug-2024

引言

CAPTCHA的目的是通过给计算机复杂的任务来区分真实网站用户和自动程序,您必须先完成这些任务,然后才能访问网站上的实际内容。

那么我们可以做些什么来解决这个问题呢?这正是本文将要讨论的内容:如何通过编程绕过CAPTCHA,重点是reCAPTCHA。

reCAPTCHA:它是什么?

2007年,谷歌发布了reCAPTCHA,这是一项免费的CAPTCHA服务,旨在为网站所有者提供将基于SaaS的CAPTCHA API整合到其网站的简单方法。最初,它也旨在帮助数字化报纸和图书馆档案。通过向用户提供扫描的信息,它众包了只能以纸质形式获取的文件的转换。谷歌在6年前停止了对版本1的支持,所以让我们看看版本2和版本3。

reCAPTCHA v2

当reCAPTCHA v2在2013年发布时,引入了行为分析。这意味着在reCAPTCHA框显示之前,默认只显示CAPTCHA复选框,reCAPTCHA会跟踪用户的行为和浏览器(即输入事件,如鼠标和键盘)。在用户选择复选框后,reCAPTCHA将使用指纹来决定用户是否需要完成真实的CAPTCHA挑战,或者可以立即通过。此外,还有一种“隐形”CAPTCHA解决方案,可以无缝融入您网站的操作中。

reCAPTCHA v3

在2018年,谷歌进一步改进了reCAPTCHA,并发布了一种实现方法,该方法计算一个机器人得分——这是请求来自人类而非自动脚本的可能性的衡量,而不再需要任何用户介入。

使用Web解锁器/Captcha求解器解决reCAPTCHA

如今,CAPTCHA解决技术利用机器学习和人工智能来检测并成功绕过CAPTCHA障碍,这得益于网页抓取的日益普及。快速搜索“Web解锁器/Captcha求解器”将出现大量提供类似功能的网站和服务,Scrapeless就是其中一个选项。

对于不断出现的网页抓取阻塞和CAPTCHA感到厌烦?

介绍Scrapeless - 终极一体化网页抓取解决方案!

利用我们强大的工具套件,释放数据提取的全部潜力:

最佳网页抓取解决方案

自动解决高级CAPTCHA,保持您的抓取毫不间断。

体验不同 - 免费试用!

在网页抓取时最大程度避免reCAPTCHA的策略

网页抓取者以几种不同的方式避免reCAPTCHA。以下是最可靠的几种方法:

注意隐藏的陷阱

蜜罐是对机器人有效但对人类不可探测的陷阱。这些陷阱可能是整个网页、表单或数据字段,通常会在机器人执行网络爬虫等任务时与之互动。

绝大多数网站使用JavaScript来隐藏蜜罐陷阱,例如通过display:none。由于机器人通常会检查网站的某些部分,因此这些隐藏的组件被看到和互动的概率更大。

请遵循以下实际措施,以避免陷入蜜罐陷阱:

  • 审查服务条款-在抓取网站之前,请确保您查看该网站的使用条款。检查robots.txt文件和其他机器人参与指南,以获取可以爬取的页面列表。然后,为了避免干扰其他用户的活动,请确保在非高峰时段进行网络爬虫,并延长请求间隔。
  • 避免与隐藏组件互动-蜜罐可能导致隐藏的锚链接,因此在爬取链接时应避免这些链接。对网页元素进行彻底检查,并使用程序保护措施,可以帮助您避免与多余的隐藏网站组件打交道。
  • 避免使用公共网络-在共享的公共网络上,服务器可能会设置蜜罐。这是因为公共Wi-Fi网络的加密通常比私人网络差。由于这种脆弱性,反机器人软件能够监控所有网络流量,从而通过比较机器人的浏览行为和真实用户的行为来识别自动化爬虫活动。

真正的浏览器环境

没有什么比将HTTP客户端用户代理设置为默认值更能迅速暴露您作为爬虫的身份。

大多数反机器人软件最初通过请求头中寻找机器人参数。这是他们最早的安全措施之一。在更复杂的情况下,他们通过与已知机器人的请求头进行比较来验证请求头的真实性。如果请求头在任何方面与真实浏览器的不同,将触发CAPTCHA以阻止您的请求。

查看以下示例头部:

language Copy
"User-Agent": [
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
HeadlessChrome/126.0.0.0 Safari/537.36"
    ]

将下面的实际Chrome用户代理与上图进行比较。您会看到Chrome被用作代替HeadlessChrome标志,这看起来像是机器人:

language Copy
"User-Agent": [
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/126.0.0.0 Safari/537.36"
    ]

将基于库的头替换为真实浏览器的头,以显得更真实,减少被列入黑名单的可能性。甚至浏览器的整个请求头也可以被复制并使用在您的爬虫中。

让您的爬虫看起来像真实用户

避免被检测的关键是模仿人类行为,并避免机器人的倾向。为了区分人类和机器人,反机器人方法会监控用户行为,例如鼠标移动、悬停技巧、滚动方向和点击位置。

以下技术可用于模仿实际用户行为:

  • 在滚动等重复任务中加入随机性;
  • 通过点击选择显示的组件;
  • 向表单字段输入数据;
  • 在分隔交互时使用任意时间间隔;
  • 在请求未能处理后,使用指数退避来延迟请求。

总结

当你只是想完成一个短暂的网页抓取时,验证码确实会造成很多麻烦。然而,有几种方法可以在抓取环境中解决这些问题,别放弃。

我们建议使用 Scrapeless,这是一款完整的网页抓取工具,能够实现这些绕过技术以及更多功能,使你的抓取工作更轻松。只需一个 API 请求。今天就加入我们,试用免费版。

在Scrapeless,我们仅访问公开数据,同时严格遵守适用的法律、法规和网站隐私政策。 本博客内容仅用于演示目的,不涉及任何非法或侵权行为。 对于使用本博客或第三方链接的信息,我们不做任何保证,也不承担任何责任。 在参与任何抓取活动之前,请咨询您的法律顾问并查看目标网站的服务条款或获取必要的权限。

最受欢迎的文章

目录