在把一个 JAV 色情 API 接进产品之前,总会有人先问一句:这样做行不行。这是个对的问题,答案却很无聊——完全取决于你搬运的是什么。字节和事实,不是同一批货。
元数据不是影片
一部 JAV 作品有一条目录记录:番号、两种语言的标题、发行日期、时长、制作商、厂牌、系列、出演阵容。这些是关于一件已公开发行的商品的事实,和 ISBN 书目记录属于同一类东西。它们不是商品本身。
javinfo 返回的就是这条记录。它只索引元数据,不托管任何片库:没有视频文件,没有转码,没有播放器。视觉素材返回给你的是引用——封面的 URL、来源页面的 URL,某些数据源还有流媒体清单或磁力链接的 URL。引用在它指向的地方解析,也就是别人的服务器上。全部的区别就在这里,而正是这个区别决定了你到底在做什么。
别信,自己验
把一条真实响应里的主机名列出来,看看它们落在哪儿:
curl -s -X POST "https://api.javinfo.dev/movie" \ -H "x-javinfo-key: $JAVINFO_KEY" \ -H "Content-Type: application/json" \ -d '{ "q": "EBOD-391", "providers": "missav" }' \| jq -r '.. | strings | select(startswith("http"))' \| cut -d/ -f3 | sort -ufourhoi.commissav.wssurrit.com三个主机名,没有一个是我们的。封面、页面、清单——每一个都是你自己从源站取的,用你的基础设施,记在你的日志里。片子本身从不出现在响应体里,任何数据源都一样。javinfo 唯一在任何地方自己分发的素材,是发行方自己的预览片段,中继一下好让它在日本境外也能打开。
自己抓才是更冒险的那条路
直觉会告诉你,自建抓取工具是稳妥的选择:没有第三方,没有依赖,也不用读别人的服务条款。实际正好相反。
抓取会让你和每个源站的条款建立直接关系——用你自己的 IP,按你循环跑出来的频率。你一发请求,就等于接受了那份条款。限流、Cloudflare 挑战、地理封锁,最后是封禁,全都由你承受,而封禁落在的正是你生产流量出口的那个地址。再加一个无头浏览器去过挑战,那就成了在自己的机器上跑自动化绕过,这和调用一个端点在性质上是两回事。这摊事在技术上怎么收拾——一次调用、五个数据源、一种响应结构——写在 JAV 元数据 API 集成指南里。这里要说的更窄:看起来最省钱的那个选项,把全部风险敞口都集中到了你身上。
仍然归你的部分
调用 API 并不会把你的义务一起转过去。有四件事留在你这一侧:
- 在自己的界面上做年龄门槛。 javinfo 面向在其所在司法辖区已达法定年龄的用户。你摆在用户面前的东西,是你要建的那道门;在有年龄验证法规的辖区,这不是勾一个复选框就完事。
- 别把拿到的东西重新托管一遍。 直接引用一张封面,和把它复制进自己的存储桶,是归属不同的两种行为。为了性能做缓存可以,但要清楚自己在做哪一种。
- 把指针当指针看待。 磁力链接和流媒体清单来自第三方索引。javinfo 不为另一端的内容背书,你的界面也不该背书。
- 标注来源。 每条结果都带
source和site。把它们显示出来。
以上都不构成法律意见,而且各司法辖区对成人内容的规定差异极大。这只是在描述线路上到底走了什么——其余部分 javinfo 怎么处理,写在隐私政策里。
密钥和账单在 app.javinfo.dev;API 也在 RapidAPI 上架。按成功查询计费——/movie 每条结果 $0.0005,/query $0.0002,没查到不收费——所以把返回内容审一遍的成本,和琢磨这件事的成本差不多。新密钥自带 100+ 次免费查询,无需信用卡。