🧭 核心功能与用途

Ladder 本质上是一个中间人代理,它允许你:

  • 修改请求:自定义 User-Agent、X-Forwarded-For IP,或应用规则修改请求 URL。
  • 修改响应:移除或修改 CORS、CSP 等响应头,注入或替换 HTML/CSS/JavaScript 代码。
  • 应用规则集:为不同域名配置不同的处理规则,实现精细化控制。
  • API 接口:提供 REST API,方便脚本化调用。

重要限制与免责

  • 不用于绕过付费墙或违反服务条款。项目明确声明用于“合法的测试、研究、质量保证”。
  • 无法破解高级反机器人机制(如指纹识别、行为分析)。
  • 对于 Cloudflare 等挑战,可可选集成 FlareSolverr(一个独立的浏览器自动化工具)来尝试绕过,但使用者需自行承担法律和合规风险。

📦 部署方式

Ladder 部署非常简单,推荐使用 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
2
curl https://raw.githubusercontent.com/everywall/ladder/main/docker-compose.yaml --output docker-compose.yaml
docker-compose up -d

方式三:直接运行二进制文件

Releases 页面下载对应系统的二进制文件(Linux、macOS、Windows):

1
./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml

安全警告:如果实例将暴露在公网,务必启用 Basic Auth(通过 USERPASS 环境变量),否则任何人都可能滥用你的代理,而你将为此承担责任。

🚀 使用方式

1. 浏览器访问

  • 打开 http://localhost:8080,在输入框中输入目标 URL。
  • 或直接在地址栏拼接:http://localhost:8080/https://www.example.com
  • 可创建书签快速跳转:javascript:window.location.href="http://localhost:8080/"+location.href

2. API 调用

  • 标准请求curl -X GET "http://localhost:8080/api/https://www.example.com"
  • 获取原始 HTMLhttp://localhost:8080/raw/https://www.example.com
  • 查看当前规则集http://localhost:8080/ruleset

⚙️ 核心配置

1. 环境变量(常用)

变量 描述 示例
PORT 监听端口 8080
USER_AGENT 默认 User-Agent Mozilla/5.0 (compatible; Googlebot/2.1; ...)
X_FORWARDED_FOR 默认 IP 地址 66.249.66.1
USERPASS 启用 Basic Auth,格式 用户名:密码 admin:123456
RULESET 规则集文件/目录/URL 路径 https://.../ruleset.yaml
ALLOWED_DOMAINS 允许代理的域名列表(逗号分隔),为空则不限 example.com,google.com
FLARESOLVERR_HOST FlareSolverr 服务地址(可选) http://localhost:8191

2. 规则集(Ruleset)

规则集是 YAML 文件,用于定义对特定域名的操作。它非常灵活,示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
- domain: example.com
headers:
user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
content-security-policy: "script-src 'self';"
regexRules:
- match: '<script\s+([^>]*\s+)?src="(/)([^"]*)"'
replace: '<script $1 script="/https://www.example.com/$3"'
injections:
- position: head
append: |
<script>console.log("Injected!");</script>
- domain: cloudflare-site.com
useFlareSolverr: true # 对此域名启用 FlareSolverr
  • headers:修改或删除(设为 none)请求/响应头。
  • injections:在 DOM 特定位置(head、CSS 选择器等)注入代码。
  • useFlareSolverr:为特定域名启用 FlareSolverr 绕过挑战。

🔧 FlareSolverr 集成(可选)

Ladder 可集成 FlareSolverr(一个独立的头浏览器服务)来应对 Cloudflare 等反爬机制。

启动 FlareSolverr

1
docker run -d --name flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest

在 Ladder 中启用:在规则集中为需要处理的域名添加 useFlareSolverr: true,并确保 Ladder 的 FLARESOLVERR_HOST 环境变量指向 FlareSolverr 服务。

📋 开发与构建

如需自行编译,需要 Go 环境:

1
2
3
git clone https://github.com/everywall/ladder.git
cd ladder
RULESET="./ruleset.yaml" go run cmd/main.go

前端样式修改后,需运行 pnpm build 重新生成 CSS。

总结

Ladder 是一个强大且灵活的 HTTP 代理工具,其核心价值在于对 Web 请求和响应的细粒度控制能力。部署极其简单(一行 Docker),但使用前务必评估法律和合规风险,特别是启用公网访问或 FlareSolverr 时。对于开发者、测试人员或研究人员,它是调试 CORS 问题、分析页面内容交付或模拟不同客户端环境的得力助手。建议先从配置规则集入手,理解其对请求/响应的修改能力。