有一个业务需求:
根据来访的IP,判断其所属运营商,根据运营商的不同,展示不同的东西。
然后,各种找资料。
刚开始找到一个: 纯真IP。
>>这个··· 首先对制作这个IP数据库的人致敬,但是,数据不符合需求,因为,我们需要运营商。
然后又找到一个: APNIC。
>>这个··· 由于linux中已经提供了相关的命令--whois(没有提供的可以自己安装,到apnic的网站上下载就行,不叙),
>>所以,就像很多其他文章(google:apnic whois 运营商)中说的似的,貌似,编写个脚本,分析一下数据,就可以得
>>到各运营商的IP段,但是,whois返回的详细信息太不规范,用这种狗血的信息分析,无疑是自杀。
>>再者,中国的运营商,那叫一个乱起八糟,不说了···
然后又找到一个:ip138。
>>仔细看了一下,这个网站查询出的东西,挺准确的,要不自己写个抓取程序?嗯,先试试吧···
------------------------------华丽丽---------------------------------
最终还是选择了权威的APNIC
从这个网页上可以找到中国的IP段(网页上给出了提示,说可能不是很全、很新····不过,凑合着用吧):http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
附上此网页中数据的说明:
1、在网页中查找“|CN|ipv4|”,匹配的行即为天朝IP地址段信息。
2、拿其中一条数据做说明,比如这条:
apnic|CN|ipv4|60.55.0.0|65536|20040802|allocated
我们看以“|”做区分后的第四个和第五个值,即:60.55.0.0和65536。其他的值可以不用管了
这两个值组合起来其实可以这么表示:60.55.0.0/16,这种方式叫CIDR,表示的是一个网段,我也一知半解的,
这里就不多说了,对于网络基础一般的童鞋来说,就可以这样理解:从60.55.0.0,后面65536个IP都是这个网段
的,这就够了。
那么可以开始了,先是写一个shell,去读取这个网页,然后调用whois,分析返回回来的字符串,判断IP段所属运营商。
#!/bin/sh
DIR=/data/ip
APNIC=$DIR/apnic
CNNET=$DIR/cnnet
ctc=$DIR/ctc
cucc=$DIR/cucc
cmcc=$DIR/cmcc
rm -f $APNIC
rm -f $CNNET
rm -f $ctc
rm -f $cucc
rm -f $cmcc
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $APNIC
grep '|CN|ipv4|' $APNIC | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip submask
do
echo $ip/$submask
echo $ip/$submask >> $CNNET
NETNAME=`whois $ip | grep -e ^netname -e ^mnt-by -e ^mnt-lower -e ^descr | sed -e 's/.*: (.*)/1/g' | sed -e 's/-.*//g'`
if echo $NETNAME | grep -i -e 'CHINANET' -e 'CHINATELECOM'
then echo $ip/$submask >> $ctc
elif echo $NETNAME | grep -i -e 'UNICOM' -e 'CNC' -e 'CNCGROUP'
then echo $ip/$submask >> $cucc
elif echo $NETNAME | grep -i -e 'CMNET' -e 'CMCC' -e 'MOBILE'
then echo $ip/$submask >> $cmcc
fi
done
这样,执行完这个shell后,不同的运营商IP信息就在相应的文件中了。
然后,从写一个java程序,去读取上面的文件,然后根据实际情况处理就行了。
下面贴出最主要的代码:
long f = Utils.ip2Long(from); // from 即上面的60.55.0.0
long t = f + Long.parseLong(count) - 1; // count 即上面的65536
// 下面贴出IP的字符串和长整型相互转换的方法
/**
* 将形如127.0.0.1的IP转换为其所对应的长整型数值
* 说明:
* 无任何校验及异常捕获,请传入正确的IP字符串
*/
public static long ip2Long(String ipStr) {
long[] ipLong = new long[4];
String[] off = ipStr.split("\\.");
ipLong[0] = Long.parseLong(off[0]) << 24;
ipLong[1] = Long.parseLong(off[1]) << 16;
ipLong[2] = Long.parseLong(off[2]) << 8;
ipLong[3] = Long.parseLong(off[3]);
return ipLong[0] + ipLong[1] + ipLong[2] + ipLong[3];
}
/**
* 将长整型数值的IP转换为其所对应的形如127.0.0.1的字符串
* 说明:
* 无任何校验及异常捕获,请传入正确的IP长整数
*/
public static String long2Ip(long ipLong) {
StringBuilder ip = new StringBuilder();
ip.append(ipLong >>> 24).append(".");
ip.append((ipLong & 0x00FFFFFF) >>> 16).append(".");
ip.append((ipLong & 0x0000FFFF) >>> 8).append(".");
ip.append((ipLong & 0x000000FF));
return ip.toString();
}
网上闲逛,看到一个java调用whois的程序,用了apache commons 的 net 包,强大的apache!
分享到:
相关推荐
下面就让我们看看如何在Linux下获得一些电信运营商的IP地址分配情况: shell> wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz shell> tar xzvf ripe-dbase-client-v3.tar.gz shell> cd...
总的来说,WhoisThisDomain作为一款专业的Whois查询工具,不仅可以帮助普通用户了解域名的基本信息,还在网络安全和商业运营等多个领域有着广泛的应用。使用时,应仔细阅读`Readme-说明.htm`和`readme.txt`,按照...
手机查询可能涉及到手机号码的归属地查询,即通过手机号码查询其对应的运营商信息和大致地理位置。这通常需要对接第三方的手机号码查询API,获取到的可能是手机号码的归属地、运营商等信息。 IP地址查询则涉及到...
无论是对个人还是企业,了解这些基础知识都是网络运营和域名投资不可或缺的一部分。通过分析Whois信息,我们可以评估域名的潜在价值,监控竞争对手,甚至在必要时采取法律行动,例如在商标侵权的情况下。同时,学习...
大陆范围内的教育网、电信、长城宽带、移动、网通、铁通、普天、金桥信息网的ip段信息,只是以运营商分类,如果想要筛选省市,请到各分类下根据字母代码自行筛选,换行符是 \n 见谅 样例: inetnum: 106.32.0.0 - ...
在Linux下获得一些电信运营商的IP地址分配情况: shell> wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz shell> tar xzvf ripe-dbase-client-v3.tar.gz shell> cd whois-3.1 ...
因此在使用Whois API进行域名查询时,我们可能需要根据不同的注册商和域名后缀调整查询策略。 最后,文章也提醒我们,使用Whois查询服务要遵守相关条款。例如,不能使用自动化、高容量的查询工具去访问Whois数据库...
查询可能涉及使用E.164标准编码或通过运营商API来获取信息。同样,由于隐私保护,未经许可获取他人手机号码的详细信息也是受限的。 3. **IP地址查询(Whois查询)**:IP地址是互联网上的设备标识,Whois查询是用来...
这个数据库包含了大量的IP地址与地理位置、运营商等信息的映射关系,使得开发者可以通过IP地址快速获取到对应的信息,例如查询一个IP地址所在的国家、城市或者网络提供商。 对于PHP源码来说,实现IP地址、域名和...
这个软件在互联网管理和网络故障排查方面具有重要意义,尤其对于网络技术人员和企业网络管理员来说,能够快速了解不同运营商的IP网段状态,对优化网络连接、提升网络性能和解决问题非常有帮助。 在描述中提到的...
每个手机号码都与特定的运营商和区号关联,这决定了号码的归属地。查询手机号码归属地的方法包括拨打运营商客服电话、使用运营商提供的短信查询服务,以及利用第三方的手机归属地查询平台。这些平台通常会根据手机...
ICANN 的安全性、稳定性和灵活性工作的参与方包括 ICANN 自身、TLD 注册管理机构、注册服务商、DNS 根服务器运营商、注册人等。这些参与方需要共同合作,维护互联网的安全性、稳定性和灵活性。 ICANN 已经制定了一...
2. IP查找工具:用于查询指定IP地址的地理位置、运营商信息等,有助于进行IP定位和网络安全分析。 3. SSL查找工具:可以检测网站的SSL证书状态和有效期,帮助用户确认网站的安全性。 4. Whois查询工具:可用于查询...
描述中提到的“中国路由表整理工具源代码”暗示了这个压缩包内可能包含了一款软件的源代码,这款软件能够帮助用户自动化处理从APNIC获取的数据,以便识别和区分属于中国电信、中国联通等中国主要运营商的IP地址段。...
2. **IP查询**:系统集成的IP查询功能可以帮助用户快速获取IP地址的详细信息,例如IP的物理位置、网络运营商等,这对于网络安全分析和网络故障排查有实际价值。 3. **WHOIS查询**:通过WHOIS查询,用户可以了解域名...
1. 数据来源:包括自有或者其它可信任的数据来源、全球WHOIS/BGP/ASN/RADB数据、运营商、客户、合作伙伴的反馈数据、网友提交纠错的数据等。 2. 数据分析和审核:通过程序或人工方式进行IP数据的收集、分析和审核...
2. 运营商信息:IP地址往往与特定的互联网服务提供商(ISP)相关联,查询IP可以得知其背后的运营商。 3. 网络类型:IP地址可以区分公网和私网,公网IP是全球唯一的,而私网IP仅在特定网络内部使用。 4. IP段信息:某些...
技术系统运营商的IP,DNS和安全工具。快速访问WHOIS,GEOIP,DNS,TRACEROUTE,PING,HTTP标头,NMAP等。伟大的: - 安全专业人士 - 网络运营商 - 系统管理员 - 分析师 - 或者只是那些对互联网技术方面感到好奇的人...