更新 2018.1.28 17:38閲覧 2146

日本語 URL のアクセスログをデコードする

URL には、アルファベットと一部記号しか使用してはならない決まりがあるため、日本語を使う場合にはパーセントエンコーディングする必要があるが、これをアクセスログで見ても、何のページか判別しがたいのでデコードする方法を模索してみた。

端末で nkf する

  1. パッケージマネージャから nkf をインストール
  2. アクセスログをダウンロードし、端末で以下を実行
  3. nkf --url-input --overwrite '/tmp/access.log'
  4. テキストエディタで開く

Geany の選択範囲を nkf する

  1. パッケージマネージャから Geany と nkf をインストール
  2. Geany を起動して、メニューの「編集 → 書式(F) → 選択範囲を送る(S)」から「カスタムコマンドを設定」をクリック
  3. 「カスタムコマンドを設定」ウィンドウで「追加(A)」ボタンを押して、コマンド欄に「nkf --url-input」と入力し、「OK(O)」ボタンを押す
  4. Geany でアクセスログを開き、エンコードされた部分を範囲指定してから、「編集 → 書式(F) → 選択範囲を送る(S)」の「nkf --url-input」をクリック

rawurldecode


<!doctype html>
<html lang=ja>
    <head>
        <meta charset=utf-8>
        <title>logoutput</title>
    </head>
    <body>
        <pre><?=rawurldecode(file_get_contents('/tmp/access.log'))?></pre>
    </body>
</html>

注意点

  • 端末の nkf に --overwrite を含めなければ、端末上にログが表示される
  • Geany の nkf では、1000 行以上の選択範囲を送るとフリーズするかも
  • デコードしても文字化けているものは、bingbot などが誤エンコードしている可能性が高いので気にしない

コメント

当フォームより収集される個人情報は、返信を要する際に使用されるものであり、法令に基づく行政機関等への提供を除き、ご本人の同意を得ずに第三者に提供することはありません。また、コメントが掲載される場合であってもメールアドレスが本サイト内に記載されることはありません。