C#枚举所有的IPv4地址并获取地理位置信息

    文章来源:万象互联 更新时间:2013-8-2 11:57:25
分享:

     C#写程序时需要用到一些IP数据库,这样可以根据来访者的ip地址获取到地理位置信息,如省份、地市等信息。网上大多是收费的,还有的api接口是有访问次数限制的,要么就是旧的数据库,数据不全的。思来想去还是自己动手丰衣足食,利用淘宝IP地址库批量查询获取ip地理信息并入库。

淘宝IP地址库有个好处就是:不限查询次数及频次。

淘宝IP地址库地址:http://ip.taobao.com/

接口说明:

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:失败。

大致思路:C#枚举所有IPv4地址,然后逐一模拟浏览器Get操作获取地理位置信息并入库。

1、C#枚举所有IPv4地址:

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地址

代码实现:

string pattern="200.64-71.0-255.0-255";

IPRange ipRange=new IPRange(pattern);

List addresses=ipRange.GetAllIP();

这里的addresses即为枚举到的ip地址集合。

2、C#模拟浏览器Get方式获取数据参见:C#发送GET、POST方式的web请求

3、获取到的地理信息以JSON方式返回,自己建一个和结果属性名字一样的类,然后将地理信息JSON结果反序列化为这类的实例,反序列化类库参考:C#序列化及反序列化Json对象通用类JsonHelper

4、然后写入数据库


版权说明:本站原创文章,由万象互联SEO优化发表.
本文地址:https://www.hulian.top/zixun/post/5948.html
在线咨询
  • 在线时间
  • 8:00-21:00