`
fandayrockworld
  • 浏览: 313046 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

whois和运营商的故事

 
阅读更多

有一个业务需求:

 

根据来访的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&gt; wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz shell&gt; tar xzvf ripe-dbase-client-v3.tar.gz shell&gt; cd...

    whois查询工具:WhoisThisDomain

    总的来说,WhoisThisDomain作为一款专业的Whois查询工具,不仅可以帮助普通用户了解域名的基本信息,还在网络安全和商业运营等多个领域有着广泛的应用。使用时,应仔细阅读`Readme-说明.htm`和`readme.txt`,按照...

    身份证、手机、IP地址3合一 查询系统whois3(VB源代码)(卓高职业学校收集)

    手机查询可能涉及到手机号码的归属地查询,即通过手机号码查询其对应的运营商信息和大致地理位置。这通常需要对接第三方的手机号码查询API,获取到的可能是手机号码的归属地、运营商等信息。 IP地址查询则涉及到...

    haovip.com域名Whois查询

    无论是对个人还是企业,了解这些基础知识都是网络运营和域名投资不可或缺的一部分。通过分析Whois信息,我们可以评估域名的潜在价值,监控竞争对手,甚至在必要时采取法律行动,例如在商标侵权的情况下。同时,学习...

    大陆各运营商ip段

    大陆范围内的教育网、电信、长城宽带、移动、网通、铁通、普天、金桥信息网的ip段信息,只是以运营商分类,如果想要筛选省市,请到各分类下根据字母代码自行筛选,换行符是 \n 见谅 样例: inetnum: 106.32.0.0 - ...

    获取最新电信、联通、移动IP地址的方法.txt

    在Linux下获得一些电信运营商的IP地址分配情况: shell&gt; wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz shell&gt; tar xzvf ripe-dbase-client-v3.tar.gz shell&gt; cd whois-3.1 ...

    php whois查询API制作方法

    因此在使用Whois API进行域名查询时,我们可能需要根据不同的注册商和域名后缀调整查询策略。 最后,文章也提醒我们,使用Whois查询服务要遵守相关条款。例如,不能使用自动化、高容量的查询工具去访问Whois数据库...

    [工具查询]身份证、手机、IP地址3合一查询系统_whois3.zip

    查询可能涉及使用E.164标准编码或通过运营商API来获取信息。同样,由于隐私保护,未经许可获取他人手机号码的详细信息也是受限的。 3. **IP地址查询(Whois查询)**:IP地址是互联网上的设备标识,Whois查询是用来...

    IP地址域名Whois查询

    这个数据库包含了大量的IP地址与地理位置、运营商等信息的映射关系,使得开发者可以通过IP地址快速获取到对应的信息,例如查询一个IP地址所在的国家、城市或者网络提供商。 对于PHP源码来说,实现IP地址、域名和...

    电信-网通-网段实时查询软件

    这个软件在互联网管理和网络故障排查方面具有重要意义,尤其对于网络技术人员和企业网络管理员来说,能够快速了解不同运营商的IP网段状态,对优化网络连接、提升网络性能和解决问题非常有帮助。 在描述中提到的...

    IP地址和手机号码查询归属地(类)

    每个手机号码都与特定的运营商和区号关联,这决定了号码的归属地。查询手机号码归属地的方法包括拨打运营商客服电话、使用运营商提供的短信查询服务,以及利用第三方的手机归属地查询平台。这些平台通常会根据手机...

    有关加强互联网安全性稳定性和灵活性的计划-icann.pdf

    ICANN 的安全性、稳定性和灵活性工作的参与方包括 ICANN 自身、TLD 注册管理机构、注册服务商、DNS 根服务器运营商、注册人等。这些参与方需要共同合作,维护互联网的安全性、稳定性和灵活性。 ICANN 已经制定了一...

    最新版全功能版PHP在线工具箱源码-66toolkit v16.0.0

    2. IP查找工具:用于查询指定IP地址的地理位置、运营商信息等,有助于进行IP定位和网络安全分析。 3. SSL查找工具:可以检测网站的SSL证书状态和有效期,帮助用户确认网站的安全性。 4. Whois查询工具:可用于查询...

    WhoisIp.rar_apnic_ip整理工具_whoisIP

    描述中提到的“中国路由表整理工具源代码”暗示了这个压缩包内可能包含了一款软件的源代码,这款软件能够帮助用户自动化处理从APNIC获取的数据,以便识别和区分属于中国电信、中国联通等中国主要运营商的IP地址段。...

    chinarank中国网站排名查询系统 v1.0

    2. **IP查询**:系统集成的IP查询功能可以帮助用户快速获取IP地址的详细信息,例如IP的物理位置、网络运营商等,这对于网络安全分析和网络故障排查有实际价值。 3. **WHOIS查询**:通过WHOIS查询,用户可以了解域名...

    藏经阁-有关IP的网络安全那些事.pdf

    1. 数据来源:包括自有或者其它可信任的数据来源、全球WHOIS/BGP/ASN/RADB数据、运营商、客户、合作伙伴的反馈数据、网友提交纠错的数据等。 2. 数据分析和审核:通过程序或人工方式进行IP数据的收集、分析和审核...

    IP地址查询手册.rar

    2. 运营商信息:IP地址往往与特定的互联网服务提供商(ISP)相关联,查询IP可以得知其背后的运营商。 3. 网络类型:IP地址可以区分公网和私网,公网IP是全球唯一的,而私网IP仅在特定网络内部使用。 4. IP段信息:某些...

    IP, DNS & Security Tools | HackerTarget.com-crx插件

    技术系统运营商的IP,DNS和安全工具。快速访问WHOIS,GEOIP,DNS,TRACEROUTE,PING,HTTP标头,NMAP等。伟大的: - 安全专业人士 - 网络运营商 - 系统管理员 - 分析师 - 或者只是那些对互联网技术方面感到好奇的人...

Global site tag (gtag.js) - Google Analytics