2013年6月に、掲示板に大量のスパム投稿されたことをきっかけに、

ここのホームページのアクセス状況がどんな感じなのかが

非常に気になったので、ちょっと調べてみました〜。


たまちかのホームページにアクセスしてくるIPアドレスは、

月に1000IPアドレスくらいありました。

毎月1000人の方がこのページを見てくださってるのですね〜。

感謝感謝です。

あ、でもインターネット常時接続じゃなくて、

接続するたびにIPアドレスが変わるような方もいるかもなので、

実際の人数はもっと少ないかもですね。


で、そのIPアドレスがどの地域からのものなのかを見てみました。(下図)

日本からのアクセスが多いのは当然なのですが、

以外と海外からのアクセスが多かったかも。

日本のクレイジーさを世界に知らしめちゃってるわけですね^_^;

いや、これも一種のCool Japanと言うことで・・・・・。

英語ページ作った方がいいのかなぁ。

掲示板は英字のみの文章だと書き込めないようになってるし・・・・・。


ついでに日本のIPアドレスの中で、

どの都道府県からのアクセスであるかを調べてみました〜。

東京と神奈川からのアクセスだけで5割超えてます^_^;

どんだけこの地域には変態紳士がおるねん!!

ってことになっちゃいますが、

たぶん、各プロバイダーの本社がその地域に集中しているから???

国の特定は、IPアドレスの割り振りでわかりますが、

そこから先のプロバイダーに割り振られた後のIPアドレスの使い方は、

各社の裁量にまかされているのでしょうかね〜。

(たまちかはネットワークの素人なので詳しく知らないよ〜。)


ってことで、地域の特定はあんまり当てにならないようです。


 ちょっとだけ
 調べてみましたわ♥

で、IPアドレスから、アクセスしている地域の特定には、

MaxMind社が無料で提供している

地理位置情報データベース(GeoLiteCity)と

C/Perl用APIを使ってみましたよ〜。

下みたいに、以外と簡単にできちゃうのね。

Windows用にはフリーソフトがあるみたいです。

#!/usr/local/bin/perl

use Geo::IP;


&header_func;
&geo_ip_city_func;
&footer_func;
exit;


sub header_func
{
	print "Content-type: text/html¥n¥n";
	print "<html>¥n";
	print "<head>¥n";
	print "<meta http-equiv=¥"Content-type¥" CONTENT=¥"text/html; charset=Shift_JIS¥">¥n";
	print "<title>IPアドレスから県名を調べるよ〜!!</title>";
	print "</head>¥n";
	print "<body>¥n";
}

sub footer_func
{
	print "<br><br>¥n";
	print "<center>This product includes GeoLite data created by MaxMind,<br>¥n";
	print "available from <a href=¥"http://www.maxmind.com¥">http://www.maxmind.com</a>.</center><br>¥n";
	print "</body>¥n";
	print "</html>¥n";
}

sub geo_ip_city_func
{
	@region = (
			"",
			"愛知県",
			"秋田県",
			"青森県",
			"千葉県",
			"愛媛県",
			"福井県",
			"福岡県",
			"福島県",
			"岐阜県",
			"群馬県",
			"広島県",
			"北海道",
			"兵庫県",
			"茨城県",
			"石川県",
			"岩手県",
			"香川県",
			"鹿児島県",
			"神奈川県",
			"高知県",
			"熊本県",
			"京都府",
			"三重県",
			"宮城県",
			"宮崎県",
			"長野県",
			"長崎県",
			"奈良県",
			"新潟県",
			"大分県",
			"岡山県",
			"大阪府",
			"佐賀県",
			"埼玉県",
			"滋賀県",
			"島根県",
			"静岡県",
			"栃木県",
			"徳島県",
			"東京都",
			"鳥取県",
			"富山県",
			"和歌山県",
			"山形県",
			"山口県",
			"山梨県",
			"沖縄県" );
	
	my $addr = $ENV{ 'REMOTE_ADDR' };
	my $gi = Geo::IP->open( "Geo/GeoLiteCity.dat", GEOIP_STANDARD );
	my $r = $gi->record_by_name( $addr );
	
	if ( $r )
	{
		if ( $r->region >= 1 && $r->region <= 47 )
		{
			print "<br><center>もしかして " . $region[ $r->region ] . "民 ですか〜!!</center><br>¥n";
		}
		else
		{
			print "<br><center>もしかして 外国の方 ですか〜!!</center><br>¥n";
		}
		
		print "<center><br><br>¥n";
		print "で、あってましたか〜〜〜!!<br>¥n";
		print "まあ、あんまり精度よくないみたいですので<br>¥n";
		print "気にしないでくださいね・・・・・。<br><br>¥n";
		print "</center>¥n";
	}
	else
	{
		print "<br><center>エラーが発生しましたよ〜!!</center><br>¥n"	
	}
}

http://www.maxmind.comhttp://www.maxmind.comshapeimage_4_link_0shapeimage_4_link_1