FlareSolverr 使用指南:抓取和绕过 Cloudflare
在本文中,我将向您展示如何准确设置和使用 FlareSolverr 来抓取数据而不被阻止。让我们深入了解一下!
什么是 FlareSolverr?
FlareSolverr 是一款开源工具,可帮助绕过 Cloudflare 的安全挑战。网站使用 Cloudflare 来防止僵尸程序窃取数据,但 FlareSolverr 可以通过充当真正的浏览器来绕过这些保护措施。它能像人类一样加载网页,通过 Cloudflare 的验证检查。
FlareSolverr 如何工作
FlareSolverr 是一个很适合用于从受 Cloudflare 保护的网站抓取数据的解决方案。
- 充当代理: FlareSolverr 可作为代理服务器运行,拦截您的请求并将其转发到目标网站。
- 模拟真实浏览器 它会启动一个无头浏览器会话来加载网页并解决 Cloudflare 挑战。
- 返回抓取的数据: 挑战解决后,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 是否正在运行,请打开浏览器并访问
如果一切设置正确,您将看到 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 等替代工具。祝你刮擦愉快!

