Ruby 如何获取用户 IP 和地理信息?

zhangjingqiang · 2012年03月09日 · 最后由 sevk 回复于 2012年03月25日 · 6395 次阅读

更新 facebook 密码时,发一封邮件给用户,提示在哪个 IP 下、哪个国家哪个地区位置改变的密码。

比如: Chaoyang, Beijing, CN (IP:XX.XX.XX.XX)

这几个信息是如何取得的?

关于具体位置,是用经度、纬度取得的?

ip 地址就 request.remote_ip 就拿到了呀。。然后用 ip 库查到是哪里的。 什么雪儿 ip 库什么的

我试了 request.remote_ip,结果返回的是:127.0.0.1 而我用 facebook 的测试,实际 IP 是动态的随机的一个。

#2 楼 @zhangjingqiang 你的 Rails 应用部署的时候,是不是反向代理的?

#3 楼 @zhangyuan 他在自己电脑上启动了一个开发环境试的。。。

#4 楼 @ywencn 是的,生产环境就没问题了?

#5 楼 @zhangjingqiang 这和你的部署方式也有关系。比如,如果是用 Nginx 做反向代理,那么就要把服务器名称和 IP 等信息传给后端。

html5 有 geo coding 的功能,可以用来查询地理信息

#8 楼 @hisea 谢谢提示,搜到了这个: https://github.com/alexreisner/geocoder 是我想要的。

恩,Geo coder 不错的,如果需要做前段 (跟 Google Map 之类的结合) 可以看看这个 http://www.mhtml5.com/resources/html5-js-api-%E6%95%99%E7%A8%8B%EF%BC%88%E4%BA%94%EF%BC%89-%E5%9C%B0%E7%90%86%E5%AE%9A%E4%BD%8D

谢谢分享。 我这里有一个日本人写的 Twitter Search API x Google Geocoding API 可以显示指定区域周边半径 n 千米的投稿内容,也可以自己搜索。效果如下: http://zhangjingqiang.my.phpcloud.com 点击下面的 twitter 图标,可见初期值为日本东京都涉谷站半径 3 千米的 twitter 内容。搜索框预设了 Tokyo,30 秒左右更新东京站的内容。 这种方式在日本用得非常多,明天是 311 地震一周年,最近的地震演练用了很多信息化技术,尤其是 twitter、facebook。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号