在使用 Python 编写机器人代码时,您是否正在寻找绕过 Cloudflare 检测的方法? 那么你在正确的页面上。 下面的文章提供了有关如何使用 Python 和 Selenium 绕过 Cloudflare 的指南。
网络机器人,包括 刮板机, 这些年来取得了很大进步。 让我们面对现实吧; 网站也变得更加智能 检测机器人流量. 让机器人开发人员汗流浃背的游戏规则改变者之一是 Cloudflare 反机器人系统.
它充当 Web 服务器和客户端软件之间的中间件或代理。 如果您发送 Web 请求,它必须先检查以确保它不是垃圾邮件且合法,然后才能允许它传递到您的目标网站。
普通 Internet 用户会遇到一点延迟,并得到“在访问之前检查您的浏览器……”。 屏幕上的消息。 但这最终会过去。 但是,如果您使用的是机器人,则很可能不允许您访问。 一些开发人员认为使用像 Selenium 这样的浏览器自动化程序也会为他们带来魔力。
不幸的是,Cloudflare 也是为检测此类问题而构建的。 那么你是做什么的,你是怎么做的 绕过 Cloudflare 检测 作为使用 Python 和 Cloudflare 的机器人开发人员? 在本文中,您将了解如何使用 Python 和 Selenium 绕过 Cloudflare 检测。
硒概述
Selenium 网络驱动程序是一个浏览器自动化程序。 你用它做什么取决于你。 一些将其用于站点测试,另一些用于机器人和抓取。 它是一种多功能工具,因为您可以在多种流行的编程语言(如 Python、Java 和 NodeJS)中使用它。
它还支持流行的浏览器,例如 Chrome、Firefox、Edge 和 Internet Explorer。 我们这里的重点是它对 Python 的支持。 在 Python 中,Selenium 是依赖于 JavaScript 渲染的网站的主要工具。 Scrapy、Requests 和 Beautifulsoup 之类的工具不适合这种情况。
然而,Selenium 仅对具有基本反垃圾邮件系统的网站有效。 借助代理、清除 cookie、设置随机延迟和其他一些方法,您可以逃避检测和阻止。
但是,当网站受到 Cloudflare 和 Akamai 等反垃圾邮件系统的保护时,Selenium 就变得无效了。 这是因为反垃圾邮件系统使用默认指针来检测默认 Selenium 工具具有的机器人程序。
如何使用 Selenium 和 Python 绕过 Cloudflare
通过正确的步骤,Selenium 可以轻松绕过 Cloudflare。 在开始之前,让我们先看看 Cloudflare 在检测使用 Python 和 Selenium 编码的机器人方面的表现如何。 为此,我们将编写一个简单的机器人来尝试访问 rayobyte.com.
Rayobyte 是受 Cloudflare 保护的代理提供商。 如果您尝试使用浏览器访问它,则在您被授予访问权限之前需要检查您的浏览器。 我们将使用它来测试 Cloudflare 的有效性,然后编写另一个包含绕过它的措施的机器人程序。
第 1 步:安装必要的工具
要使用 Python 编写机器人代码,您需要安装 Python。 对于这个项目,您还需要安装 Selenium。
蟒蛇
对于大多数系统,已经安装了 Python。 但是,安装的版本是 Python 2,这是出于遗留原因使用的。 您需要安装 Python 3 才能使用 Selenium。 参观 Python官方下载页面 将它安装在您的系统上。 它适用于 Windows、macOS 和 Linux。 要验证安装是否成功完成,请在命令提示符下运行以下命令。
“蟒蛇-版本”
硒
Selenium 是一个完整的机器人工具。 它使浏览器自动化,允许您访问页面、单击按钮、滚动,甚至填写表格并执行您可以手动执行的任何操作。 Selenium 是第三方工具。
为了让它工作,您需要安装它,然后下载并放置您想要自动化的浏览器的特定驱动程序在路径中。
对于本指南,我们将使用 Chrome,因为它是目前最流行的浏览器。
要安装 Selenium,请运行
“pip 安装硒”
命令提示符中的命令。 下载完成后,您现在可以访问 Chrome 网络驱动程序的下载页面。 C
检查您拥有的 Chrome 版本,并专门为您的 Chrome 版本下载驱动程序。 如果您下载另一个版本的,它将无法使用。
下载后,将内容解压缩到一个文件夹中。 该文件夹将成为该项目的工作文件夹。
第 2 步:不使用旁路技巧向网站发送请求
我们的目标网站是 rayobyte.com. 我们将编写一个脚本,该脚本将向该网站发送请求并查看我们得到的响应。
下面是代码。 这很简单。 需要更多行代码的实际上是带有绕过 Cloudflare 代码的代码。
在您最喜欢的 Python IDLE 中使用下面的代码。 就我而言,我使用的是 Pycharm,它是目前市场上最好的 IDLE——尽管这是有争议的。 它的主要问题是它是付费的。
from selenium.webdriver import Chrome browser = Chrome() browser.get("https://rayobyte.com")
上面的代码将在您的系统上启动 Chrome 浏览器,并尝试访问 Rayobyte 网站主页。
但是,它不会访问该页面,而是会循环并保留在 Cloudflare 验证页面上。 下面是页面的截图。
如果你仔细检查代码,你会发现我没有关闭它。 这是为了让我看看它是否最终会允许页面加载。 但那永远不会发生。 您应该关闭自动浏览器。
正如您已经看到的,Selenium 不能单独用于绕过 Cloudflare。 如果你想绕过 Cloudflare,你必须使用一些技巧。 下一步将向您展示如何使用相同的 Selenium 和 Python 来绕过 Cloudflare。
第 3 步:使用插件绕过 Cloudflare
从上面可以看出,Cloudflare 将 Selenium 脚本检测为机器人。 在这种情况下,使用代理对您没有帮助。 你需要其他方法。
使用 Selenium 和 python 绕过 Cloudflare 的最佳方法是使用名为 未检测到的 ChromeDriver. 您可以使用
“pip 安装未检测到的 chromedriver”
这个插件只有在你想驱动/自动化 Chrome 时才有效。 目前,没有用于自动化其他浏览器的选项。 如果你安装了这个库,你所要做的就是用这个替换 Selenium 中的默认浏览器类,你就可以开始了。
下面的代码片段向您展示了如何正确使用 Undetected ChromeDriver 来绕过 Cloudflare。
import undetected_chromedriver as uc from selenium.webdriver.support.ui import WebDriverWait driver = uc.Chrome(use_subprocess=True) wait = WebDriverWait(driver, 20) driver.get("https://rayobyte.com")
通过仅使用 undetected-chromedriver 库,您将发现您能够逃避 Cloudflare 的检测。 这将使您能够自动执行您的任务,甚至可以毫无问题地从网络上抓取数据。
绕过 Cloudflare 的代理位置
如果你看一下上面的代码,你会发现整个过程都没有使用代理。 您现在开始怀疑是否需要代理来绕过 Cloudflare。 原因很简单——我们只发送一个请求。 如果您只需要发送几个请求,则不需要使用代理来执行此操作。
但是,如果您将像大多数机器人一样发送许多请求,那么您需要使用代理。
这是因为,与大多数反机器人系统一样,IP 跟踪仍然是 Cloudflare 服务的主要部分之一。 当它从同一个 IP 收到太多请求时,是否有机器人足迹都无关紧要; 此类 IP 将被视为可疑 IP,因此将阻止进一步的请求。
我们建议您使用住宅代理来绕过 Cloudflare。 一些最好的代理提供商包括 Bright Data、Smartproxy 和 Soax。 如果您不需要维护会话,使用这些提供商的轮换代理是绕过 Cloudflare 的最佳选择。
常见问题
问:代理可以防止 Cloudflare 阻塞吗?
不,他们没有。 您可能会看到一些代理将自己推销为绕过 Cloudflare 的代理。 实际情况恰恰相反。 代理本身并不能保护您免受 Cloudflare 的封锁。 您需要使用可以模仿普通用户浏览器的工具,这就是使用未检测到的 ChromeDriver 的用武之地。
当您需要通过 Cloudflare 发送许多请求时,需要使用代理,而不使用代理可能会触发其 IP 跟踪和阻止系统。 在许多情况下都需要代理,但它们并不是您绕过 Cloudflare 所需的唯一工具。
问:Cloudflare 在防止机器人程序方面的效果如何?
如果您的目标网站有 Cloudflare 保护它,那么您真的需要担心。 这是因为 Cloudflare 有一些有趣的数字,即使不试图绕过它们也会吓到你。
根据可用数据,受 Cloudflare 保护的网站在设置 Cloudflare 之前注意到请求减少了 65%。 这是 Cloudflare 正在做的一些很棒的工作。 它还有助于网站加载速度更快并使用更少的带宽。 但是,使用正确的技术和工具,您仍然可以绕过它并降低它的效率。
问:绕过 Cloudflare 检测是否合法?
Cloudflare 等反机器人系统可保护网站免受 DDoS 攻击和其他形式的垃圾邮件。 绕过它们并不违法,即使网站将它们配置为保护其系统和数据库。
但是,您在绕过它们之后所做的事情可能会给您带来法律上的麻烦。 如果您只需要通过请求压倒网站来自动化您的任务而不会对网站造成任何伤害,那么您仍然在法律框架内。
我们不是称职的法律顾问,因此,我们建议您向称职的从业者寻求法律建议。 您在此处阅读的任何内容都不应被视为或视为法律建议。
总结
作为机器人开发人员,像 Cloudflare 这样的反机器人系统是您将要面对的噩梦,因为它们会让您感到沮丧。 如果您没有绕过它们的经验,则尤其如此。
作为初学者,您可能认为使用 Selenium 对您来说是一种简单的出路,因为 Selenium 可以自动化浏览器并呈现 JS。
然而,Cloudflare 似乎已经掌握了基于 Selenium 的机器人。 借助本文中描述的未检测到的 ChromeDriver 工具,您应该能够毫无问题地绕过它。