jp.louisvuitton.com と api.louisvuitton.com の調査
課題
ルイ・ヴィトンの新作情報に気づけない
ルイ・ヴィトンの新作がすぐ売り切れる
ゴール
ルイ・ヴィトンの新作にすぐ気付けるようにする
気になる商品の在庫状況が復活したことにすぐ気付けるようにする
方法
jp.louisvuitton.com で発生しているAPI通信を調査する
APIを定期的に呼び出すことで新作情報や在庫状況を監視・通知する
jp.louisvuitton.com 技術構成 概要
フロントエンド
Nuxt.jsベース
当然Vue.jsも使われている
SSRが行われている
APIサーバー
Java
Springではなかろうかと推測
Webサーバー
apache
CDN
akamai
フロントもAPIもakamaiをproxyしている
akamaiのbot managerを使っている
機械的アクセスを繰り返すとBANされる可能性が高い
akamaiの裏側がなんなのかはわからない
AWSかなと推測
Red Hatのクラウドだったりする?
DNS
akamai
1997/02/18 05:00:00に取得
その他
求人情報から調査
なかなかガッツリSAP使っているように見える
api.louisvuitton.com 調査
概要
商品一覧ページや商品個別ページはAPIでJSONを取得して描画するSPAになっている
LPやナビゲーションまわりだけはSSRされていてAPIがなさそう
アクセシビリティに結構配慮されていてハチャメチャなHTMLにはなっていない印象
商品filterエンドポイント
productIdとskuが含まれている
productIdは色を区別しない製品別のID
skuは色別のユニークID
filterIdが必須だが、有効なfilterIdを一覧するエンドポイントが不明…
filterIdは、categoryIdとは別物
categoryIdで絞り込むエンドポイントもcategoryId一覧エンドポイントも不明だが…
新作コレクションには新しいfilterIdが割り当てられるんだと思われるので、同一のfilterIdを定期監視しても意味なさそう
新作コレクションのfilterIdを得るにはHTMLをスクレイピングするしかないように思われる
サイトがリニューアルしたら壊れそうでいやだなあ…
検索エンドポイント
このエンドポイントに対して例えばアルファベットとカタカナすべてで検索すれば全商品を網羅できそうだけどpaginateとuniqするのがちょっとだるいな…
大量のアクセスが必要になるのでハイリスク
ソートという概念がなさそう
クエリに対するスコアでソートされてくる?
1文字で検索してもヒットした商品がちゃんと返ってくる
n-gramインデックスになっていそう
商品画像エンドポイント
商品一覧画面でサムネイルをいくつか表示するためのエンドポイント
商品詳細エンドポイントのほうが高画質な商品画像が得られる
商品詳細エンドポイント
末尾はproductId
末尾skuでもいける
商品名、商品説明、価格、商品画像が一通り得られる
在庫状況だけ別エンドポイントになっている
商品在庫状況エンドポイント
末尾はproductId
末尾skuでもいける
こいつはレスポンスが遅い
たぶん本当に在庫状況を調べる必要があるが重い処理なのでこれだけ別エンドポイントになっているんだろう
商品マスタDBとは別に流通・在庫状況DBがありそう
jp.louisvuitton.com のJSON
ストーリーJSON
巨大なJSONだけどどう解釈したらいいのか謎