« freeip CERNET分担费用政策中定义的国内流量地址列表 20071113 |
Main
| linux perl 通过 FreeTDS 连接 windows Microsoft Sql Server 数据库 »
November 21, 2007
吐血分析 apnic 的地址段数据
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/archives/2007/11/21/001291.html
想看看北京的IP段情况
于是又折腾了下 apnic
从 apnic ftp 下载数据很方便
http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
http://ftp.apnic.net/whois-data/APNIC/split/apnic.db.inetnum.gz
http://ftp.apnic.net/whois-data/APNIC/split/apnic.db.route.gz
之所以说吐血 是因为数据的规范性太差 一致性太差
比如 route 里面没有202.106.
比如 netname mnt-by descr等都乱七八糟
所以通过 MAINT-CHINANET-BJ MAINT-CNCGROUP-BJ 等不可能方获得
想简单脚本处理都不容易 因为数据太乱
whois3 -h whois.apnic.net -T inetnum -i mb MAINT-CHINANET-BJ
whois3 -h 202.12.29.13 -T inetnum -i mb MAINT-CNCGROUP-BJ
whois3 -h whois.apnic.net -T inetnum CRBjB
whois3 从 http://ftp.apnic.net/apnic/dbase/tools/ 下载
具体帮助可以看help或者
http://www.apnic.net/db/search/all-options.html
最后只好 教育网用cernet发布的 region 简单整理
全中国的ip通过 |CN|ipv4| 从delegated-apnic-latest获取
掩码计算可以直接用这里的 32-log($i)/log(2) 也可以计算起止地址
比如 use POSIX;$digit=16-ceil(log($ipend2-$ip2+1)/log(2));
其余具体看inetnum descr
写了个循环比对 apnic.db.inetnum.gz 和 CN@delegated-apnic-latest
descr 有 beijing 的算 (这样当然会误伤 人工过滤吧)
循环还有一些简单技巧
匹配上inetnum: $ip 后
比对是否中国ip 是的话做个标记 (如果grep比对 记得转义. grep "^$ipt")
后面才是 descr 有标记做一下字符拼接 记一下老ip
下次过来: 先判断上一次中国ip的descr 是北京打印 置空descr
然后再判断ip
不是中国ip 把标记拿掉
是中国ip 把标记加上
后面再遇到descr 还是看标记 循环顺利跑起来
由于文件比较大 还做了个进度提示条
循环计数 (500万行 5万行算1% 进1)
if($jcmp>$j){ $j++; print "$j\n"; }
方法可以复制 准则值得改进 吐血...
|
|
Posted by windtear at November 21, 2007 4:22 AM