如何使用FlareSolverr抓取Cloudflare站点

如何使用FlareSolverr抓取Cloudflare站点

Cloudflare 是一种流行的网络安全服务,可保护许多网站免受不需要的流量的侵害,例如 DDoS 攻击。其先进的反机器人系统分析传入的请求并使用不断发展的算法来检测和阻止机器人。这就是您的网络抓取工具出现“访问被拒绝”错误的原因。

幸运的是,您将在本文中学习如何 使用 FlareSolverr绕过 Cloudflare 。

什么是 FlareSolverr

FlareSolverr 是一个开源代理服务器,旨在绕过 Cloudflare 的反机器人机制。它模拟可以解决挑战、通过安全检查和呈现网站内容的实际浏览器。

通常,当您访问受 Cloudflare 保护的网站时,它会让您在等候室中解决大量指纹识别挑战、验证码或其他证明您是人类的测试。FlareSolverr 使用Python SeleniumUndetected ChromeDriver自动执行绕过过程 ,以模仿实际的浏览器并像人一样行事。

解决挑战后,HTML 代码和 cookie 返回给客户端,供其他 HTTP 客户端使用,例如 Python Requests。

如何使用 FlareSolverr

FlareSolverr 的安装是独一无二的,因为您可以采用不同的方式进行安装。我们将通过分步说明使其变得简单。

但在此之前,让我们尝试访问一个没有 FlareSolverr 的网站。对于此示例,我们将使用 NowSecure,这是一个测试网站,如果您成功应对挑战,它会显示“您已通过”消息。

接下来,请确保您已安装Python,然后使用以下命令安装 Requests:

pip install requests

现在,让我们导入 Requests 模块,定义我们的目标 URL,并使用该方法向 NowSecurerequests.get()发出请求。GET

import requests

url = "https://nowsecure.nl/"

response = requests.get(url)

您可以通过打印响应状态代码及其 HTML 来验证它是否有效:

print("status_code: " + str(response.status_code)) # prints the response status code
print(response.text) # prints the response content as text

这是你会得到的回应:

status_code: 403

<body class="no-js">
    <div class="main-wrapper" role="main">
    <div class="main-content">
        <noscript>
            <div id="challenge-error-title">
                <div class="h2">
                    <span class="icon-wrapper">
                        <div class="heading-icon warning-icon"></div>
                    </span>
                    <span id="challenge-error-text">
                        Enable JavaScript and cookies to continue
                    </span>
                </div>
            </div>

错误代码403表示请求未经授权,HTML 是 Cloudflare 的挑战页面。简而言之,我们已被发现并被阻止。

幸运的是,我们有 FlareSolverr!接下来我们一起看看吧。

安装 FlareSolverr

设置 FlareSolverr 最流行的方法是通过 Docker 容器,因为 Chromium 浏览器包含在图像中。但是,您也可以为此配置 Prowlarr 和 Jackett。

对于本教程,我们将使用 Docker 容器。

首先,通过从以下链接之一下载安装 Docker:

运行安装包并按照说明进行操作。安装完成后,您可能需要重新启动计算机。

要检查 Docker 是否安装正确,请在终端中输入以下命令提示符:

docker 

你应该得到类似这样的东西:

small_screenshot_051116faf0

否则,如果安装不正确,您将收到一条错误消息。

类似文章