アーカイブを見る(picker)
pnpm run api で起動した API は、/ に画面を 1 枚出します。取り込んだページを一覧から選んで、
replay(アーカイブを再生するビューア)で開くための画面で、
この docs では picker と呼びます。できるのは「選んで開く」だけです。ページを撮る機能も、
クロールを始めるボタンもありません。
取り込んだページは、1 ページごとに、 WACZ(Web Archive Collection Zipped)という 1 つのファイルになって保管されています。 picker の 1 行が、そのファイル 1 つです。
http://127.0.0.1:7070/画面は API の名乗り方で変わる
Section titled “画面は API の名乗り方で変わる”API は起動したときに、呼び出し元がどう名乗るかを 1 つに決めます —— JWT(JSON Web Token —— 署名つきの身分証)か、開発用のヘッダか、どちらも受けないか。picker はそれに合わせて、 名乗りの欄を変えます。
API の .env |
名乗り方 | picker に出る欄 |
|---|---|---|
CAPTURE_LEDGER_OIDC_ISSUER が在る |
JWT | トークン 1 つ |
CAPTURE_LEDGER_DEV_IDENTITY=1 だけ |
開発用ヘッダ | subject と organizations の 2 つ |
| どちらも無い | 名乗りの設定が無い | 欄なし(注意だけ) |
両方が在れば JWT です。2 つを同時には受けません —— 両方設定された環境で、弱いほうへ落ちないためです。
クイックスタートのとおりに進めているなら、§6 では開発用ヘッダ、
§7 で 4 行を貼った後は JWT です。どちらで起きているかは、API の起動ログの最後の行
(identity: …)にも出ます(起動ログで確かめる)。
3 手で使う(開発用ヘッダの設定)
Section titled “3 手で使う(開発用ヘッダの設定)”- 2 つの欄に名乗りを入れます。
subjectに自分の名前、organizationsに自分の組織の名前です。 クイックスタートのとおりに進めているなら、whoamiの出力とacme(§7 でクロールを始めるときに名乗る組織)を入れます。 - 「読み込む」を押します。 Enter キーでは読み込まれません。入力を変えたら、毎回押します。
- 見たい行をクリックします。 別のタブで replay が開きます(行をクリックした後)。
3 手で使う(JWT の設定)
Section titled “3 手で使う(JWT の設定)”-
トークンを取ります。 capture-ledger のディレクトリで次を打つと、開発用の issuer (
pnpm run oidc:issuer)が 1 時間有効なトークンを刷り、クリップボードに入ります。 同じコマンドが、画面の枠の中にも出ています。ターミナルウィンドウ pnpm run --silent oidc:token --subject "$(whoami)" --org acme | pbcopy -
「トークン」の欄に貼って、「読み込む」を押します。
-
見たい行をクリックします。
読み込めると、一覧の上に「名前(組織)として見ている」と出ます。API がトークンを検めた結果
(GET /api/me)で、ブラウザはトークンの中身を読みません。トークンを刷るときの --subject と
--org が、開発用ヘッダの設定の 2 つの欄と同じ役をします(名乗りで何が見えるか)。
本物の IdP(Identity Provider —— 身元を証明する外部のサービス)を使う配備なら、
その IdP が出したアクセストークンを貼ります。
絵は開発用ヘッダの設定で、見本データを使って撮ったものです(subject に alice、
organizations に acme)。JWT の設定では、1 と 2 の代わりにトークンの欄が 1 つ出ます。
番号は、下の表の行に対応します。このページの絵はすべて pnpm run docs:shots の生成物で、
手で撮ったものはありません(画面の絵を撮り直す)。
緑のヘッダの「使い方」は、このページを開くリンクです。
| 番号 | 部品 | 何をするか |
|---|---|---|
| 1 | subject |
誰として見るか。自分の名前を入れます。空のまま読み込むと 401 になります。薄い字の alice は入力例です |
| 2 | organizations |
自分が属している組織の名前。複数ならカンマで区切ります(薄い字の acme,beta が入力例)。空でも読み込めますが、見えるのは自分が始めたクロールの成果物だけになります |
| 3 | 読み込む | いまの名乗りで一覧を取り直します |
| 4 | 取り込んだ URL | 取り込んだページの URL。1 行が 1 回の取り込みです。同じページを 3 回取り込めば 3 行になるので、「いつ」で見分けます |
| 5 | いつ | 取り込んだ日時。ブラウザの時計(手元の時間帯)で表示されます。API や DB の値は UTC です |
| 6 | ラベル | 取り込み対象(capture_targets)に付けておいた分類の札 |
| 7 | 欠けあり | 4 列目に赤い字で出ます。本文を保存できなかった応答が 1 つ以上あるアーカイブです(wacz_complete が false になるとき)。開いてから気づかずに済むよう、開く前に出しています |
| 8 | さらに読む | 次の 50 件を下に足します。続きが無くても 1 度は表示されます。押して何も増えなければ、そこで終わりです |
| 9 | 下の注意書き | 名乗りで絞っているのは「一覧に出すかどうか」だけ、という断り書きです(アーカイブ台帳) |
並びは新しい順で、1 ページは 50 件です。検索や絞り込みの欄はありません。 探すときは、ブラウザのページ内検索が使えます。
名乗りで何が見えるか
Section titled “名乗りで何が見えるか”名乗りは「誰として見るか」です。パスワードではなく、検索の条件でもありません。
開発用ヘッダの設定では、2 つの欄の値がそのままリクエストのヘッダになります
(X-Capture-ledger-Subject と X-Capture-ledger-Organizations の 2 本)。
JWT の設定では、picker は貼られたトークンを Authorization: Bearer で送り、
トークンの中の名前と組織が名乗りになります。クロールを始めるときの curl と同じ形です。
名乗りによって、見える行が変わります。見えるのは、次のどちらかに当たるアーカイブです。
| 条件 | 中身 |
|---|---|
| 始めた本人 | そのクロールを始めたときの subject と、いまの subject が同じ |
| 同じ組織の一員 | クロールは、始めた人が名乗った先頭の組織のものになります。見るときに同じ組織名を organizations に入れていれば見えます |
たとえばクイックスタートの §7 は、whoami の出力と acme でクロールを始めます。その成果物は、
同じ名前で名乗るか、acme の一員として名乗れば見えます。
別の名前だけで名乗ると「見えるアーカイブが無い」になります。
判定しているのは OpenFGA の can_view です。モデルの全体は、
アーカイブ台帳の「認可モデル」にあります。
画面に出る文と、その意味
Section titled “画面に出る文と、その意味”開いた直後は、まだ何も訊いていないので、こう見えます(開発用ヘッダの設定)。
見える行が無い名乗りで読み込んだとき(上)と、subject を空にして読み込んだとき(下)です。
名乗りの設定が無い API では、注意だけが出ます。欄も「読み込む」もありません ——
押しても必ず 401 になるからです。
開発用ヘッダの設定の API を 0.0.0.0 で待たせているときは、画面の上に赤い注意が出ます。
| 出る文 | 名乗り方 | 意味 | どうするか |
|---|---|---|---|
| subject を入れて「読み込む」 | 開発用ヘッダ | 開いた直後で、まだ一覧を訊いていない | 2 つの欄に入れて「読み込む」を押す |
| トークンを貼って「読み込む」 | JWT | 開いた直後か、トークンの欄が空 | トークンを取って貼り、「読み込む」を押す |
| 見えるアーカイブが無い | どちらも | API は正常に答えたが、その名乗りで見える行が 0 件 | 下の「空のときに確かめること」を見る |
| 401 — subject が空(この API は開発用ヘッダで名乗る設定) | 開発用ヘッダ | subject を空のまま読み込んだ |
subject を入れる |
| 401 — このトークンは通らない(期限切れ・issuer を起こし直した後・別の issuer のもの)。取り直して貼る | JWT | API がトークンを受け付けなかった | トークンを取り直して貼る。issuer が止まっていれば pnpm run oidc:issuer で起こしてから。落ちた検査(exp など)は、API のログの JWT rejected の行に出ます |
| この API には名乗りの設定が無く、誰の一覧も出せない(全員 401) | 設定なし | .env に名乗りの設定が無い |
.env に CAPTURE_LEDGER_OIDC_ISSUER か CAPTURE_LEDGER_DEV_IDENTITY=1 を書いて、API を起こし直す |
| この API は 0.0.0.0:7070 で待ちながら、名乗りをそのまま信じる | 開発用ヘッダ | 同じネットワークの誰もが、誰にでもなれる | CAPTURE_LEDGER_API_HOST=127.0.0.1 で起こし直すか、JWT の設定に戻す |
| 500 などの数字 — 一覧を取れなかった | どちらも | API の中で失敗した(DB や OpenFGA に届かない、など) | pnpm run api を動かしている端末のログを見る |
空のときに確かめること
Section titled “空のときに確かめること”- まだ何も取り込んでいない。 クイックスタートを順に進めた §6 の時点では、これが普通です。
- 名乗りが、クロールを始めたときと違う。 組織名の綴りを確かめます。
迷ったら、クロールを始めたときと同じ名前と組織で名乗ります
(JWT の設定なら、トークンを刷るときの
--subjectと--org)。 - クロールがまだ途中。 ページが台帳に載るのは、そのページの居た段の報告が届いた後です (まだ終わっていないとき)。 載ってから見えるようになるまでは、長くても 5 秒ほどです —— API が 5 秒おきに、認可の情報を OpenFGA へ届けています。 少し待って「読み込む」を押し直します。
行をクリックした後
Section titled “行をクリックした後”行をクリックすると、別のタブで replay が開きます。
開く URL は、replay の場所と、その WACZ の鍵(objectKey)で組み立てたものです。
http://127.0.0.1:8899/?source=/wacz/<objectKey>replay が最初に出すのは、その WACZ に入っているページの一覧です。 picker の 1 行は 1 ページの取り込みなので、ふつうは 1 件です。 題名をクリックすると、再生が始まります。 上の欄に元の URL と取り込んだ日時が出て、その下が、取り込んだときのページです。
replay の場所は .env の REPLAY_ORIGIN で決まります(既定は http://127.0.0.1:8899)。
replay のコンテナは、pnpm run stack:up で一緒に起動しています。
知っておくこと
Section titled “知っておくこと”- 名乗りの 2 つの欄は、ブラウザに覚えられます。 次に開いたときは、前回の名乗りで自動的に 読み込まれます。別の名乗りを試した後は、戻し忘れに注意してください。
- トークンは、そのタブを閉じると消えます。 トークンはそれ自体が鍵なので、picker はタブの間だけ
(
sessionStorage)覚えます。開き直したら貼り直します。1 時間で切れたときも同じです。 - picker はトークンを刷りません。 刷るのは開発用の issuer で、
127.0.0.1でしか待ちません。 - 開発用ヘッダの設定では、この画面は誰も認証しません。 開発用の画面です。外から届く場所には 出さないでください。
- 絞っているのは一覧だけです。 WACZ の鍵を知っていれば、replay からは誰でも読めます (アーカイブ台帳)。