开始试用
返回

如何通过 Docker、Python & 代理安装和使用 FlareSolverr

用你偏好的 AI 总结本文
试用我们的高级代理

无限量测试我们的优质代理,畅享卓越质量。

  • 移动代理和住宅代理
  • ZIP 级别定位
  • 静态 IP 和轮换 IP
  • 内置质量过滤器
立即试用

Cloudflare 在许多爬虫看到页面之前就将其拦截。当普通的 HTTP 客户端不断收到挑战页面而不是真实内容时,FlareSolverr 是人们会选择的工具之一。

本指南面向那些已经了解 抓取基础知识 但从未搭建过 FlareSolverr。你将了解它的作用、如何安装、如何调用它的 API,以及它会在哪些地方遇到问题。

我们还会涉及代理。FlareSolverr 解决了浏览器挑战,但那个浏览器背后的 IP 仍然非常重要。

使用干净的住宅代理和移动代理提升 FlareSolverr 的成功率。立即试用 NodeMaven,仅需 $3.50,含 750 MB 流量

开始试用

什么是 FlareSolverr?

FlareSolverr 是一款开源代理服务器,专为绕过 Cloudflare 和 DDoS-Guard 防护而打造。它位于你的爬虫与目标网站之间,并对外提供一个看起来很像普通 HTTP 请求的 REST API。

在底层,它通过 Selenium 使用一个反检测驱动来驱动一个真实的 Chrome 浏览器。这一点很重要,因为 Cloudflare 的检查关注的是浏览器行为,而不仅仅是请求头。

典型的使用场景包括:

  • 抓取网站 受 Cloudflare 的托管挑战或 JS 挑战保护
  • 获取一个 clearance cookie,以便之后在轻量级 HTTP 客户端中复用
  • 自动访问那些会拦截 requests 或 httpx 等普通请求库的网站

温馨提示: FlareSolverr 是一个代理层,而不是一个完整的爬虫框架。你仍然需要编写自己的爬取逻辑。FlareSolverr 只是在挑战被解决之后把 HTML 交给你。

FlareSolverr 的工作原理

一旦看到整个流程展开,就会发现它其实很简单直接。

  1. 传入请求。 你的脚本会向 FlareSolverr 的本地 API 发送一个带有目标 URL 的 POST 请求。
  2. 浏览器启动。 FlareSolverr 会打开一个 Chrome 实例(或复用某个活动会话中的实例)。
  3. Cloudflare 挑战。 浏览器导航到该 URL,并在 Cloudflare 运行检查期间等待。
  4. 已签发的 cookie。 挑战通过后,Cloudflare 会在浏览器中设置一个通行 cookie。
  5. 会话处理。 如果你使用了会话,浏览器及其 cookie 会保持存活状态以便复用。
  6. 返回的 HTML。 FlareSolverr 会返回最终的页面 HTML、请求头、cookie 以及它所使用的 user agent。

最后这一点很重要。如果你在另一个 HTTP 客户端中复用这些 cookie,你需要匹配 FlareSolverr 所报告的用户代理(user agent),否则 Cloudflare 会再次抛出挑战。

什么时候应该使用 FlareSolverr?

FlareSolverr 并不适合每一项抓取任务。它比纯 HTTP 客户端更慢也更重,因为它会为每个请求或会话运行一个完整的浏览器。

适合场景不适合
位于 Cloudflare JavaScript 或托管质询(Managed Challenge)之后的网站完全没有任何机器人防护的站点
中低量的抓取任务每分钟需要数千次请求的大批量抓取
获取 Cloudflare 通行 cookie 以便在后续请求中复用受 hCaptcha 或 reCAPTCHA 等高强度 CAPTCHA 保护的网站
偶尔访问受保护的页面或顽固的 API 端点实时或对延迟敏感的工作流程

