$unescaped = Encode::decode('utf8', $unescaped);
無条件にutf8でデコードしていたのだがEZはshif-tjisを使っている。 というわけでEZのときだけshift-jisでデコードし、それ以外はutf8でデコードするようにした。
ちなみにrefererによる動作を確認するには以下のようなスクリプトを使う。
use LWP::UserAgent;
use strict;
use warnings;
my $url = "http://sample.com/cgi-bin/test.cgi";
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => "$url");
$req->referer("http://ezsch.ezweb.ne.jp/search/?sr=0101&query=aiueo%20%95a%93I");
my $res = $ua->request($req);
if($res->is_success){
print $res->content;
}else{
print $res->status_line;
}
bing, yahoo, googleはブラウザから検索すればいいのだがauの携帯がないのでEZの場合はこれを使った。 そこで気付いたのだがezschのquery文字列は短い。これがshift-jisのメリットか。
$req->referer に設定しているのは、実際にアクセスがあったログのHTTP_REFERERである。