everywall/ladder
运维与部署自托管的 HTTP 代理,按域名改写请求和响应头、注入脚本并替换内容,用于测试和分析网站的付费墙及内容投递行为。
项目介绍
Ladder 是一个用 Go 编写的自托管 HTTP 网页代理。它在服务端抓取目标页面,按配置修改发往网站的请求和返回给浏览器的响应,用来观察网站在不同客户端身份下如何提供内容,以及 CORS、CSP、Referer、Cookie、User-Agent 等头部的实际行为。
核心处理分成两个阶段:先执行请求修改,再抓取目标网站;拿到结果后执行结果修改,再发给客户端。每个域名的 YAML 规则可以覆盖请求头和响应头、用正则表达式替换内容、在指定 DOM 位置注入 HTML/CSS/JS,以及改写 URL 的查询参数、域名和路径。它还能通过 /raw/ 和 /api/ 路径返回原始 HTML 或结构化数据,规则集可以从本地文件、目录或远程 URL 加载。
适用对象是开发者、研究人员和发布方,用于调试付费墙配置、验证访问控制和检查头部行为。README 将它定位为合法的测试、研究和质量保证工具,但仓库 Topic 中包含 paywall、cors、paywall-blocker 等标签,说明它也被用于研究这类访问控制机制。
快速使用
用 Docker 启动并打开代理页面:
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
然后打开 http://localhost:8080,输入目标 URL 后回车。也可以直接在地址栏拼接 http://localhost:8080/https://www.example.com 访问代理后的页面,或者用 curl -X GET "http://localhost:8080/api/https://www.example.com" 获取 JSON 格式的返回。
其他启动方式:
- 从 releases 页面下载预编译二进制,运行
./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml。 - 使用仓库提供的
docker-compose.yaml或 Helm chart 部署。 - 通过
http://localhost:8080/raw/https://www.example.com获取原始 HTML,通过http://localhost:8080/ruleset查看当前加载的规则集。
配置说明
运行参数通过环境变量控制。常用项包括 PORT(默认 8080)、USER_AGENT(默认伪装成 Googlebot)、X_FORWARDED_FOR(默认 66.249.66.1)、USERPASS 启用 Basic Auth、RULESET 指定规则集位置、ALLOWED_DOMAINS 限制允许代理的域名,以及 EXPOSE_RULESET 决定是否对外共享规则集。
自定义规则放在 YAML 文件或目录中。每条规则针对一个域名,可以覆盖请求或响应头、用正则替换内容、在指定 DOM 位置插入 HTML,或者改写 URL 的查询参数、域名和路径。共享规则集放在独立的 ladder-rules 仓库。
如果目标站点有 Cloudflare 或 JavaScript 挑战,可以搭配 FlareSolverr:设置 FLARESOLVERR_HOST,并在规则中对需要处理的域名设置 useFlareSolverr: true。FlareSolverr 运行无头浏览器,会增加延迟和资源消耗,只应为确实需要的域名开启。
使用约束
- README 明确说明 Ladder 不绕过指纹识别、速率限制或行为分析等高级反自动化机制,在主动限制访问的站点上可能无法正常工作。
- 如果实例对外公开,README 警告必须开启 Basic Auth;否则任何人都能用它代理浏览,包括非法内容,运营者可能因此承担责任。
- 可以通过
ALLOWED_DOMAINS限制域名,也可以结合规则集中的域名列表使用。 - Windows 二进制标注为未经测试;容器镜像支持 amd64 和 arm64。
- 项目使用 GPL-3.0 许可证。
HotRepo 点评
Ladder 目前约有 9.4k Star 和 541 Fork。在 2026-11-11 的 Go 日榜中,它排在第 12 位,当天新增 6 Star。这个单日记录说明它在 Go 生态中仍有一定关注度,但现有数据不足以判断增长趋势或持续的榜单位置。
更值得注意的信号是 README 的定位和仓库标签之间的落差。README 把 Ladder 包装成面向开发者的头部测试和质量保证工具,而 Topic 中的 bypass、paywall-blocker 标签以及 FlareSolverr 集成说明,都表明绕过访问控制是实际使用场景之一。如果用于生产或正式研究,建议仔细阅读规则集示例和 FlareSolverr 相关说明,因为工具的效果高度依赖按域名编写的配置,也取决于目标站点自身的反自动化措施。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。