Ruby で IPアドレスからロケーション情報を拾ってみる

Ruby で IPアドレスからロケーション情報を拾ってみる

Ruby で IPアドレスからロケーション情報を拾ってみる

Ruby で IPアドレスからロケーション情報を拾ってみる へのコメントはまだありません

なんとなくできるかなと思って試したら、Mechanizeで簡単に実装できたので紹介。

以下のソースを test.rbなどとして保存し、コマンドライン引数にIPアドレスを与えて実行すると、ロケーション情報を出力する。実装方法はWebでロケーション情報を提供しているページに対して、POSTでリクエストを投げつけて、Responseを拾うという方式。なので、ループ処理などでやたらめったらリクエストを投げ続けたら、多分文句言われますので、利用はほどほどに。

第一引数: IPアドレス
第二引数: サイトNo (1 or 2 default 1)

ソースコード (test.rb)

[ruby]

require ‘mechanize’
require ‘json’
client = Mechanize.new

ipaddr = ARGV[0]
siteno = ARGV[1].nil? ? 1 : ARGV[1]

pp “siteno=” + siteno.to_s

if siteno == 1
url = “http://ip2loc.jerodsanto.net/lookup”
ret = client.post(url,{ip: ipaddr})
else
url = “http://www.yougetsignal.com/tools/network-location/php/get-network-location-json.php”
ret = client.post(url,{remoteAddress:ipaddr,geoSource:”geoip”})

end

json_data = JSON.parse(ret.body)

json_data.each do |key,value|
p key + “–” + value.to_s

end

[/ruby]

実行結果1 (ip2loc.jerodsanto.netを利用)

[bash]
$ ruby test.rb 42.83.7.20 1
“siteno=1”
“request–42.83.7.20”
“ip–42.83.7.20”
“country_code2–JP”
“country_code3–JPN”
“country_name–Japan”
“continent_code–AS”
“region_name–25”
“city_name–Miyazaki”
“postal_code–”
“latitude–31.911100000000005”
“longitude–131.4239”
“dma_code–”
“area_code–”
“timezone–Asia/Tokyo”
[/bash]

実行結果2 (www.yougetsignal.comを利用)

[bash]

$ ruby test.rb 42.83.7.20 2
“siteno=2”
“status–Success”
“ipAddress–42.83.7.20”
“hostname–42-83-7-20.btvm.ne.jp”
“baseDomain–ne.jp”
“countryCode–Unknown”
“countryFlag–<img src=\”/img/flags/.gif\” alt=\”\” />”
“countryName–Unknown”
“region–Unknown”
“city–Unknown”
“latitude–Unknown”
“longitude–Unknown”
“areaCode–Unknown”
“postalCode–Unknown”
[/bash]

以上

About the author:

Tags:

Related Posts

Leave a comment

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Back to Top