当像 Cloudflare 这样的反机器人检测并阻止您的抓取程序时,Web 抓取中的麻烦就开始了。避免这种压力的最佳方法之一是使用无头浏览器技术,例如在抓取时使用 Puppeteer 绕过
Cloudflare。借助 Puppeteer,可以使用一些技巧来逃避 Cloudflare 机器人检测,让您的网络爬虫顺利运行。
在本文中,我们将讨论如何使用 Puppeteer 绕过 Cloudflare。让我们开始吧!
Puppeteer是一个 Node.js 库,它提供了一个高级 API 来通过 DevTools Protocol 控制无头 Chrome 或 Chromium。此 API 远程控制无头 Chromium 实例,并将它们用作访问浏览器 (chrome) 呈现网页及其 JavaScript 元素的能力的门户。Puppeteer 默认无头运行,但您也可以将其配置为以非无头模式(完整的 Chrome 或 Chromium)运行。
当 Puppeteer 网络抓取工具访问网站时,它首先创建一个浏览器实例。这是为了在导航到要抓取的所需数据位置之前呈现网站内容。Cloudflare 的机器人检测可以将此操作识别为由机器人执行,尤其是在无头模式下执行时。但是在完整的 Chrome 模式下运行 Puppeteer (headless = false) 可以授予您访问受 Cloudflare 保护的网站的权限。
但是,Cloudflare 是一个复杂的解决方案,具有经常更新的 Web 应用程序防火墙 (WAF)。现在,无论是否无头,您都可能仍然被阻止。使用 Puppeteer 绕过 Cloudflare 的关键是了解 Cloudflare 如何检测机器人。
什么是 Cloudflare?
Cloudflare 的机器人保护系统使网站能够识别不需要的流量。但是,某些有用的机器人(如 Google 和其他搜索引擎)被授予访问权限以允许进行网络抓取和排名。这是可能的,因为 Cloudflare 为这些机器人维护了一个安全列表,不幸的是,Puppeteer 不在这个列表中。因此,您的无头浏览器抓取工作可能会在受 Cloudflare 保护的网站上遇到障碍。
Cloudflare 如何检测机器人
Cloudflare 使用各种技术来防范恶意威胁和数据入侵。其中一些包括检测僵尸网络、IP 地址信誉、TLS 指纹识别、CAPTCHA、Canvas 指纹识别、HTTP 请求标头、事件跟踪等。要了解更多信息,请查看我们关于如何绕过 Cloudflare 的指南。
Cloudflare 是否检测到 Puppeteer?
是的,Cloudflare Bot Management 能够检测 Puppeteer。当 Puppeteer 网络抓取工具访问受 Cloudflare 保护的网站时,它会使用上述方法进行安全检查。这些检查发生在称为 Cloudflare 等候室的间隙页面中。如果网络抓取工具成功清除了这些挑战,它就会被授予访问权限。否则,它被阻止。
Puppeteer 可以绕过 Cloudflare 吗?
尽管 Puppeteer 可以绕过一些 Cloudflare 的机器人检测技术,因为它与 Chrome 相似,但它不会通过一些更详细的机器人检测检查。headless chrome 的默认navigation.webdriver
属性允许 Cloudflare 将其检测为自动浏览器。虽然一些较小的配置可以缓解这种情况,但 Puppeteer 仍然会在其浏览器指纹中留下细微的痕迹,使其可以被检测为非人类。
要查明 Puppeteer 是否绕过 Cloudflare,让我们尝试抓取受 Cloudflare 保护的网站CoinTracker 。您可以通过在实际浏览器中访问该网站并检查网络选项卡来确认这一点。
相关