所谓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. python安装 hanlp +使用 坑坑坑。。。填填填。。。

    刚开始用都不知道要怎么安装,包括什么文件.百度了下发现正常安装就可以用,不用下多余的东西,但是但是但是但是但是但是但是但是 用pycharm安装不行,pip安装不行,也是见鬼了. 解决方法: 1.手动 ...

  2. golang知识精要(一)

    一.第一章 命令行参数可通过os.Args访问,os.Args是切片 切片遵循左闭右开原则,如sl[1:3]不包含下标为3的元素 for循环两种方式 方式一: for initial; conditi ...

  3. deepin安装卡在deepin标志界面解决方案

    再次重启前将U盘插上,进系统前按快速选择启动装置F12(不同品牌电脑可能不同),选择从U盘启动: 进入第一个安装界面时一定要注意:在跳转前,按E进入grub设置界面,移动光标到倒数第二行的”quiet ...

  4. 『Andrew and Chemistry 树同构』

    Andrew and Chemistry Description During the chemistry lesson Andrew learned that the saturated hydro ...

  5. 基于Mybatis-Plus实现自动化操作创建时间和修改时间

    引入 在实际开发中,总会避免不了操作数据库,而在数据库中每个表都会有create_time和update_time字段记录操作时间,我们在操作这两个时间的时候也可能会出现不一致的情况,或者说这两个字段 ...

  6. Golang 是否有必要内存对齐?

    原文:https://ms2008.github.io/2019/08/01/golang-memory-alignment/ 内存模型 Posted by ms2008 on August 1, 2 ...

  7. Beyond Compare 4 30天评估期结束的解决办法

    修改注册表 regedit注册表中删除项目:HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4\CacheId 删除dll 重命名 ...

  8. MySQL导入数据报错Got a packet bigger than‘max_allowed_packet’bytes错误的解决方法

    由于max_allowed_packet的值设置过小的原因,只需要将max_allowed_packet值设置大一点就OK了.通过终端进入mysql控制台,输入如下命令可以查看max_allowed_ ...

  9. 量化金融策略开源框架:QUANTAXIS

    简介: QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案,是一个从数据爬取.清洗存储.分析回测.可视化.交易复盘的本地一站式解决方案. QUANTAXIS量化金融策略框架 ...

  10. NumPy 之 ndarray 多维数组初识

    why 回顾我的数据分析入门, 最开始时SPSS+EXCEL,正好15年初是上大一下的时候, 因为统计学的还蛮好的, SPSS傻瓜式操作,上手挺方便,可渐渐地发现,使用软件的最不好的地方是不够灵活, ...