FlareSolverr 指南

FlareSolverr 使用指南:抓取和绕过 Cloudflare

在本文中,我将向您展示如何准确设置和使用 FlareSolverr 来抓取数据而不被阻止。让我们深入了解一下!

什么是 FlareSolverr?

FlareSolverr 是一款开源工具,可帮助绕过 Cloudflare 的安全挑战。网站使用 Cloudflare 来防止僵尸程序窃取数据,但 FlareSolverr 可以通过充当真正的浏览器来绕过这些保护措施。它能像人类一样加载网页,通过 Cloudflare 的验证检查。

FlareSolverr 如何工作

FlareSolverr 是一个很适合用于从受 Cloudflare 保护的网站抓取数据的解决方案。

  1. 充当代理: FlareSolverr 可作为代理服务器运行,拦截您的请求并将其转发到目标网站。
  2. 模拟真实浏览器 它会启动一个无头浏览器会话来加载网页并解决 Cloudflare 挑战。
  3. 返回抓取的数据: 挑战解决后,FlareSolverr 会发回页面内容,以便您提取所需的数据。

如何安装和设置 FlareSolverr

建议使用 Docker 安装 FlareSolverr。Docker 可以帮助将所有依赖项打包到一个容器中,从而使安装和使用更加方便。

安装 Docker

如果尚未安装 Docker,请从官方网站下载并安装: https://www.docker.com/get-started

安装好 Docker 之后,就可以继续配置 FlareSolverr 了。

下载并运行 FlareSolverr

在终端中运行以下命令,下载最新的 FlareSolverr 映像:

docker pull 21hsmw/flaresolverr:nodriver

下载映像后,运行以下命令创建并启动一个容器:

docker run -d - name flaresolverr -p 8191:8191 21hsmw/flaresolverr:nodriver

该命令执行以下操作

  • -会以分离模式(后台)运行容器。
  • — `name flaresolverr` 用于命名容器。
  • `-p 8191:8191` 用于为 FlareSolverr 设置端口映射。

验证 FlareSolverr 的安装

要检查 FlareSolverr 是否正在运行,请打开浏览器并访问

http://localhost:8191

如果一切设置正确,您将看到 FlareSolverr 正在运行的确认信息。

使用 FlareSolverr 进行数据抓取

FlareSolverr 的工作原理是为您处理请求。您无需直接向网站发送请求,而是将请求发送给 FlareSolverr,由其处理请求并返回响应。

以下介绍如何使用 Python 抓取受 Cloudflare 保护的网站:

第 1 步:安装所需程序库

首先,如果你还没安装 requests 和 BeautifulSoup 库,请先安装:

pip install requests bs4

第 2 步:编写扫描脚本

创建一个新的 Python 文件并添加以下脚本:

import requests
# 定义 FlareSolverr URL
url = "http://localhost:8191/v1"
headers = {"内容类型": "application/json"}
# 定义请求参数
data = {
"cmd": "request.get",
"url": "https://www.example.com",
"最大超时": 60000
}
# 向 FlareSolverr 发送请求
response = requests.post(url, headers=headers, json=data)
# 打印回复详情
print("状态:", response.json().get('status', {}))
print("状态代码:", response.status_code)
print("FlareSolverr信息:", response.json().get(消息, {}))
# 提取页面内容
page_content = response.json().get(解决方案, {}).get(响应, '')
print(页面内容)

这个剧本

  • 向 FlareSolverr 发送请求以绕过 Cloudflare。
  • 等待挑战的解决。
  • 返回页面的 HTML 内容。

解析抓取的数据

获得页面内容后,就可以使用 BeautifulSoup 提取特定数据。

修改脚本以提取信息:

from bs4 import BeautifulSoup
# 解析 HTML 内容
soup = BeautifulSoup(page_content、 html.parser)
# 提取特定数据
title = soup.find('标题').文本
print("页面标题:", title)

这将提取并显示网页标题。

在 FlareSolverr 中使用代理

使用代理服务器可帮助您避免 IP 禁止和地理限制。

为 FlareSolverr 添加代理

您可以通过修改请求有效载荷来使用代理:

import 随机
代理列表 = [
'185.150.85.170',
'45.154.194.148',
'104.244.83.140'
]
proxy_ip = random.choice(proxy_list)
代理服务器 = {
http: f'http://{proxy_ip}',
https: f'https://{proxy_ip}',
}
数据 = {
"cmd": "request.get",
"url": "https://www.example.com",
"最大超时": 60000
}
response = requests.post(url, headers=headers, json=data, proxies=proxies)
print("状态代码:", response.status_code)

该脚本从列表中随机选择一个代理,并将其用于请求。

管理会话和 Cookie

Cloudflare 使用 cookie 跟踪用户会话。FlareSolverr 可以存储并复用 cookie,从而提升抓取效率。

创建会话

创建会话:

data = {
"cmd": "会话.创建"
}
response = requests.post(url, headers=headers, json=data)
session_id = response.json().get(会话, {})
打印("会话 ID:", session_id)

使用会话

一旦有了会话 ID,就可以在后续请求中使用它:

data = {
"cmd": "request.get",
"url": "https://www.example.com",
"最大超时": 60000,
"会话": session_id
}
response = requests.post(url, headers=headers, json=data)
print(response.json())

常见问题的故障排除

以下是 FlareSolverr 的常见问题及修复方法:

FlareSolverr 未运行

检查 Docker 容器是否正在运行:

docker ps

重新启动容器:

docker restart flaresolverr

验证码挑战请求失败

  • 使用 旋转代理.
  • 降低请求频率,模仿真实用户行为。

Cookie 无法工作

确保使用基于会话的刮擦。

FlareSolverr 替代品

如果 FlareSolverr 不适合您的使用情况,请考虑以下替代方案:

  • 剧作家和木偶师 - 自动进行浏览器交互。使用以下工具了解更多有关网络刮擦的信息 Playwright 和 Puppeteer.
  • 网络抓取 API - 使用 网页抓取 API 以实现整个扫描基础架构的完全自动化。
  • 搜索浏览器 — 类似 ScrapingBee 这样的工具提供内置的 Cloudflare 绕过能力。

结论

FlareSolverr 是一款功能强大的工具,可用于绕过 Cloudflare 挑战和搜索受保护的网站。通过使用 Docker、代理和会话管理,你可以高效地收集数据而不会被阻止。如果你需要更强大的刮擦解决方案,可以考虑使用 Playwright、Puppeteer 或 Scraping APIs 等替代工具。祝你刮擦愉快!

类似文章