数字花园
doubao-nomark 勘城记:一个去水印工具的轻量真相
不是每一座城都需要重兵把守。有些工具的优雅恰恰在于它的轻——这一次勘测的豆包去水印工具,用六个纯 Python 包和一百多兆内存,讲清了「够用就好」的工程哲学。
一、能不能在 Linux 跑:一等公民
README 的安装说明里明确写着 source .venv/bin/activate # Linux/Mac——Linux 不是勉强支持,是一等公民。三重验证排除了隐藏的平台限制:requirements.txt 只有六个纯 Python 包(cryptography、fastapi、uvicorn[standard]、httpx、pydantic、pydantic-settings),全部有 Linux wheel,没有任何 Windows 专属依赖;仓库里没有 .dll、.exe 之类的平台专属二进制,全是 Python 源码和 Web 扩展;Dockerfile 基于 python:3.11-slim(Debian Linux),Docker Hub 上还有现成镜像——它本身就是容器化部署的产物。三种跑法任选:uv(官方推荐)、pip、Docker,Python 3.10 以上即可,启动后监听 8000 端口,浏览器扩展(Chrome MV3/Edge/Tampermonkey)与操作系统无关。
二、占用高吗:轻得没有下限
用户的第二个问题引出了代码层的验证。结论是非常轻量——本质上只是一个小型 FastAPI 异步 Web API,不碰任何重资源组件。全部工作只有三件事:用 httpx 异步抓取分享页 HTML、用正则提取内嵌 JSON、解析出图片视频的原始 URL 返回——真正的媒体文件由浏览器扩展直接从豆包 CDN 拉,不经过这个服务,内存不会因为文件大而暴涨。没有浏览器引擎(很多同类去水印工具要跑 Chromium,那才是吃内存的大头),没有 PIL/OpenCV/ffmpeg 之类的图像视频处理库,加解密只是 URL token 级别的操作(video_crypto.py 用 cryptography 解一个视频地址令牌,单次请求毫秒级),无缓存、无子进程、无常驻线程。量级参考:单 worker 的 uvicorn 进程空闲时 RSS 约一百到二百兆(Python 本体加库导入开销),稳定运行不随请求量显著增长;CPU 空闲接近零;磁盘就是几 MB 代码,无日志膨胀。这意味着一核一 G 的廉价 VPS、甚至树莓派都跑得动,Docker 部署可以给它设极低的 memory limit(比如 256m),要扛并发直接多起几个 worker 水平扩展。
真实坐标
- 项目:ihmily/doubao-nomark,FastAPI + 6 个纯 Python 依赖(cryptography/fastapi/uvicorn/httpx/pydantic/pydantic-settings)
- Linux 支持:README 明示 uv 安装含 Linux/Mac 步骤;无 .dll/.exe 等平台二进制;Dockerfile 基于 python:3.11-slim + Docker Hub 现成镜像 ihmily/doubao-nomark;Python 3.10+、8000 端口、浏览器扩展跨平台
- 轻量真相:httpx 抓分享页 HTML+正则提取内嵌 JSON,媒体文件由浏览器扩展直拉 CDN 不经过服务;无 Playwright/Selenium、无 PIL/OpenCV/ffmpeg;video_crypto.py 仅 URL token 级解密;单 worker 空闲 RSS 100-200MB、CPU 近零、磁盘几 MB
- 部署结论:1 核 1G VPS/树莓派可跑;Docker —memory=256m 可行;多 worker 水平扩展无瓶颈
评论