所谓GeoIP,就是通过来访者的IP,定位他的经纬度,国家/地区,省市,甚至街道等位置信息。这里面的技术不算难题,关键在于有个精准的数据库。有了准确的数据源就奇货可居赚点小钱,可是发扬合作精神,集体贡献众人享用是我们追求的。

Hostip.info提供了一个平台,可以添加已知的数据信息,可以免费获取数据库。同时,提供了简单易用的API,可以获取特定IP的位置信息,还有国家旗帜。API所返回的数据格式,除了最常见的HTML外,还提供了GML格式的,赞!

http://api.hostip.info/get_html.php?ip=159.226.115.22&position=true 返回HTM格式的数据;

http://api.hostip.info/?ip=159.226.115.22&position=true 返回GML文件;

http://api.hostip.info/flag.php?ip=159.226.115.22 返回所在国家或地图的旗帜。(最终是形如http://api.hostip.info/images/flags/cn.gif 格式的图片文件,在Silverlight中无法应用。)

全面一点的,更加精确一点的数据库,MaxMind GeoIP,不过是收费的。写本文时发现Hostip.info多个页面都有MaxMind的链接,是纯粹的广告,还是后面是一家子?

若试图单纯用JavaScript和Silverlight去获取来访者的IP似乎没法实现,需要借助PHP或者ASP.NET等。但Google同学有一款API:google.loader.ClientLocation
可以通过JavaScript获取到来访客户的位置信
息:ClientLocation.latitude,ClientLocation.longitude,ClientLocation.address.city,ClientLocation.address.country,ClientLocation.address.country_code,ClientLocation.address.region。
(为什么没给出IP属性呢?)

其实,Hostip的API中若不给定IP,那么返回的就是访问者IP的位置信息,试试:

http://api.hostip.info/get_html.php?position=true

正当一周前俺犹豫上述内容过于简单,而迟于整理成为博客的第二天,从ESRI Code Gallery的示例GeoIPLocator中挖掘到它所利用的服务 支持更多的操作,比如可以直接从域名来获取位置信息,返回的国家旗帜是jpg格式的(http://marceloctorres.net/espiadns/images/flags/cn.jpg )。借助oxygen xml editor的WSDL SOAP分析器,对该服务进行分析,可以查看它支持4个操作,并可以试试发送请求及其返回的信息。

UPDATE2010/5/4: 再增加一个API提供者: http://ipinfodb.com/ Are you looking for the geographical location of an IP address? You are at the right place. We offer a wide range of free services based on our IP address geolocation database:

  • Web based IP geolocation lookup
  • IP geolocation API (XML, JSON and CSV format)
  • API that generate IP CIDR by country for iptables or htaccess blocklist
  • E-commerce fraud detection API
  • IP database updated monthly!

PS:谁有免费的WSDL SOAP分析器推荐一下?

PS2:如果下载运行GeoIPLocator的源码,除Silverlight的开发环境外,需要ESRI Silverlight的库。更重要的,如果你不是Windows 7 OS,需要更改web.config文件,或者干脆重新引入一下上述服务。

PS3:Nikhil Kothari提供了类似的地图定位小示例,直接提取了hostip返回的HTML信息,并定位在Bing Maps Silverlight Control上。

PS4:相对最早,Scott Hanselman介绍了如何用ASP.NET使用hostip的API,以及用LINQ解析hostip返回的GML信息。同时Nikhil和它都提到了google.loader.ClientLocation。

PS5:顺便发现 google.load API挺好用,可以在Visual Studio里使用jQuery的智能提示,用Google来托管jQuery文件。

GeoIP简介与资源,定位经纬度,获取用户IP的更多相关文章

  1. Flask框架获取用户IP地址的方法

    本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最 ...

  2. C# 获取用户IP地址(转载)

    [ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...

  3. 【用jQuery来判断浏览器的类型】及【javascript获取用户ip地址】

    用jQuery来判断浏览器的类型,主要是使用$.browser这个工具类,使用方法: $.browser.['浏览器关键字'] //谷歌浏览器.360浏览器等其他一些浏览器,没有专门的判断 funct ...

  4. Tomcat的配置,设置内存,获取用户IP

    一.修改配置文件 tomcat配置文件路径/tomcat/bin/server.xml # shutdown指定终止Tomcat服务器运行时,发给Tomcat 服务器的shutdown监听端口的字符串 ...

  5. 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)

    分析过程 这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的. 一般朋友,都会看到如下通用获取IP地址方法. function getIP() { if (isset($_ ...

  6. CDN 环境下获取用户IP方法

    CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...

  7. go 通过nginx代理后获取用户ip

    go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Re ...

  8. PHP:获取用户IP

    文章来源:http://www.cnblogs.com/hello-tl/p/7685263.html //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1 ...

  9. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

随机推荐

  1. js推箱子

    <head> <meta charset="utf-8" /> <title></title> <script> //创 ...

  2. Luogu - P1018 乘积最大 - 题解

    原文:https://www.luogu.org/problemnew/solution/P1018?page=7 题目:P1018[乘积最大] 前言: 这题的正解理论上说是DP,可是由于民间数据太水 ...

  3. 基于网络拓扑图通过RCMS对网络进行配置

    目录 基于网络拓扑图通过RCMS对网络进行配置 一些基本命令 对网络拓扑图1的简单配置 二层交换机S3 三层交换机 S2 实验结果 对网络拓扑图2的简单配置 NAT.ACL配置公网IP 基于网络拓扑图 ...

  4. 从nsurlsession、Alamofire到moya

    更好的理解(抽象).更少的构建(配置).更方便的表达(语言) 一.iOS系统的网络编程(DSL概念) ios缺省的网络编程只是给出了网络编程的基本概念: urlsession.request.resp ...

  5. 一起来学习.net core程序使用中介者模式:MediatR插件

    中介者模式是一种常见的设计模式,旨再降低程序的耦合性,因为传统的三层模式层层之间需要显示的调用,必须上层依赖下层,耦合性很高,为了解耦,将所有的指令单独放在一个位置处理,其他位置均通过这个位置来间接的 ...

  6. jsp,servlet文件上传问题完善

    1. 上传文件时文件名中文乱码 upload.setHeaderEncoding("utf-8"); 有个疑惑: 不管设置不设置都不乱码,但是刘帅龙老师讲的时候出现了乱码 . 2. ...

  7. Windows 10 下 GCC / LLVM 的安装和使用

    win10下gcc的安装和makehttps://www.jianshu.com/p/46824c62dfed 方案1:直接官方下载安装minGw或Cygwininstall download: ht ...

  8. 记录一次Oracle创建DBLink踩到小坑

    1.查询当前是否具有创建DBlink的权限: select * from user_sys_privs where privilege like upper('%DATABASE LINK%'); 如 ...

  9. .Net core 如何生成Nuget包

    以前引用了很多neget包,觉得nuget包方便了很多,是不是有些通用的代码可以封装到nuget中,想要用的时候引用就可以了, 这样其实有两个好处: 1. 首先不用重复的coding,节约了时间. 2 ...

  10. Prometheus学习笔记(3)什么是node_exporter???

    目录 Node_exporter安装配置启动 Node_exporter安装配置启动 node_exporter安装在被监控端,安装方式也比较简单,直接下载解压安装即可,默认启动后监听9100端口. ...