如何绕过Cloudflare机器人识别-网页抓取必会遇到的问题

今天来分享我在开发自动化点击程序过程中遇到的一个问题:如何绕过Cloudflare的Bot识别?

相信如果你做过自动化程序点击、网页数据抓取,也会跟我有一样的问题和感受。

当我们打开某些网页的时候,是否经常会遇到这样的人机验证页面

像这样:

https://www.perplexity.ai

这样:

https://gitlab.com/users/sign_in

还有这样:

https://www.autohotkey.com

正常情况下,我们只需要勾选☑️ Verify you are human 就可以通过了。

这里我只是拿这些网站举个例子,这样的网站还有很多,但是他们都有一个共同的问题。

那就是这些网站前端的前面都接入了一层Cloudflare来做防护

现代化的网站大部分都会在它们前面接入一层Cloudflare的服务,Cloudflare就可以帮助网站来实现机器人识别、模拟点击识别、反爬虫等自动化操作,所以如果你用Playwright、 Selenium 等自动化框架来开发自动化模拟点击的时候,就会遇到这个噩梦。

我曾经尝试过多种办法,来尝试绕过Cloudflare,直接进入网站的主页,在网上搜索了大量的教程和资料,包括热度不错的Github开源项目和有名的自动化点击框架。

比如:

Cloudscrapy(https://github.com/VeNoMouS/cloudscraper)

SeleniumBase(https://github.com/seleniumbase/SeleniumBase)

Nodriver(https://github.com/ultrafunkamsterdam/nodriver)

诸如此类的框架和项目基本上都尝试过一遍:

https://scrapfly.io/blog/posts/how-to-bypass-cloudflare-anti-scraping

但是都没有解决的我的问题。

直到我找到了一种解决方案,也许你会以为我用了一种特别高级的技术来解决了这个问题,其实不是,而只是利用了一个服务,通过这个调用这个服务来解决了我问题。

就是BrightData(https://brightdata.com/)

所以接下来我们可以BrightData的服务直接来尝试下用它来绕过Cloudflare的效果,我们可以注册一个账号。
注册完账号,来到主页,可以看到它有很多款产品,提供了多种网络访问和数据抓取服务的产品,

而我们这次使用的是Browser API这款产品 ,它可以启动一款BrightData内置的远程浏览器,来帮我们绕过Cloudflare。

点击Browser API,可以看到它描述,可以简化动态抓取操作,在完全托管的浏览器上运行和扩展 Puppeteer、Selenium 和 Playwright 脚本,并内置 CAPTCHA 验证码自动代理管理功能

是的, 这正是我们要的功能。

然后点击Start free trial,进入到后台界面。

我们可以看到官方赠送了一些免费的credits给我们测试,有7天的有效期。

然后点击左边侧边栏,在弹出的栏目中点击Create an API。

选择Browser API

然后继续下一步,这边默认会勾选CAPTCHA Solver ,其他可以不用管。

然后点击Add API。

创建好API后,界面上就出现了访问地址的信息,

对于利用Puppeteer或者Playwright框架的,可以用websocket协议连接远程浏览器

而对于用Selenium框架的,可以用http协议连接远程浏览器。 然后我们进入打开playground体验它的功能,

这里主要分为Playground和API Exampels两个Tab项,Playground主要是两个现成的场景,体验自动化的过程。

而API Examples提供了5种基本的场景代码,可以供我们直接复用。

我们可以先体验下Playground的场景,主要是旅行网站和电商网站两种模式,可以然后点击右边的Run Request就可以运行直观的效果功能。

接下来我们使用API Examples中的Captcha Handling功能,这个就是解决验证的问题,可以绕过Cloudflare。

然后我们可以复制这个代码,到自己的编程环境中,我这里用的python+Playwright,可以在右上角这里选择,

然后复制代码到自己的编程工具中,

因为这里调用的brightdata的远程浏览器,所以本地是看不到浏览器界面实际的效果的,所以为了验证确实绕过了Cloudflare的验证,我在代码中添加了2张截图,分别是解决验证码前后的两张截图对比,这样就能判断是否真的做到了绕过Cloudflare的效果。

然后我对最初测试的3个网站进行了分别测试, 我在命令行启动python程序,

先来测试https://gitlab.com/users/sign_in

可以看到程序在验证前后分别进行了截图,当收到solve_finished的结果时,代表已经绕过Cloudflare成功了

然后我们再来看截图,可以看到绕过前后的截图的状态是不同的

然后来测试https://www.perplexity.ai/,我惊奇的发现,运行过程中命令行中提示:

No captcha detected (may have bypassed already)

而且验证前后的两张截图居然是一样的,

验证前:

验证后:

说明利用brightdata的服务居然直接跳过了cloudflare的验证,有趣。

最后来测试https://www.autohotkey.com/ , 验证前后的截图是不同的,跟测试gitlab的效果是一样的。

绕过前:

绕过后:

OK! 所以到这里,我们已经利用BrightData的服务成功绕过了上面的3个网站中的Cloudflare服务。如果你也好奇这个过程和结果,可以跟我一样来尝试一下。

声明:来自程序员阿灏,仅代表创作者观点。链接:http://eyangzhen.com/4836.html

程序员阿灏的头像程序员阿灏

相关推荐

关注我们
关注我们
购买服务
购买服务
返回顶部