Base64をJSONに変換:Cookieデータを安全に読む方法
Digital Account Market
· 最終更新:
Cookieやセッションのデータだとされる、英数字がずらりと並んだ読めない長い文字列。その中身を実際に読むために、Base64からJSONへの変換が必要になることがあります。出品者やブラウザ拡張機能、インポート用の管理画面から渡された文字列で、別のツールに渡す前にどんな項目が入っているのか確認したい、という場面です。
このガイドでは、Base64の文字列を見分ける方法、無料ツールで整形済みのJSONにデコードする手順、よく出るエラーの直し方、そして管理画面がBase64形式を求めるときにJSONを再エンコードする方法を説明します。CookieやトークンはBase64から戻すと機密性の高い値なので、デコード後のデータを非公開に保つ方法も取り上げます。
Base64とは?CookieやトークンがBase64で包まれる理由
Base64は、引用符や波括弧、日本語などを含むあらゆるデータを、安全な64種類の文字だけで表す方式です。使われるのはAからZ、aからz、0から9、そして記号の+と/です。生の記号や改行をうまく扱えないシステムでも、Base64なら全体がコピーしやすいただの文字列になるため、データを運べます。
実際にCookieのBase64文字列を目にするのはこのためです。セッションデータをJSONで書き出すツールは、テキストボックスやURLのパラメーター、チャットのメッセージで壊れないように、中身をBase64で包むことがあります。インポート用の管理画面も、取り込むときに同じ形式を求める場合があります。
大事な点として、Base64は暗号化ではなく「エンコード」です。パスワードも鍵もなく、文字列を持っている人なら誰でも元のテキストに戻せます。そのため、この文字列は中身のデータそのものと同じ扱いにしてください。
Base64の文字列を見分ける方法
デコードする前に、本当にBase64かどうかを確認しましょう。次の3つのチェックでたいてい判断できます。
使われている文字
標準的なBase64の文字列は、英字、数字、+、/だけでできています。コロンや単語の間のスペース、アットマークが見えるなら、別の形式の可能性が高いです。username:password:email:email_password:auth_token のような納品行はコロン区切りのテキストであってBase64ではないため、どのデコーダーでも意味のある結果は得られません。
パディング
Base64は4文字を1グループとして処理します。最後のグループにデータが足りないときは、パディングとして=が1つか2つ付きます。末尾が=や==なら有力な手がかりですが、長さがちょうど合う場合は=がなくても正しい文字列です。また、わざとパディングを外すツールもあります。
見分けがつく冒頭部分
JSONのオブジェクトは波括弧と引用符で始まり、この2文字は必ず同じ並びにエンコードされます。eyJで始まる文字列はほぼ確実にJSONのオブジェクトで、W3siなら多くの場合オブジェクトのリスト、WyJなら文字列値のリストです。手元の文字列がこの形で始まっているなら、デコードするとJSONになるはずです。
判断に迷うときは、サンプルを形式判別ツールに貼り付けてください。使われている文字種、パディング、長さを調べて、Base64なのか、JSONなのか、それ以外なのかを教えてくれます。
Base64をJSONに変換:無料ツールでデコードする
Base64→JSON変換ツールは、すべてブラウザ上で処理します。何もアップロードされないので、文字列はお使いの端末の外に出ません。
- 入力欄にBase64の文字列を貼り付けます。正しい結果の見た目を先に確認したい場合は、サンプルのボタンを使ってください。
- 結果はすぐに表示されます。デコードした内容が正しいJSONなら、スペース2つのインデントで整形されるので、入れ子の項目も見渡しやすくなります。
- 構造を確認したら、コピーボタンでJSONを持ち出せます。
このツールは、デコードの前にスペースと改行を取り除き、バイト列をUTF-8として読み取ります。そのため、日本語や、アクセント付きの文字も、文字化けせずに正しく表示されます。試しに eyJ1c2VyIjoiaGVzYXAxIiwidG9rZW4iOiJhYmMxMjMifQ== を貼り付けると、userという項目とtokenという項目を持つオブジェクトが得られます。
デコード結果が読めるテキストでもJSONではない場合、ツールは結果を捨てずにそのままテキストとして表示します。トークン単体ではよくあることで、これも立派なデコード成功です。
デコードエラーの対処:パディング・改行・URL-safe形式
デコードに失敗する原因は、ほとんどが次のどれかです。
パディングの欠け
文字列が途中で切れたか、=が取り除かれています。eyJpZCI6MX0= と eyJpZCI6MTIzfQ== を比べてみてください。前者は=が1つ、後者は2つ必要です。長さが4の倍数になるまで=を足します。ただし、長さを4で割った余りが1になる文字列だけは例外です。これはパディングでは直らず、コピーの途中で文字が欠けているため、元の文字列をもう一度コピーし直す必要があります。
改行や余分なスペース
メールソフトやチャットアプリ、テキストファイルでは、長い文字列が複数行に折り返されることがよくあります。この改行はデータの一部ではありません。このツールは自動で取り除きますが、ほかのデコーダーでは取り除かれない場合があります。
URL-safe形式
Webアドレス向けの文字列では、リンクの中で壊れないように+を-、/を_に置き換えています。標準のデコーダーはこの2文字を受け付けません。-をすべて+に、_をすべて/に置き換え、パディングを戻してから、もう一度デコードしてください。
アカウント行を貼り付けてしまった場合
コロン区切りの納品データを何行も貼り付けた場合、ツールは「アカウント一覧のようです」と知らせます。このテキストに必要なのはデコーダーではなく、列を分ける道具です。区切り文字で分割するツールを使って、必要な項目を取り出しましょう。
JSONからBase64へ:必要なツール向けに再エンコードする
管理画面やインポートツールによっては、セッションデータをそのままのJSONではなくBase64で求めてきます。この方向の変換はJSON→Base64変換ツールで行えます。JSONを貼り付け、1行にまとめたコンパクト出力か、インデント付きの読みやすい出力かを選び、結果をコピーします。たいていのインポートでは、文字列がいちばん短くなるコンパクト出力が無難です。
ツールは最初にJSONを検証するので、カンマの抜けや閉じ忘れの波括弧は、壊れたデータをエンコードしてしまう前に見つかります。エンコードはUTF-8で行われるため、往復しても安全です。文字列をデコードし、1つの項目だけ書き換えてもう一度エンコードしても、ほかの項目は元のまま戻ります。
CookieがNetscape形式のテキストファイルにある場合は、Netscape Cookie変換ツールで変換し、解説記事のNetscapeのCookieをJSONに変換する方法も参考にしてください。auth_tokenを使う場合は、auth_tokenでTwitterにログインする方法をご覧ください。
デコードしたデータを非公開に保つ
デコードしたCookieやセッションのデータには、アカウントの鍵のように働くトークンが含まれていることがあります。次の習慣を守っておくと安心です。
- ローカルで作業する。入力をアップロードしないブラウザ上のツールのほうが、中身を確認できないサーバーにテキストを送る適当なサイトよりも適しています。
- デコードした値を、公開チャットやチケット、スクリーンショットに貼り付けない。相談するときは、項目名だけを共有します。
- 元の文字列はそのまま残し、コピーをデコードして、作業が終わったら作業用ファイルを削除する。
ここで紹介したような単純で繰り返しできる変換なら、ローカルの変換ツールで十分なことがほとんどです。判断のしかたは、ローカルの形式変換ツールで足りるケースで解説しています。アカウントを選ぶ準備ができたら、エイジドアカウントのカテゴリを見て、納品からログインまでの間の作業には無料のツール一覧ページを活用してください。
よくある質問
文字列がBase64かどうかは、どう見分けますか?
3点を確認します。英字・数字・+・/だけで構成されていること、長さが4文字ごとのグループに合い、末尾に=のパディングが付く場合があること、そしてJSONのオブジェクトを含む場合は多くがeyJで始まることです。形式判別ツールを使えば、この確認を自動で行えます。
Base64をデコードすると読めない文字になるのはなぜですか?
元のデータが画像や圧縮データのようにそもそもテキストではなかったか、別の文字コードが使われていた可能性があります。URL-safe形式の文字列を、事前に変換せずにデコードした場合も文字化けします。
末尾の=は何を意味しますか?
パディングです。Base64は4文字のブロック単位でエンコードするため、データが足りないときに最後のブロックを=が1つか2つで埋めます。=自体には情報は含まれていません。
Base64は暗号化の一種ですか?
いいえ。Base64はデータの書き方を変えるだけで、誰でも鍵なしで元に戻せます。Base64の文字列も、読めるデータと同じように守ってください。
JSONをBase64に戻すにはどうしますか?
JSONをJSON→Base64変換ツールに貼り付け、コンパクト出力かインデント付き出力かを選んで、結果をコピーします。不正なJSONは、エンコードの前にツールが知らせます。

