博客

作者 javinfo team

DMM API 难题

DMM 没有可用的公开 API —— dmm.co.jp 对全世界进行地理封锁,而 FANZA 联盟 API 只有日语版。javinfo 通过番号返回规范化的 DMM 元数据。

dmm.co.jp 区域限制错误信息

dmm.co.jp 是大多数 JAV 元数据所在之处。它也深信互联网的其余部分根本不存在。

从日本以外访问它,你会得到一个礼貌的日语错误页面,告诉你走开。该服务在你所在的地区不可用。没有例外名单,没有开发者门户,什么都没有。日本的互联网基础设施至今仍像运行在 2003 年,而没人告诉过他们这一点。

DMM 有公开 API 吗?

没有。DMM 从未发布过。外面能找到的是一个位于 affiliate.dmm.com/api 的联盟 API —— 而且,我无法形容这有多好笑,它同样藏在那个相同的地理封锁背后。你需要一个日本 IP 才能阅读一个本应为你带来流量的 API 的文档。DMM 的成人业务 FANZA 也没什么两样:FANZA 联盟 API 同样位于相同的地理封锁背后,配着同样只有日语的文档。日本网络逻辑的巅峰之作。

即便你设法绕过了那道关,文档也完全是日语的(当然,怎么可能不是呢),而响应结构则是 DMM 后端内部在 2014 年的样子:几十个字段,没有变更日志,出问题时也零通知。某些东西某天就这么停止工作了,而你得自己去搞清楚为什么。

javinfo 返回的是什么

我们之所以做了 javinfo,是因为如果你在日本以外,这一切都行不通,而且坦白说,因为总得有人去做。通过 HTTPS 发送一个 DVD 番号,拿回一个规范化的结果。不需要日本 IP,不需要抓取,不用去猜 2014 年的结构。

Look up a DMM code
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": "SSIS-001" }'
Response
{
"result": {
"q": "SSIS-001",
"source": "r18",
"video": {
"dvdId": "SSIS-001",
"titleEn": "Newcomer NO.1 STYLE ...",
"releaseDate": "2020-07-07",
"runtimeMins": 120,
"makers": ["S1 NO.1 STYLE"]
}
},
"latencyMs": 142,
"cached": false
}

我们的数据库覆盖了 dmm.co.jp 库存大约 99% 的内容,而且大多数番号在第一次尝试时就能解析出来:标题、发行日期、出演阵容、制作商、厂牌、系列、时长、封面图、样片 URL。一个端点,一种响应结构,每次都是相同的字段。你不需要知道它是怎么抓取的、从哪里抓的,而且老实说,你越少去想抓取这回事越好。这正是 API 优先、与数据源无关设计的全部意义。

DMM 并不是唯一一个跟你对着干的数据源。所谓的 JavDB API 也有同样的腐烂问题,只不过用的是 Cloudflare 而非地理封锁。两者都只是同一个 JAV 元数据 API 背后的一个数据源,无论数据来自何处,它都返回相同的规范化结构。

完整的请求和响应格式在 RapidAPI 上。密钥、速率限制和套餐都在那里管理。你可以在一分钟内开始使用。