如何更有效地避免验证码

作为机器人开发人员,您必须对Captcha保持警惕,因为它们会阻止您构建可运行的机器人。是否可以通过编程预防和解决它们?是的,继续阅读本文以发现绕过验证码的最佳方法。

对于普通的互联网用户,当他们的互联网冲浪受到干扰并且他们所访问的网站要求他们通过执行某些操作来证明自己不是机器人时,他们不知道发生了什么,并且在某些情况下会沮丧

但是,作为机器人开发人员,您知道您是引入此技术的原因-这是由于您的机器人采取的行动导致发送过多请求并以自动化方式访问网站。如果普通用户仍然被迫解决Captcha,那么您应该知道您的机器人无法逃脱它。您或者学习如何防止它们出现,或者学习如何解决它们的出现。

作为机器人开发人员,我已经意识到最好一开始就避免使用它们,因为其中有些可能很难通过自动化方式解决。我在手动解决一些验证码方面遇到了问题-您认为我可以通过编程轻松地完成此操作吗?

即使是拥有强大团队支持的最好的反Captcha系统,也仍然很难以编程方式解决一些Captcha 他们雇用人员来完成并支付费用。因此,我们的重点将放在防止它们出现在我们的机器人上。


什么是验证码?

Captcha是全自动公共图灵测试的缩写,可以告诉计算机和人类。有时全写为CAPTCHA。这是一种挑战响应测试,旨在确定互联网流量背后的用户是人还是机器(计算机)。

这项技术被引入到互联网领域,以响应自动化机器人的行动。这些机器人可以是任何形式的——web scraper、爬虫、蜘蛛、购买机器人、批量帐户创建机器人,以及任何其他形式的向web服务器发送HTTP请求的软件,而无需使用web服务器管理员提供的官方公共API。

这些机器人以向网站发送过多请求而闻名,这可能使它们崩溃或增加其运行成本,而无助于他们访问的网站。但是,这不是与机器人相关的唯一问题。当期望用户在有限的时间内执行某些任务,并且在购买限量版运动鞋,门票和其他高需求物品的竞争激烈时,它们可以用于获得不当优势。僵尸程序还会未经网站所有者的许可从网页收集数据。由于这些因素以及更多因素,网站采用了Captchas等技术来阻止机器人访问。


网站用来防止Bot访问内容的验证码类型

当人们听到有关验证码的信息时,他们将其仅视为“我不是机器人”复选框。但是,网站会使用大量的验证码来确定请求的真实来源。了解它们很重要,这样您就不会遇到验证码问题,而会转向其他地方。我将讨论每种验证码类型。

  • 图像验证码

Image验证码是您在互联网上遇到的最受欢迎的验证码。它要求您识别图像中的对象。Google的reCaptcha提供了最有效的验证码服务之一-但是,这甚至会使普通用户感到沮丧。Image Captcha将其中的字母易于使用。

  • 单词/数学验证码

这种验证码将要求您解决一些单词或数学问题。验证码就是一个例子,要求您解决“ 3 + 5”。这会以多种形式出现。

  • Honeypots

这些都不容易发现。这是因为它们是使用真实用户的CSS属性隐藏的,但是由于漫游器下载了全部内容,因此他们可以看到它们。当机器人与honeypot进行交互时,honeypot可能是表单或链接中的隐藏字段,因此不可避免地会报告自己是机器人。您将必须考虑CSS属性,并确保在可见性处于关闭或隐藏状态时不要与任何元素交互。

  • 隐形验证码

无法看到隐藏的验证码。它们在后台工作并跟踪行为,以确定是否从漫游器发起了来自某些IP的请求。它们是有效的,但是其有效性仍然值得怀疑,因为经验丰富的开发人员可以开发可以模仿常规用户的机器人。

  • 社交媒体登录

这些类型的验证码要求您登录社交媒体帐户。这些不受欢迎,因为Web管理员意识到Internet用户会犹豫不决。

  • 时间跟踪

这种Captcha的工作方式很简单,它们只是跟踪您执行某些动作(例如填写表格)的速度,并且可以根据机器人的运行速度判断机器人是否刚刚填写了表格。


我的机器人正在接收验证码吗?

如果您怀疑您的机器人是否被验证码打断,则需要查看Web服务器返回的响应。里面有验证码吗?

有时,您甚至不会在代码中重新设置验证码;当您仍然可以使用浏览器访问同一页面时,它可能只是一个持续的超时错误。也可能是您会收到某种形式的50x错误。


避免验证码的技巧


在线填写表单,发送太多典型的机器人请求时,您最有可能遇到验证码,或者它们只是在您根本不知道触发它们的原因的情况下发生。如我前面所述,避免它们比解决它们更好。请遵循以下技术,以避免触发验证码。


使用旋转代理

避免触发验证码的第一种方法是使用旋转代理。轮换代理服务器使网站很难隐藏隐藏的真实IP地址并使用其他IP地址,并在一定时间间隔或每次请求后轮换分配给您请求的IP,从而在您发送的请求中识别可识别的IP足迹。

您可以从LuminatiSmartproxyStormproxiesSoax购买旋转代理

为了安全起见,您可以使用Proxy API,也称为网络抓取API。

代理API不仅可以轮换IP,还可以解决验证码(如果出现的话)。

Scraping API,ScrapingBee和Crawlera是市场上一些最好的代理API。


旋转用户代理并记下其他标题

