我想编写一个接受 IP 地址并返回与之关联的国家/地区的命令行程序。
例如:67.99.163.76 将输出“美国”。
您可以使用地理编码 gem。它的功能非常丰富,并且对 Rails 和其他基于机架的框架有很好的支持。当然,您也可以在这些框架之外使用它作为 api 和控制台。来自控制台的一个小样本:
geocode 67.99.163.76
纬度:42.7684
经度:-78.8871
完整地址:Buffalo, NY 14260, United States
城市:布法罗
州/省:纽约
邮政编码:14260
国家:美国
谷歌地图: http://maps.google.com/maps?q= 42.7684,-78.8871
您可以通过查询 freegeoip 只使用标准库来做到这一点:
require 'net/http'
require 'json'
ip = "67.99.163.76"
uri = URI.parse("http://freegeoip.net/json/#{ip}")
client = Net::HTTP.new(uri.host, uri.port)
res = JSON.parse(client.get(uri.request_uri).body)
puts res["country_name"]