[PHP] IPアドレスから地域を判定するNet_GeoIPとGeoIP
- Fri
- 22:40
- PHP
最近は、ニュースのどうでもいい個人的感想が続いてたので、久々にコードのサンプルを。
Package Information: Net_GeoIP
PECL :: Package :: geoip
pear か pecl で入れるかの違いだけで、データとしては同じMaxMindのものを使えるようです。
pearの場合は、Net_GeoIP。
peclの場合は、geoip。
MaxMindは下記から。国レベルで、99.5%の精度とのことですが、運用しているとそこまで高くないような気がします。
MaxMind - GeoLite Databases | Free IP Geolocation Database
この辺りはレンタルサーバによって、デフォルトで入れてくれるものもあるかもしれません。私の環境には入ってなかったので、Net_GeoIPを$HOME下に展開して使っています。
ということで、Net_GeoIPでテスト。GeoIPはPHP: GeoIP - Manualを。
net_geoip.php
いつものYahoo!さんで確認。IPは下記を使用。
PING www.g.yahoo.co.jp (203.216.227.245)
PING ds-any-fp3-real.wa1.b.yahoo.com (72.30.2.43)
PING www.visitlondon.com (31.222.175.205)
www.standard.co.uk や www.london2012.com はUnited Statesと判定されました。
どうもアカマイのようなCDN経由で返されるところはみんなUSか自国にあれば自国のIPかもしれません。
私のレンタルサーバはアメリカにあるので、United Statesと判定してるのかと推測。
Package Information: Net_GeoIP
PECL :: Package :: geoip
pear か pecl で入れるかの違いだけで、データとしては同じMaxMindのものを使えるようです。
pearの場合は、Net_GeoIP。
peclの場合は、geoip。
MaxMindは下記から。国レベルで、99.5%の精度とのことですが、運用しているとそこまで高くないような気がします。
MaxMind - GeoLite Databases | Free IP Geolocation Database
この辺りはレンタルサーバによって、デフォルトで入れてくれるものもあるかもしれません。私の環境には入ってなかったので、Net_GeoIPを$HOME下に展開して使っています。
ということで、Net_GeoIPでテスト。GeoIPはPHP: GeoIP - Manualを。
net_geoip.php
#!/usr/local/bin/php
<?php
set_include_path (".:/usr/local/php5/lib/php:/home/user01/pear/pear/php");
include "Net/GeoIP/GeoIP.php";
$ip = @$argv[1];
if (strlen($ip) == 0) {
exit(0);
}
$geoip = Net_GeoIP::getInstance(
"/home/user01/pear/pear/data/Net_GeoIP/GeoIP.dat"
, Net_GeoIP::MEMORY_CACHE
);
$cname = $geoip->lookupCountryName($ip);
$ccode = $geoip->lookupCountryCode($ip);
print "*** IP=$ip\n";
print "*** $ccode::$cname\n";
いつものYahoo!さんで確認。IPは下記を使用。
PING www.g.yahoo.co.jp (203.216.227.245)
PING ds-any-fp3-real.wa1.b.yahoo.com (72.30.2.43)
PING www.visitlondon.com (31.222.175.205)
$ ./net_geoip.php 203.216.227.245
*** IP=203.216.227.245
*** JP::Japan
$ ./net_geoip.php 72.30.2.43
*** IP=72.30.2.43
*** US::United States
$ ./net_geoip.php 31.222.175.205
*** IP=31.222.175.205
*** GB::United Kingdom
www.standard.co.uk や www.london2012.com はUnited Statesと判定されました。
どうもアカマイのようなCDN経由で返されるところはみんなUSか自国にあれば自国のIPかもしれません。
私のレンタルサーバはアメリカにあるので、United Statesと判定してるのかと推測。
$ ping www.london2012.com
PING a1479.w7.akamai.net (107.14.42.26)
$ ./net_geoip.php 107.14.42.26
*** IP=107.14.42.26
*** US::United States
$ ping www.standard.co.uk
PING a1165.g1.akamai.net (107.14.42.59)
$ ./net_geoip.php 107.14.42.59
*** IP=107.14.42.59
*** US::United States
- 関連記事
-
- PHPのreaddir って何順?
- PHP の URLパラメータをダンプ
- [PHP] IPアドレスから地域を判定するNet_GeoIPとGeoIP
- PHPのコマンドライン引数(argv、argc そして getopt)
- PHPによるcurl(POST)リクエストの送信
Comment
Trackback
- URL
- https://nosource.blog.fc2.com/tb.php/80-4c32ff78
- この記事にトラックバック(FC2Blog User)