Ladder 是一个自托管的 HTTP Web 代理,主要用于测试、分析和调试网站的付费墙(Paywall)实现、CORS 策略及内容交付行为。

本教程将覆盖二进制、Docker、Docker Compose 等多种部署方式,以及基础配置和高级功能(如 FlareSolverr 集成)。

📥 部署方式

Ladder 提供了多种部署方式,你可以根据自己的需求选择最合适的一种。

方式一:使用预编译二进制文件(推荐)
这是最简单直接的方式,适合快速测试或个人使用。

  1. 下载:从 GitHub Releases 页面 下载适用于你操作系统(Linux, macOS, Windows)的最新二进制文件。

  2. 运行:在终端中,为二进制文件添加执行权限(Linux/macOS),然后运行并指定规则集:

    1
    2
    3
    # 以 Linux 为例
    chmod +x ladder
    ./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml
  3. 访问:打开浏览器,访问 http://localhost:8080,在输入框中输入目标 URL 即可开始使用。

方式二:使用 Docker(推荐生产环境)
Docker 方式提供了良好的环境隔离和便捷的部署体验。

  • 直接运行

    1
    2
    3
    4
    docker run -p 8080:8080 -d \
    --env RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml \
    --name ladder \
    ghcr.io/everywall/ladder:latest
  • 使用 Docker Compose(更易管理)

    1. 下载 docker-compose.yaml 文件:

      1
      curl https://raw.githubusercontent.com/everywall/ladder/main/docker-compose.yaml --output docker-compose.yaml
    2. 启动服务:

      1
      docker-compose up -d
    3. 服务将在后台运行,访问 http://localhost:8080

方式三:在 Kubernetes 上部署 (Helm)
对于 Kubernetes 集群,项目提供了 Helm Chart。请参考项目 helm-chart 子目录下的 README 文件获取详细部署指南。

⚙️ 核心配置与使用

1. 基础使用

  • Web 界面:访问 http://localhost:8080,输入目标 URL。
  • 直接 URL:在浏览器地址栏直接输入 http://localhost:8080/https://www.example.com 即可访问代理后的页面。
  • API 调用:通过 curl -X GET "http://localhost:8080/api/https://www.example.com" 获取 JSON 格式响应。
  • RAW 模式:访问 http://localhost:8080/raw/https://www.example.com 获取未修改的原始 HTML。

2. 环境变量配置
你可以通过环境变量来调整 Ladder 的行为,常用变量如下:

变量 描述 示例值
PORT 监听端口 8080
USER_AGENT 模拟的用户代理(User-Agent) Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
X_FORWARDED_FOR 模拟的 IP 地址 66.249.66.1
USERPASS 启用基础认证(Basic Auth),格式 用户名:密码 admin:123456
RULESET 规则集文件路径或 URL https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml
ALLOWED_DOMAINS 允许代理的域名列表(逗号分隔),为空则不限制 example.com, wikipedia.org
FLARESOLVERR_HOST FlareSolverr 服务地址(用于绕过 Cloudflare 等保护) http://localhost:8191

⚠️ 安全警告:如果你的 Ladder 实例暴露在公网,强烈建议启用 USERPASS 基础认证,以防止被他人滥用为匿名代理,从而引发法律风险。

3. 规则集 (Ruleset)
规则集是 Ladder 的核心功能,用于定义对不同域名的请求修改和内容注入。你可以通过 RULESET 变量指定一个 YAML 文件、一个包含多个 YAML 文件的目录或一个远程 URL。

  • 基础规则示例(修改请求头和注入脚本):

    1
    2
    3
    4
    5
    6
    7
    8
    - domain: example.com
    headers:
    user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    content-security-policy: "script-src 'self'"
    injections:
    - position: head
    append: |
    <script>console.log("Injected by Ladder");</script>
  • 使用 FlareSolverr 绕过保护

    1
    2
    3
    4
    - domain: cloudflare-protected-site.com
    useFlareSolverr: true # 对此域名启用 FlareSolverr
    headers:
    user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

🌐 高级集成:使用 FlareSolverr 绕过 Cloudflare

Ladder 可以集成 FlareSolverr 来应对 Cloudflare 等反爬机制。

  1. 启动 FlareSolverr:你可以使用 Docker 单独运行它。

    1
    docker run -d --name flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest
  2. 配置 Ladder:在启动 Ladder 时,通过环境变量或 Docker Compose 设置 FLARESOLVERR_HOST=http://localhost:8191

  3. 在规则集中启用:对于需要绕过保护的域名,在其规则中添加 useFlareSolverr: true

🛠️ 开发环境搭建(可选)

如果你想进行二次开发,可以按以下步骤操作:

  1. 克隆仓库git clone https://github.com/everywall/ladder.git

  2. 运行开发服务器

    1
    2
    3
    cd ladder
    echo "dev" > handlers/VERSION
    RULESET="./ruleset.yaml" go run cmd/main.go

    开发服务器将运行在 http://localhost:8080

  3. 前端样式修改:项目使用 Tailwind CSS,如果你修改了 form.html,需要运行 pnpm build 来重新生成样式表。

💡 关键要点与适用场景

  • 核心用途:Ladder 是一个合法的开发与测试工具,主要用于调试付费墙、CORS 策略、抓取行为分析等。请务必在遵守目标网站服务条款和相关法律的前提下使用。
  • 限制:Ladder 无法绕过所有网站的反爬机制,特别是那些使用高级指纹识别、行为分析或客户端挑战的网站。FlareSolverr 的集成提升了应对能力,但并非万能。
  • 安全第一公网部署务必启用 USERPASS。同时,建议通过 ALLOWED_DOMAINS 限制代理访问的域名范围,以减少滥用风险。