您可能会想知道,网站允许一些他们认为是不错的机器人访问它们,例如搜索引擎蜘蛛。您的漫游器不是受支持的漫游器之一,因此,您必须通过将用户代理伪装成流行的Web浏览器或受支持的漫游器的用户代理来隐藏真实身份。

仅更改用户代理不会一直有效;您将需要几个用户代理字符串并对其进行轮换。检查浏览器发送的标头并将其也发送到您的漫游器中也很重要。


随机化请求之间的时间

僵尸程序具有预测性,重复性和超快性-网站可以将其用于您的僵尸程序。为了保护您的漫游器免于触发验证码,我建议您随机分配两次请求之间的时间间隔。

最好在请求之间设置延迟,以免网站被请求淹没–这样做不仅是为了避免Captcha,而且要对网站保持礼貌并避免造成损害。


避免Honeypots

如前所述,某些不可见元素可以引入网页中。这些元素对使用浏览器的用户不可见,但对漫游器可见。通过与这些元素进行交互,您的机器人就可以直接引起人们的注意。

重要的是,检查要与之交互的所有元素的CSS属性,并确保未关闭可见性并且显示未设置为隐藏。仅当这两个属性为您提供绿灯时,您才可以继续进行操作并与元素进行交互。幸运的是,并非所有网站都使用此功能,但是对于使用该功能的网站,您必须要小心。


渲染所有JS代码

大量的Web爬虫没有提供JavaScript,它们只是发送请求,完整下载页面,解析出所需的数据,然后循环继续。好了,即使您能够在不渲染JavaScript的情况下访问所有必需的数据,您仍将需要在某些网页上渲染JS代码,以避免触发Captcha。

如果您遇到的网站会在某些JS代码呈现之前触发Captcha,则您需要找出要呈现的JS代码并进行呈现。这可能是很多工作。因此,我建议您使用诸如Selenium之类的浏览器自动化工具。

  • Scrapy、Beautifulsoup网页抓取工具
  • 如何使用Javascript从网站抓取HTML?

我必须承认,我确实使用直接链接,直到我确定某个网站可以利用它们来检测机器人。Web管理员意识到人们不仅访问他们的页面,还访问其他页面。它们是从其他页面引用的。如果有大量直接链接请求传入,则网站将处于防御状态,并触发验证码。建议您访问要在其上访问的链接的其他页面,或者使用引荐来源标头欺骗网站,以为您被引荐而不是仅发送直接链接请求。


如何绕过和解决验证码

有时,无论您做什么,都无法避免。例如,某些注册页面和其他填写表单页面的“提交”按钮前都有Captcha,并且您必须先解决它们才能提交表单。

在这种情况下,您无法避免-您必须解决它们。最有可能的是,您不想手动解决它们,而是希望它自动完成。那你怎么办呢?您有两种选择-使用Proxy API和Captcha解决服务。


使用代理API

上面我已经说过,像Scraping API和ScrapingBee之类的东西可以帮助您避免Captcha –这是因为它们还可以在不知不觉中在后台解决它们。

如果您知道自己正在处理必须遇到Captcha的网站,则可以继续使用Scraping API或ScrapingBee,因为它们可以帮助您自动解决Captcha它们以成功的请求定价,并且也为您提供代理。


使用验证码解决服务

解决验证码的另一种方法是利用验证码解决服务。这些服务利用人工智能,机器学习和许多其他技术来解决验证码。我会建议您使用付费的验证码服务,因为它们更有效。一些最好的验证码解决方案服务包括2Captcha,DeathbyCaptcha和Anti-Captcha。


奖励:针对浏览器用户的验证码求解

即使没有机器人,您也很有可能在使用浏览器浏览网页时体验到Captcha。当您刷新或快速执行任务时,会发生这种情况。有时,您将需要提交很多表格,并且每份表格都附有验证码。如果您遇到这种情况,那么我将建议您使用浏览器扩展程序来自动解决验证码问题。

AntiCaptcha插件

AntiCaptcha插件由Anti-Captcha(最好的Captcha解决方案服务提供商之一)提供。此浏览器扩展程序可用于Chrome,Firefox和许多其他浏览器。

使用此扩展程序,您可以使用多种类型的验证码,包括ReCaptcha 2.0和3,FunCaptcha,图像Captcha,hCaptcha和Geetest等,此扩展程序已经过测试,并且已证明可在许多网站上正常工作,包括解决媒体,FreeBitco.in,聊天,速卖通,甚至EA FIFA。尽管此扩展程序效果很好,但已付费。


Rumola

Rumola还是可以用来解决验证码的浏览器扩展之一。使用Captcha,您无需再担心Captcha,因为当您加载带有Captcha的任何页面时,它会自动帮助您解决Captcha。此浏览器扩展程序仅可用作Chrome扩展程序。对于非Chrome用户,您可以使用他们的书签。Rumola已开发为甚至可以用于视力障碍的互联网用户。


结论

毫无疑问,在开发访问Web服务不允许访问的Web服务的自动化机器人时,您可以忽略Captcha,因为您很可能会遇到它们。

有趣的是,通过正确的思维方式以及将一些技术集成到您的机器人开发中,您可以避免触发Captcha –这些技术已在上面进行了讨论。但是,如果您必须解决Captcha的情况,则可以使用Captcha解决服务或代理API来解决它们。


  • Web Scraping API可帮助抓取和提取数据
  • 刮Google时防止禁令和验证码的代理
  • 如何使用Python构建简单的Web抓取工具
  • 如何抓取网站,永不被阻止