对于大规模抓取任务,更轻量的方案(轮换代理 再加上一个轻量的 HTTP 客户端,仅在遇到验证挑战的请求时才回退到 FlareSolverr)通常比把所有流量都通过浏览器路由表现更好。

安装 FlareSolverr

Docker 是推荐的安装方式。该镜像已经捆绑了浏览器,因此你可以省去一长串依赖链。

Docker

这会拉取镜像、开放 8191 端口,并在容器崩溃或主机重启时自动重启容器。

Docker Compose

运行 docker compose up -d 到同一个文件夹中来启动它。一旦你添加更多环境变量,就值得使用 Compose,因为它把你的配置保存在一个文件里,而不是一条冗长的 CLI 命令。

验证安装

安装成功后会返回一个包含以下内容的 JSON 对象: 解决方案 字段,其中包含页面 HTML、状态码和 cookie。如果你遇到连接错误,请检查端口 8191 是否确实已映射且未被防火墙拦截。

关键配置选项

可变它的作用
LOG_LEVEL控制日志记录的详细程度。将其设置为 调试 在排查问题时。
PROXY_URL为所有请求设置一个默认代理,除非为单个请求或会话指定了不同的代理。
PROXY_USERNAME / PROXY_PASSWORD定义与在以下位置配置的默认代理搭配使用的身份验证凭据 PROXY_URL.
TZ设置浏览器的时区以及日志中的时间戳。将其与您的代理位置相匹配有助于生成更一致的浏览器指纹。
HEADLESS默认以无头模式运行浏览器。仅在本地调试且需要查看浏览器窗口时才将其禁用。
TEST_URL指定 FlareSolverr 在启动时检查的 URL,以验证浏览器是否正常工作。如果默认 URL 在你所在地区被屏蔽,请更改它。

使用 FlareSolverr API

FlareSolverr 只暴露一个端点, /v1,然后你通过 cmd 请求正文中的字段。

GET 请求

POST 请求

添加一个 postData 字段,格式为 application/x-www-form-urlencoded

Python 示例

响应会返回渲染后的 HTML、Cloudflare 设置的 cookie,以及浏览器使用的确切用户代理字符串。如果你打算用另一个 HTTP 客户端发起后续请求,请把这三者一并保留。

注意: 如果你复用 clearance cookie 时搭配了不匹配的 user agent,Cloudflare 会再次显示验证挑战。务必让该 cookie 与所报告的 user agent 保持配对。

用干净的住宅和移动代理为你的 FlareSolverr 工作流赋能。以 $3.50 试用 NodeMaven,包含 750 MB 流量

开始试用

管理会话

每一个不带会话的请求都会启动一个全新的浏览器,破解挑战,然后再丢弃这个浏览器。这样是行得通的,但如果你反复访问同一个网站,就会既慢又浪费。

会话会在多次请求之间保持同一个浏览器实例处于活动状态,因此你只需解决一次挑战即可反复复用。

创建会话

复用会话

销毁会话

使用完会话后务必将其销毁。空闲的浏览器仍会占用内存,同时运行过多会话会拖慢甚至导致主机崩溃。

将代理与 FlareSolverr 配合使用

FlareSolverr 解决的是挑战中的浏览器一侧。它对该浏览器背后的 IP 信誉毫无作用,而 Cloudflare 在决定是否显示挑战时,会极为看重 IP 信誉。

一个有爬虫流量历史的数据中心 IP 无论浏览器表现得多好都会不断遭到挑战。而一个干净的真实用户 IP 被放行的几率要高得多。

代理类型IP来源最适合
数据中心托管服务商和云数据中心高速度、低成本,且目标网站几乎没有或完全没有反爬虫防护
住宅代理真实的家庭互联网连接具有严格机器人检测的网站、受 Cloudflare 保护的站点,以及大规模网页抓取
ISP(互联网服务提供商) (静态住宅)托管在专用基础设施上的 ISP 分配 IP需要具备住宅级信任度的稳定 IP 地址的长时间运行会话
移动代理移动运营商网络(4G/5G)移动优先的平台、社交媒体自动化,以及信任真实移动用户所共享 IP 的网站

