并不存在 JavDB API。JavDB 从未发布过。搜索 “javdb api”,你会得到一堆顶着这个名字的社区抓取工具,每一个都在解析明天就可能失效的 HTML。
这就是整个问题,一句话说完。不过还是值得把外面实际有的东西走一遍,因为你会全都碰上。
“javdb api” 实际指向的是什么
少数几个仓库,没有一个是官方的,全都很脆弱:
javdb-python封装的是 javdatabase.com,甚至都不是 javdb.com。作者说得很直白:这些函数和 HTML 结构并不是一个稳定的 API。用来写个一次性脚本还行,但不适合任何你要交付的东西。- npm 上的
javdb-api实际上已经死了。一年多没有发布新版本,每周只有寥寥几次下载量。别在它上面构建任何东西。 - 像
ovnrain/javbus-api这样的自托管抓取工具会给你一个 Docker 容器,替你去抓取。运行起来更舒服,但底子是一样的,源站点改了标记结构它照样会坏。 - 媒体服务器工具(Javinizer、Emby/Jellyfin 的 JavScraper 插件)非常适合整理本地媒体库,但它们从来就不是设计成可供你自己的应用调用的数据 API。
为什么它们最终都会坏
这些工具抓取的是一个实时网站,所以它们继承了那个网站的每一道防御。JavDB 藏在 Cloudflare 背后,这些项目里有一半需要同时运行 FlareSolverr 才能把页面拿回来。有些内容(fc2)需要一个你手动粘贴进去、过期后还得刷新的会话 cookie。站点上一次类名重命名就会悄无声息地搞坏你的解析器,没有变更日志,没有警告,然后你的元数据某天就这么空了。而且因为 JavDB 的元数据只有英文和中文,任何基于它构建的东西都会缺失日文字段。
所以你维护的并不是一个集成。你维护的是一个抓取工具、一个无头浏览器绕过方案、一个 cookie,以及一个在凌晨两点全部崩溃时呼叫你的传呼机。
一个托管的替代方案
javinfo 就是 JavDB 从未给过你的那个 API。它有一个真正的 javdb 数据源:发送一个番号,拿回结构化的元数据,包括抓取工具们追逐的下载链接和磁力链接。每次都是相同的结构,不需要你看管任何东西。
curl -X POST 'https://javinfo-search.p.rapidapi.com/search' \ -H 'Content-Type: application/json' \ -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \ -H 'X-RapidAPI-Host: javinfo-search.p.rapidapi.com' \ -d '{ "q": "CAWD-001", "providers": "javdb" }'{ "result": { "q": "CAWD-001", "source": "javdb", "video": { "dvdId": "CAWD-001", "runtimeMins": 120, "series": "Series Name" }, "extra": { "downloadLinks": [ { "name": "CAWD-001 1080p", "size": 5905580032, "hd": true, "magnet": "magnet:?xt=urn:btih:..." } ], "score": 4.3, "voteCount": 512 } }, "latencyMs": 980, "cached": false, "gated": false}每个数据源都映射到相同的基础 video 结构,所以无论哪个源做出了响应,你都以相同的方式读取 result.video.*。我们替你打理抓取和 Cloudflare 的缠斗。它是覆盖每一个数据源的同一个 JAV 元数据 API 的一部分,设计上与数据源无关 —— 一个持续维护的集成,胜过一堆脆弱的抓取脚本。JavDB 远不是唯一一个这样的数据源。DMM 更糟。
鉴权、速率限制和套餐都在 RapidAPI 上。javdb 数据源及其下载链接属于 Pro 套餐(每天 1,000 次请求),missav 数据源也在其中。你可以在一分钟内跑起来。不需要 Docker,不需要 FlareSolverr,不需要 cookie。