region-search

归属地查询


Keywords
region, search, ip-search, phone-searach, region-search
License
MIT
Install
pip install region-search==0.0.1

Documentation

RegionSearch

手机/IP归属地查询

Features

  • 根据csv生成dat文件,数据源csv由自己更新
  • 基于二分法查找

Installation

pip install region-search

Examples

查询归属地

生成dat文件

dat_maker --type ip --cfg /path/ip_config.ini
dat_maker --type phone --cfg /path/phone_config.ini

How it works

dat文件格式说明


        | 4 bytes |                     <- 版本号
        ------------
        | 4 bytes |                     <-  第一个索引的偏移
        -----------------------
        |  data1                 |      <-  记录区数据1
        -----------------------
        |  dataN                 |      <-  记录区数据N
        -----------------------
        |  index1                |      <-  索引区索引1
        -----------------------
        |  indexN                |      <-  索引区索引N
        -----------------------

手机归属地dat格式

  • 头部 头部为8个字节,版本号为4个字节,第一个索引的偏移为4个字节(<4sI)。
  • 记录区 中每条记录的格式为"<省份>|<城市>|<运营商>\0"。 每条记录以'\0'结束。
  • 索引区 中每条记录的格式为"<手机号前七位><记录区的偏移>",每个索引的长度为8个字节(<II)。

ip归属地dat格式

  • 头部 头部为8个字节,版本号为4个字节,第一个索引的偏移为4个字节(<4sI)。
  • 记录区 中每条记录的格式为"<国家>|<省份>|<城市>|<区>|<运营商>\0"。 每条记录以'\0'结束。
  • 索引区 中每条记录的格式为"<ip段起始地址><记录区的偏移>",每个索引的长度为8个字节(<II)。

解析dat步骤:

  • 解析头部8个字节,得到索引区的第一条索引的偏移。
  • 在索引区用二分查找得出待查询数据在记录区的记录偏移。
  • 在记录区从上一步得到的记录偏移处取数据,直到遇到'\0'。
  • 根据记录区具体的数据格式进行解析。

生成dat步骤:

  • 解析IP/phone数据库csv文件,根据配置文件对关键字段名称进行转换。
  • 根据IP/phone排序生成一个新的数组。
  • 通过解析数据,分别生成header区,data区,index区三个buffer,最终合为一个dat文件

License

MIT