블로그

작성자 javinfo team

존재하지 않는 JavDB API

JavDB에는 공개 API가 없다. GitHub의 모든 javdb api는 썩어가는 스크레이퍼다. 사람들이 실제로 쓰는 것, 왜 망가지는지, 그리고 호스팅 대안을 소개한다.

JavDB API는 없습니다. JavDB는 한 번도 내놓은 적이 없습니다. “javdb api”를 검색하면 그 이름을 빌린 커뮤니티 스크레이퍼 더미가 나오는데, 하나같이 내일이라도 망가질 수 있는 HTML을 파싱하고 있습니다.

그게 한 문장으로 압축한 문제 전부입니다. 그래도 실제로 무엇이 나와 있는지 짚어볼 가치는 있습니다. 결국 다 마주치게 될 테니까요.

”javdb api”가 실제로 가리키는 것

공식이 아니고 모두 취약한 몇몇 저장소들:

왜 결국 다 망가지는가

이 도구들은 살아 있는 웹사이트를 스크레이핑하므로, 그 웹사이트가 가진 모든 방어를 그대로 물려받습니다. JavDB는 Cloudflare 뒤에 있고, 이 프로젝트들의 절반은 페이지 하나를 받아오려고 FlareSolverr를 옆에서 같이 돌려야 합니다. 일부 콘텐츠(fc2)는 손으로 직접 붙여넣고 만료되면 갱신해야 하는 세션 쿠키가 필요합니다. 사이트의 클래스 이름 변경 하나가 변경 이력도 경고도 없이 당신의 파서를 조용히 망가뜨리고, 어느 날 메타데이터가 그냥 텅 비어버립니다. 그리고 JavDB의 메타데이터는 영어와 중국어뿐이라, 그 위에 빌드한 것은 무엇이든 일본어 필드를 놓칩니다.

그래서 당신은 통합 하나를 유지보수하는 게 아닙니다. 스크레이퍼, 헤드리스 브라우저 우회, 쿠키, 그리고 새벽 2시에 다 무너졌을 때를 위한 호출기를 유지보수하게 됩니다.

호스팅 대안

javinfo는 JavDB가 결코 주지 않은 그 API입니다. 실제로 javdb 프로바이더가 있습니다. 코드를 보내면 구조화된 메타데이터가 돌아오는데, 여기에는 스크레이퍼들이 노리는 다운로드 링크와 마그넷 링크가 포함됩니다. 매번 같은 형태, 돌볼 것 없음.

Look up a code
curl -X POST "https://api.javinfo.dev/movie" \
-H "x-javinfo-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "q": "CAWD-001", "providers": "javdb" }'
Response (javdb)
{
"q": "CAWD-001",
"source": "javdb",
"result": {
"dvdId": "CAWD-001",
"runtimeMins": 120,
"extra": {
"downloadLinks": [
{ "name": "CAWD-001 1080p", "magnet": "magnet:?xt=urn:btih:...", "size": 5905580032, "hd": true }
],
"score": 4.3,
"voteCount": 512
}
}
}

모든 공급자는 동일한 result 형태에 매핑되므로, 어느 소스가 응답하든 result.*를 같은 방식으로 읽습니다. 스크레이핑과 Cloudflare 대응은 우리가 맡습니다. 이는 모든 소스를 아우르는 단일 JAV 메타데이터 API의 한 부분이며, 처음부터 공급자에 묶이지 않도록 설계되었습니다. 부서지기 쉬운 스크레이퍼 더미 대신 유지보수되는 통합 하나만 두는 방식입니다. JavDB만 이런 소스인 것도 아닙니다. DMM은 더 심합니다.

app.javinfo.dev에서 가입하고 키를 받아 x-javinfo-key 헤더로 전달하세요(RapidAPI에서도 이용할 수 있습니다). javdb 프로바이더와 그 다운로드 링크는 missav와 마찬가지로 모든 요청에서 라이브로, 데이터는 완전하고 게이팅이 없습니다. 과금은 사용량 방식입니다. /movie는 성공한 결과당 $0.001, /query는 $0.0002이며, 신규 가입 시 시작용으로 1,000회 이상의 무료 조회가 주어지고 신용카드는 필요 없습니다(이후에는 USDC로 충전하며 1:1로 적립됩니다). 1분 만에 실행할 수 있습니다. Docker도, FlareSolverr도, 쿠키도 필요 없습니다.