HTTP::MobileAgentのIPアドレス判定プラグイン
プラグイン機構がついて、こんなことがキレイに出来たらいいな。
勝手サイトとかでUA偽装されてる可能性があるときに、本当にそのキャリア使ってんのか判定できる。かなりの信頼性で。
別にプラグインじゃなくても Net::CIDR::MobileJP を普通に使えばいいんだけど。
package HTTP::MobileAgent::Plugin::ValidIPAddr; use strict; use warnings; { package HTTP::MobileAgent; use Net::CIDR::MobileJP; sub is_valid_ipaddr { my $self = shift; my $cidr = Net::CIDR::MobileJP->new('net-cidr-mobile-jp.yaml'); my $carrier = $cidr->get_carrier($ENV{REMOTE_ADDR}); $carrier eq $self->carrier; } } 1;
#!/usr/local/bin/perl use strict; use warnings; use HTTP::MobileAgent; use HTTP::MobileAgent::Plugin::ValidIPAddr; local $ENV{HTTP_USER_AGENT} = 'DoCoMo/1.0/P502i/c10'; local $ENV{REMOTE_ADDR} = '192.168.1.1'; # invalid #local $ENV{REMOTE_ADDR} = '210.153.84.1'; # valid my $agent = HTTP::MobileAgent->new; if ($agent->is_valid_ipaddr) { print "valid\n"; } else { print "invalid\n"; }
あと、Net::CIDR::MobileJP は、HTTP::MobileAgent::DoCoMoDisplayMap みたいなデータ埋め込んであるやつもモジュール内に欲しいかも。モジュールの更新頻度高くなるのがアレだけど。
いらんか。使う側で自分で作れって話だな。