曾经做网站类型的程序时,经常需要收集客户端的访问数据,然后加以分析。这需要一个Ip数据库,数据表中显示Ip所在的省份市区等信息。网络上有流传的Ip纯真数据库,一些公开的Web服务也可以查询Ip地址信息,但是24小时内超过查询次数就需要购买商业授权,网站myds.net上提供了Ip数据库下载,不过需要收取60元人民币。
最后一种方法,也就是不花钱的办法,用C#调用淘宝的Ip地址库,准确率高,而且查询次数不限制。
先参考网方提供的文档:
淘宝IP地址库,提供API
地址:http://ip.taobao.com/
提供的服务包括:?
1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家、省、市和运营商。?
2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服务内容。?
优势:?
1. 提供国家、省、市、县、运营商全方位信息,信息维度广,格式规范。?
2. 提供完善的统计分析报表,省准确度超过99.8%,市准确度超过96.8%,数据质量有保障。
接口说明
1. 请求接口(GET):?
http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]?
2. 响应信息:?
(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商?
3. 返回数据格式:?
{"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317",?
"region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1",?
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",?
"county_id":"-1","isp_id":"100017"}}?
其中code的值的含义为,0:成功,1:失败。
?
步骤1 : 找到枚举互联网Ip地址的方法
StackOverflow上面有一篇文章,讲解如何枚举所有的互联网Ip地址。请参考 C# Enumerate IP addresses in a range - Stack Overflow
请看下面的Ip地址参数例子
'192.0.2.1'? 一个Ip地址?
'192.0.2.0-31'?? 枚举192.0.2.0-192.0.2.31 一共32个Ip地址?
'192.0.2-3.1-254'? 枚举192.0.2.1-192.0.2.254和? 192.0.3.1-192.0.3.254 一共254个IP地址?
'0-255.0-255.0-255.0-255'?? 枚举互联网上所有的IPv4地址
代码中的调用方法
str