你可以为每个请求或每个会话设置代理,使用 代理 字段, 并在 URL 中包含协议方案:

这时就需要一家代理服务商,比如 NodeMaven 能带来实实在在的差别。NodeMaven 提供一个庞大的 3000万+ 住宅 IP 覆盖 190+ 个国家。每个 IP 都会经过实时质量筛选,帮助确保您在抓取会话中获得干净、高信任度的 IP。

对于 FlareSolverr 用户来说,有两个功能尤其实用。 粘性会话 让你可以将同一个 IP 保持长达 24小时,从而可以轻松地在多个请求之间保持一致的身份标识。你还可以按以下方式定向选择代理: 国家/地区、城市或 邮政编码,让你的流量与预期的访客位置相匹配,从而降低因地理位置而被封锁的概率。

使用高质量代理减少 Cloudflare 验证挑战。只需 $3.50 即可开启你的 NodeMaven 试用,并包含 750 MB 流量。

开始试用

常见的 FlareSolverr 错误及修复方法

错误可能的原因如何修复
超时 / 验证挑战未通过该 maxTimeout 值过低,或者 Cloudflare 挑战的耗时比预期更长。增大 maxTimeout 值。检查主机的 CPU 和内存使用情况,确保 FlareSolverr 有足够的资源。
403 Forbidden代理 IP 的信誉不佳,或者网站启用了更严格的反机器人防护。切换到一个干净的住宅代理,并确认你运行的是最新版本的 FlareSolverr。
503 Service UnavailableFlareSolverr 容器过载、正在重启,或暂时不可用。减少并发会话的数量,并查看容器日志中的错误。
浏览器崩溃主机内存不足,或者同时运行的浏览器实例过多。限制并行会话数量,并为容器分配更多的 RAM 或 CPU 资源。
会话已过期该会话已被删除、已超时,或浏览器进程意外停止。创建一个新会话,并添加重试逻辑,以便从过期会话中自动恢复。
代理身份验证失败代理用户名或密码不正确,或者该请求不支持当前的代理配置。验证你的代理凭据,如有需要,在创建会话时配置代理,而不是在单个请求上配置。

FlareSolverr 的局限性

FlareSolverr 确实非常有用,但我们也有必要坦诚地谈谈它的不足之处。

  • CAPTCHAs:FlareSolverr 无法独立解决 hCaptcha、reCAPTCHA 或 Cloudflare Turnstile 等 CAPTCHA。它能检测到 CAPTCHA 提示,但如果没有外部解算器就无法通过,而内置的解算器支持一直不太可靠。
  • 浏览器指纹识别:高级反机器人系统关注的远不止 Cloudflare 挑战,而且隐身浏览器也不会永远隐形。
  • TLS 指纹识别:有些检测发生在 TLS 握手层面,这超出了 FlareSolverr 所能控制的范围。
  • 内存占用:每个活动会话都是一个真实的 Chrome 进程。十个会话就意味着同时运行十个浏览器。
  • 可扩展性:由于内存开销,FlareSolverr 无法像基于 HTTP 的轻量级爬虫那样进行扩展。

将 FlareSolverr 与可信代理搭配使用,以获得更高的成功率。以 $3.50 开始你的 NodeMaven 试用,包含 750 MB 流量

开始试用

最佳实践

  1. 复用会话 而不是在每一个请求上都去破解挑战。
  2. 轮换 IP 以应对高并发任务,这样就不会有单一地址承担全部流量。
  3. 使用住宅代理 在 Cloudflare 配置严格的网站上,因为 IP 信誉决定了你被验证挑战的频率。
  4. 设置真实的请求头 并让 FlareSolverr 报告的 user agent 传递到后续的所有请求中。
  5. 调优并发数 以匹配主机可用的 RAM。并行浏览器少一些,胜过频繁崩溃。
  6. 调整超时时间 这取决于目标站点的验证挑战通常有多慢。
  7. 匹配代理位置 与站点预期的流量相匹配,尤其是对于地理位置敏感的平台。

