エルメスオンラインの直リンク・ブックマーク対策。

 今朝気になる商品の型番をメモろうとエルメスオンラインにアクセスしたところ「申し訳ございません!」の表示ばかりだったので、ついにリニューアル+業者対策を施すのかと楽しみにしていたが、URLを変更しただけっぽい(笑)。

 一時しのぎにしかならない。

 下記は婦人バッグのページのURL。

旧:https://www.hermes.com/jp/ja/category/women/bags-and-small-leather-goods/bags-and-clutches/

新:https://www.hermes.com/jp/ja/category/redeisu/batugu-sumorurezagutuzu/batugu-kuratutibatugu/

 なぜか英語表記から日本語のローマ字打ちのような文字列に変わっている(笑)。

 商品ページの直リンクまたはブックマークから飛んでくる業者を排除したいのであれば、全てのURLに引数としてUNIXタイムスタンプを付ければ良い。

 トップページやカテゴリページを表示する際に、各ページへのURLに、

 https://hermes.com/page?ts=1673094105

という具合に。

 この「1673094105」は変換すると2023年 1月 7日 土曜日 21時21分45秒 JSTであり、この引数を付けることで、URLに有効期限を設けることができる。

 例えば有効期限をリンクが生成されてから1時間とするなら1673094105 + 3600 = 1673097705になったら「URLの有効期限が切れました。トップページ(またはカテゴリトップ)からアクセスし直してください」という具合。タイムスタンプなしなら 0 とみなし、その時点で有効期限切れ。

 渡された引数「ts」の値と、サーバーが受け取った現在時刻のタイムスタンプを比較すれば良い。

 しかしこのままでは1日もしなういうちに転売業者に解析され、タイムスタンプを常に現在のものに書き換えてアクセスしてくるので、タイムスタンプ生成時に対で紐付けられたユニークIDをデータベースに登録すれば良い。

 https://hermes.com/page?ts=1673094105&uid=2B2F9DD7-13F0-49AA-BE66-5D06E2B1672A

という具合。

 転売業者は単純なシリアル値であるタイムスタンプを書き換えてアクセスすることはできても、その書き換えたタイムスタンプに対応する「uid」の値は知り得ないので、サーバー側はデータベース上の「ts」と「uid」の両方の値が一致しなければ「無効なURLです」と表示し、商品ページへの直アクセスを排除することができる。

 「uid」の生成アルゴリズムはエルメスの社内機密とする。できればシステム納品後に社内エンジニアが書き換えた方が良い。システム会社が転売業者に買収されるリスクはゼロではないから。

 私のようにエルメスオンラインの商品URLをメモしておいて、ブティックで「これありますか?」と尋ねる場合、有効期限が切れて商品が表示されないと使い物にならない。

 こういうケースにも対応するのであれば、商品ページ自体は表示されるが、有効期限切れのページでは注文ボタンが表示されないようにすれば良い。そうすれば知り合いに商品ページURLを送るといった従来の使い方もできる。

 この仕組みは私は23年前から自前で作り実装しているし、今となっては似たようなものが世界中で使われている熟れた技術なので、すぐにでも導入した方が良い。