GeoIP简介与资源,定位经纬度,获取用户IP
所谓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的更多相关文章
- Flask框架获取用户IP地址的方法
本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最 ...
- C# 获取用户IP地址(转载)
[ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...
- 【用jQuery来判断浏览器的类型】及【javascript获取用户ip地址】
用jQuery来判断浏览器的类型,主要是使用$.browser这个工具类,使用方法: $.browser.['浏览器关键字'] //谷歌浏览器.360浏览器等其他一些浏览器,没有专门的判断 funct ...
- Tomcat的配置,设置内存,获取用户IP
一.修改配置文件 tomcat配置文件路径/tomcat/bin/server.xml # shutdown指定终止Tomcat服务器运行时,发给Tomcat 服务器的shutdown监听端口的字符串 ...
- 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
分析过程 这个来自一些项目中,获取用户Ip,进行用户操作行为的记录,是常见并且经常使用的. 一般朋友,都会看到如下通用获取IP地址方法. function getIP() { if (isset($_ ...
- CDN 环境下获取用户IP方法
CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...
- go 通过nginx代理后获取用户ip
go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Re ...
- PHP:获取用户IP
文章来源:http://www.cnblogs.com/hello-tl/p/7685263.html //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1 ...
- easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)
easyui datagrid 禁止选中行 没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...
随机推荐
- [终极巨坑]golang+vue开发日记【三】,登陆界面制作(二)
写在前面 本期内容是承接上期已经做好了登陆界面来写的,不过本期是以golang为主,可能需要大家把最基本的语法结构熟悉一下:菜鸟教程.这样的话方便展开,自然而然的,本篇也是直接实战为主.这次需要依赖m ...
- group by 对多个字段进行分组
转载自:https://blog.csdn.net/xx_star1204/article/details/72884983 在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获 ...
- SQL系列(十一)—— 函数(function)
SQL中的函数也非常多,而且不同的DBMS提供了相应的特殊函数.但是常用的共性函数大致可以分为以下几种: 函数类型 函数 数值函数 1.算术计算:+.-.*./ 2.数值处理:ABS()绝对值处理.P ...
- Oracle的约束
学习笔记: ##约束 *概念:限定用户输入的内容. *案例: *练习 * 1. 在score表的grade列添加CHECK约束,限制grade列 ...
- Nginx配置gzip.md
参考 入门系列之在Nginx配置Gzip gzip是一种流行的数据压缩程序.您可以使用gzip压缩Nginx实时文件.这些文件在检索时由支持它的浏览器解压缩,好处是web服务器和浏览器之间传输的数据量 ...
- python基础--py2与py3编码
python2 与 python3的编码和解码 注意:小心,容易弄混 目录: 1.python2d 的encode & decode 2.python3的encode & decode ...
- Java中遇到Case cannot be resolved to a variable问题
Java中遇到Case cannot be resolved to a variable问题 记录一下这两天项目中遇到的一个小问题. 在项目中遇到一个问题,一直显示 Case cannot be ...
- Python 列表推导式、矩阵、格式化输出
列表推导式 列表推导式提供了从列表.元组创建列表的简单途径.语法: [表达式 for语句 if语句] 创建并返回一个列表.if语句可选. 示例: list1=[1,2,3,4] #使用元组也行 lis ...
- 浅谈Python设计模式 - 原型模式
声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...
- 【TCP】TCP三次握手与四次挥手
一.TCP三次握手 第一次握手:Client 将标志位 SYN=1 ,随机产生一个值 seq=J ,并将该数据包发送给 Server .此时,Client 进入SYN_SENT 状态,等待 Serve ...