所谓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. Selenium基础教程(三)自动化插件Katalon

    Katalon-一款好用的selenium自动化测试插件 Selenium 框架是目前使用较广泛的开源自动化框架,一款好的.基于界面的录制工具对于初学者来说可以快速入门:对于老手来说可以提高开发自动化 ...

  2. Hbase操作集锦

    一.Hbase架构与理解 Hbase架构大致如下,图片取自https://www.cnblogs.com/linkworld/p/10963910.html. 二.Hbase shell操作 创建Hb ...

  3. 文本分类(TextCNN,Keras)

    数据集是网上找的,已上传至我的 Github,项目完整地址:https://github.com/cyandn/practice/tree/master/text-classification 流程: ...

  4. 解决source insight 4.0 不识别.cc文件的问题

    Options -> File Type Options, File Filter 中加入,*.cc 参考了C++ Primer Plus第五版中文版 P8 C++实现 源代码的扩展名 UNIX ...

  5. Replication:The replication agent has not logged a progress message in 10 minutes.

    打开Replication Monitor,在Subscription Watch List Tab中,发现有大量的status= “Performance critical” 的黄色Warning, ...

  6. linux启动tomcat很久或者很慢Tomcat启动时卡在“INFO: Deploying web application directory ......”的解决方法

    解决方案: 找到jdk1.x.x_xx/jre/lib/security/java.security文件,在文件中找到securerandom.source这个设置项,将其改为: securerand ...

  7. HashMap源码原理

    HashMap源码解析(负载因子,树化策略,内部hash实现,resize策略) 内部属性: 负载因子: final float loadFactor(默认为0.75f) 实际容量: int thre ...

  8. Java NIO , AIO

    New IO: 特点:不再阻塞 Channel , Buffer Async IO: 特点:异步

  9. Java String 字符串

    equals 字符串比较 String str = "furong"; String str1 = new String("furong"); System.o ...

  10. 转 根据CPU核心数确定线程池并发线程数

    转自: https://www.cnblogs.com/dennyzhangdd/p/6909771.html?utm_source=itdadao&utm_medium=referral 目 ...