二〇〇五年 睦月 十六日 日曜日■ アクセスログの referer を見る [/this_blog/perl]この記事は書かれてから1年以上経過しています。内容が古くなっている可能性があります。コメントの受付は終了しました。 アクセスログの referer には、ページを見に来てくれた人が、どのページから飛んできたかが記録されている。(ただし、ブラウザによっては、referer を返さなかったり、任意の referer を返すように設定できるので、信用はできない。) それで、このブログのアクセスログを見ていたところ、Google から来る人が結構いらっしゃる。そのときは、referer の中に検索した文字列も含まれているのだが、日本語は URL エンコードされていて、そのままではなんのことだか分からない。そうなると、検索文字列を知りたくなるのが人情というもので、エンコードされた referer を受け取って、デコードしてから文字コードを EUC に変換するサブルーチンを作ってみた。 なお、Encode モジュールは perl 5.8 から標準装備になった。 use Encode; use Encode::Guess qw(euc-jp shiftjis 7bit-jis); my $raw_referer = shift @_ or return 'n/a'; my $referer = $raw_referer; $referer =~ tr/+/ /; $referer =~ s/%([a-f\d]{2})/pack 'H2', $1/egi; my $decorder = guess_encoding $referer; return $raw_referer unless ref($decorder); encode 'euc-jp', $decorder->decode($referer); 「初等幾何」と「篠崎史子」で最初のページにでるのか。なかなか不思議な組み合わせだ。 関連記事: ・スパムプロクシ [/this_blog/perl] ・Encode と Jcode [/this_blog/perl] |
カテゴリ
[/language] (98) 最新記事
◇ パスワードについてのあなたの常識はもはや非常識かもしれない・その1 [/links] |