搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

everywall/ladder

运维与部署

自托管的 HTTP 代理,按域名改写请求和响应头、注入脚本并替换内容,用于测试和分析网站的付费墙及内容投递行为。

9,417
542
Go
GPL-3.0
创建于 3 年前

项目介绍

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 生成,更新于 ,以项目官方文档为准。