论坛首页 编程语言技术论坛

IPParse: IP 地址查询

浏览 31770 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-02-17  
1)在shell中:
$ ipparse 218.58.88.175 212.1.1.1 192.245.148.0 116.254.254.0
218.58.88.175 => 山东省青岛市开发区
212.1.1.1 => 意大利
192.245.148.0 => 阿尔及利亚
116.254.254.0 => 广东省广州市

2)程序中:
require ‘rubygems’
require ‘ipparse’
IPParse.parse(‘218.58.88.175’) # => 山东省青岛市开发区


有效代码30多行,使用了PHPWind的IP数据库(稍稍改了改格式,源码里提供了工具)
分析10000个随机IP 需要5秒左右的时间

地址:http://github.com/wosmvp/ipparse/tree/master
安装:(申请了RubyForge ipparse 目前还没有审核)
$ git clone git://github.com/wosmvp/ipparse.git
$ cd ipparse
$ rake install (可能需要安装 echoe )


------
http://www.zhangjinzhu.com
   发表时间:2009-02-18  
昨天版本10万随机IP时间为 52.5233330726624 秒
今天版本10万随机IP时间为 28.3033330440521秒
速度提升 46.1 % !

安装:
$ sudo gem install ipparse
0 请登录后投票
   发表时间:2009-02-18  
现在的IP数据库是文本的, 能否换成 "IP数据库 纯真版"的呢?
0 请登录后投票
   发表时间:2009-02-18  

免费测试一下 ,编码似乎有些问题 ,都显示不出来,是不是要检查一下当前系统的编码呢 ?

 

 

windowsxp 和 linux 都是

而且 linux 的  LANG=en_US.UTF-8 或者 zh_CN.utf8 都不成哦, 上图 , 仅供参考 :)

 

 

 

 

 

 

 

  • 大小: 17.9 KB
  • 大小: 9.2 KB
0 请登录后投票
   发表时间:2009-02-18  
不见得 写道

免费测试一下 ,编码似乎有些问题 ,都显示不出来,是不是要检查一下当前系统的编码呢 ?

 

 

windowsxp 和 linux 都是

而且 linux 的  LANG=en_US.UTF-8 或者 zh_CN.utf8 都不成哦, 上图 , 仅供参考 :)

 

 

 

 

 

 

 

IP文本格式是UTF8的,GBK有乱码正常,

UTF-8 乱码? 上张 Linux . UTF-8 乱码截图看看?

 

检查一下当前系统的编码,速度必然降低,写这个Gem开始是想用在web应用中,如果想用GBK编码,先下载PHPWind的GBK编码的ipdata文件,再使用lib目录下的convert_ip_format.rb转换格式(可能需要修改此文件,例如去掉dos2unix等),将它们复制到data目录就行

 

 

--------------

IP数据库 纯真版 ?     没试过,好像不可以在Linux中使用吧?

0 请登录后投票
   发表时间:2009-02-18   最后修改:2009-02-18
http://read.pudn.com/downloads74/sourcecode/windows/file/268981/ip_searcher.rb__.htm

IP数据库 纯真版 是能在linux中使用的,上面的地址是刚找到的一段测试代码,将
def search_ip_cz(ip) 剥离出来便能正常在linux系统下正常使用了,
http://lumaqq.linuxsir.org/article/qqwry_format_detail.html这篇文章是LumaQQ作者写的"纯真IP数据库格式详解"

0 请登录后投票
   发表时间:2009-02-18  
二分查找代码return dichotomizing(arg[0...cen],ip)           if size != 1 && (arg[cen] > ip + '1')
这块好像有bug
IPParse.parse('59.1.32.220')到最后就死循环
0 请登录后投票
   发表时间:2009-02-18  

嗯 , 是我使用的问题 , 我终端都是 gbk的, 还得转那么一下 :

 

Iconv.conv('gbk','utf-8',IPParse.parse('218.58.88.175')) 

 

 

貌似纯真的库数据量很大  http://www.cz88.net/
有个ruby的版本 http://www.51dir.com/thread-203-1-1.html
但是有些问题 , 还有个对这个的hack版 , google  下就能找到 。

 

 

一个小建议:

 

 def self.parse(ip , to = 'utf-8')
 

haha , 这样我用着就更方便了

 

 

 

0 请登录后投票
   发表时间:2009-02-18   最后修改:2009-02-18
http://gist.github.com/66248

剥离出来的纯真IP数据库查询脚本,使用二分查找法.
0 请登录后投票
   发表时间:2009-02-19  
orlaa 写道
http://read.pudn.com/downloads74/sourcecode/windows/file/268981/ip_searcher.rb__.htm

IP数据库 纯真版 是能在linux中使用的,上面的地址是刚找到的一段测试代码,将
def search_ip_cz(ip) 剥离出来便能正常在linux系统下正常使用了,
http://lumaqq.linuxsir.org/article/qqwry_format_detail.html这篇文章是LumaQQ作者写的"纯真IP数据库格式详解"



非文本修改起来比较麻烦……呵呵
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics