13ft:免费自托管的付费墙穿透服务,十分钟跑起来
【免费下载链接】13ftMy own custom 12ft.io replacement项目地址: https://gitcode.com/GitHub_Trending/13/13ft
13ft 是一个可自托管的付费墙穿透服务:贴上被付费墙拦住的文章链接,就能拿到文章全文,并剥掉广告和付费弹窗。一条 Docker 命令即可部署好,请求只经过你自己的服务器。
用在单篇付费文章阅读上
- 只想读某一篇付费文章(如纽约时报、Medium 上的内容),不想为整站订阅付费
- 12ft.io(同类在线服务)读不了某些站点,需要一台可控的自托管替代方案
理解工作原理:冒充谷歌搜索爬虫
可以把原理理解为"店家给业务伙伴审货时会出示完整目录":为了让搜索引擎正确收录文章,网站会向谷歌的爬虫(GoogleBot)提供全文,而普通访客只看到付费弹窗。13ft 只是抓取时带上爬虫的"身份标识"(User-Agent 请求头),拿到同样的内容。关键就在 核心源码 里的请求头:
googlebot_headers = { "User-Agent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) " "AppleWebKit/537.36 ... (compatible; Googlebot/2.1; ...)" }多数站点不深究请求是否真来自谷歌,所以这条主通道有效;对开始校验爬虫身份、返回反爬验证页或 403/5xx 站点的请求,会按顺序触发回退,状态页会显示当前进行到哪一步:
| 情况 | 回退行为 |
|---|---|
| 链接是 Medium 文章 | 优先尝试经 Freedium 镜像抓取 |
| 收到反爬验证页或 403/5xx 状态码 | 依次尝试 archive.org、archive.today 的存档快照 |
| 拿到 HTML 后 | 注入<base>标签修正相对路径,剔除付费墙与防嵌入脚本再展示 |
🐳 用 Docker 部署 13ft
前提:本机装有 docker 与 docker compose。
- 克隆仓库并进入项目目录:
git clone https://gitcode.com/GitHub_Trending/13/13ft cd 13ft- 一条命令启动容器(首次会自动拉取镜像),并把本地 5000 端口映射出来:
docker compose up- 浏览器打开 http://localhost:5000。这个付费墙穿透服务只有一个输入框和一个 SUBMIT 按钮,不需要其他配置。
不想用 Docker 时,也可以走 Python 路线:进入 app 目录安装依赖后运行 portable.py,具体差异见仓库 README。
验证效果:从付费链接到全文
整个过程就是三个动作:
- 输入:把一条付费文章 URL 粘进输入框
- 点击:紫色的 SUBMIT 按钮
- 得到:页面先显示进度状态(连接、下载、检查反爬、尝试快照、处理、清理、完成),结束后自动跳转到文章全文;广告与付费弹窗已在处理阶段被剥离
下面是提交后到全文展示的实际演示:
两个细节:处理结果会缓存 5 分钟,同一链接短时间内再次打开直接命中缓存;失败时页面会给出中文的具体原因(如"反爬虫挑战""响应超时"),而不是无提示地转圈。
🌐 切换界面语言与直接 URL 访问
- 语言:启动前设置
LOCALE环境变量即可切换界面语言,例如LOCALE=fr python portable.py使用法语界面;全部语言文件位于 app/locales/。 - 直接 URL 访问:不必进入页面,直接以
http://127.0.0.1:5000/https://example.com/article的形式访问,服务器会直接返回处理后的文章,适合做进浏览器书签工具。
评估使用边界与合规风险
- 该手法利用了网站对爬虫开放访问的既有行为,可能与部分站点的服务条款冲突;作者明确将其定位为"只看一篇文章",不适用于批量下载或再分发。
- 失败场景是真实存在的:部署 Cloudflare 类反爬挑战且无存档快照的站点会失败;刚发布、尚未被存档的 Medium 文章也会报错;请求 30 秒超时即中止。
- 数据流向:主通道直接请求目标网站,仅在回退触发时查询 archive.org 等快照站点;服务与处理都在你自己的服务器上完成,无其他第三方代理。
- 如果你持续阅读同一家媒体的内容,直接订阅该媒体更可持续;穿透付费墙只适合单次阅读。
写在最后
如果你只是偶尔需要读几篇付费文章,把 13ft 跑在本机或一台轻量服务器上就够了;遇到打不开的链接,可在项目 Issue 区提交链接和站点,便于维护者定位与适配。
【免费下载链接】13ftMy own custom 12ft.io replacement项目地址: https://gitcode.com/GitHub_Trending/13/13ft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考