FlareSolverr 替代方案

工具最佳适用场景
FlareSolverr你需要一个免费、开源的解决方案来解决 Cloudflare 验证挑战,并且乐于自行管理基础设施。
Playwright你希望完全掌控浏览器自动化,并且愿意自行构建隐身和反爬虫逻辑。
Puppeteer你在 Node.js 环境中开发,需要直接控制 Chromium 浏览器。
Nodriver你更喜欢一个轻量、现代、专为不被检测的浏览器自动化而设计的 Python 库。
ZenRows你需要一个托管式抓取 API,帮你处理浏览器渲染、代理和反机器人绕过。
ScrapFly你需要一个内置反爬虫处理、浏览器渲染和结构化数据提取的抓取 API。

FlareSolverr 在成本上占优,因为它免费且可自托管。ZenRows 和 ScrapFly 等托管服务费用更高,但省去了自行运行浏览器基础设施的维护负担。

结论

FlareSolverr 能很好地处理 Cloudflare 挑战的浏览器端,尤其适用于中低量级的抓取以及对顽固端点的一次性访问。它并非为解决 CAPTCHA 而设计,对于超大批量任务也不是最轻量的选择。

FlareSolverr 背后的 IP 与工具本身同样重要。将它与一个干净的住宅代理池、在需要连续性的场景使用粘性会话、以及合理的并发限制搭配使用,会比在被标记的数据中心 IP 上运行它走得更远。

如果无论你怎么尝试,Cloudflare 的验证挑战都反复出现,那么在断定 FlareSolverr 出了问题之前,先检查一下你代理的信誉。真正的问题通常就藏在那里。

使用优质代理更可靠地绕过 Cloudflare。立即试用 NodeMaven,仅需 $3.50 

开始试用

常见问题

是的。FlareSolverr 主仓库正在积极更新,2026 年全年都有版本发布和开放的 issue。两个较旧的分支 FlareSolverr1 和 FlareSolverr2 已被归档,不应再使用。

是的。该项目提供了一个官方 docker-compose.yml,并运行 docker compose up -d 是让它运行起来最简单的方法之一。

并不可靠。它能检测到 CAPTCHA 的出现,但自动破解功能长期以来一直无法正常工作,项目本身也将此列为尚未解决的问题。

通常是以下二者之一: maxTimeout 对于耗时较长的挑战设置得过低,或者主机的 CPU 和内存资源不足。请先尝试调高超时时间,然后检查容器上的资源使用情况。

重新创建会话,使用 sessions.create 并重试该请求。在会话使用逻辑外围加入基本的重试机制,可以让你免于手动重启。

在具有严格 Cloudflare 规则的网站上,住宅代理通常比数据中心 IP 表现更好,因为 IP 信誉会影响挑战出现的频率。

可以。您发送一个带有 JSON 主体的普通 POST 请求,FlareSolverr 会返回 HTML、cookie 和标头,您可以将它们传递给 requests 库 或任何其他 HTTP 客户端。

不完全是。FlareSolverr 内部使用 Selenium,但它的定位是一个专注于破解挑战的代理,而不是面向整个爬虫的通用浏览器自动化框架。

FlareSolverr 免费且可自托管,因此基础设施和更新需要你自己管理。抓取 API 按请求次数收费,但会替你处理扩展、维护和反机器人更新。

FlareSolverr 本身只是一款软件。抓取某个特定网站是否被允许,取决于该网站的服务条款以及适用的法律,在你大规模抓取任何内容之前,都值得先确认这一点。

您可能还喜欢 这些文章

本网站使用 Cookie 文件 来提升您的使用体验。继续访问即表示您同意我们使用 Cookie。