study / docs /flaresolverr-cloudflare.md
HouYunFei
feat: update changelog for version 1.5.0 and enhance proxy runtime features
eb7ce47
|
Raw History Blame Contribute Delete
3.29 kB
# FlareSolverr 处理 Cloudflare 拦截
本文说明如何配合 `docker-compose.warp.yml` 中的 WARP、Privoxy、FlareSolverr,解决注册流程遇到 Cloudflare 拦截的问题。
## 工作方式
注册流程不会每个请求都调用 FlareSolverr。当前逻辑是:
1. 注册请求先按配置走代理链路。
2. 如果响应被识别为 Cloudflare challenge 或 403/503 拦截,后端调用 FlareSolverr。
3. FlareSolverr 打开目标地址并返回 `cf_clearance` cookie 和 User-Agent。
4. 后端把 clearance 写入当前注册 session,并重试当前请求一次。
5. 同进程内会缓存 clearance,后续同 host 请求可复用。
## 启动容器
推荐直接使用仓库里的 WARP compose:
```bash
docker compose -f docker-compose.warp.yml up -d
```
相关服务:
| 服务 | 用途 | 默认内部地址 |
| --- | --- | --- |
| `warp-proxy` | 提供 WARP 出站网络 | `socks5://warp-proxy:1080` |
| `privoxy` | 把 HTTP 代理转发到 WARP | `http://privoxy:8118` |
| `flaresolverr` | 获取 Cloudflare clearance | `http://flaresolverr:8191` |
| `app` | chatgpt2api 主服务 | `http://localhost:3000` |
如果 app 运行在 Docker compose 网络内,FlareSolverr URL 使用:
```text
http://flaresolverr:8191
```
如果 app 直接运行在宿主机,FlareSolverr URL 通常需要改成:
```text
http://127.0.0.1:8191
```
## 设置页配置
打开:
```text
http://localhost:3000/settings/
```
进入 `FlareSolverr` tab,推荐配置:
| 字段 | 推荐值 |
| --- | --- |
| 启用 FlareSolverr 清障 | 开启 |
| 出站模式 | `单代理/WARP` |
| 清障代理 URL | `http://privoxy:8118` |
| Clearance 模式 | `FlareSolverr` |
| FlareSolverr URL | `http://flaresolverr:8191` |
| 超时秒数 | `60` |
| 刷新间隔秒数 | `3600` |
保存后可以点击:
- `测试当前清障代理`
- `测试 Clearance`
两个测试都通过后,再启动注册任务。
## 注册页使用
打开:
```text
http://localhost:3000/register/
```
正常配置邮箱和注册参数即可。遇到 Cloudflare 拦截时,日志会出现类似:
```text
检测到 Cloudflare 拦截,尝试刷新 clearance
Cloudflare clearance 刷新完成,重试当前请求
```
如果刷新失败,日志会提示 `clearance 刷新失败或重试后仍失败`,这通常表示当前 IP、WARP 出口或 FlareSolverr 浏览器环境仍被拦截。
## 常见问题
### FlareSolverr 地址填哪个?
- Docker compose 内运行 app:`http://flaresolverr:8191`
- 宿主机运行 app:`http://127.0.0.1:8191`
### 为什么打开了 FlareSolverr,但注册一开始没有调用?
这是正常的。FlareSolverr 只在检测到 Cloudflare 拦截后触发,用来刷新 clearance 并重试当前请求。
### 为什么测试代理成功,但 Clearance 失败?
代理只说明出站网络可用。Clearance 失败可能是:
- `flaresolverr` 容器没有启动
- app 无法访问 `flaresolverr_url`
- WARP 出口 IP 仍被 Cloudflare 拦截
- FlareSolverr 启动浏览器超时
### 如何确认容器在运行?
```bash
docker compose -f docker-compose.warp.yml ps
```
查看 FlareSolverr 日志:
```bash
docker logs -f chatgpt2api-flaresolverr
```
查看主服务注册日志:
```bash
docker logs -f chatgpt2api-warp
```