a76yyyy 发表于 2020-11-23 11:13

【20220316更新】纯真IPv4/ZXinc_IPv6数据库镜像及sql脚本同步更新

本帖最后由 a76yyyy 于 2022-3-16 11:12 编辑

PS:仓库包含完整的源代码和脚本,不知道这个发在这里合不合适,如果不合适的话版主可以帮忙移到合适的板块。

# IPDATA

[![](https://img.shields.io/github/stars/a76yyyy/ipdata?style=social)](https://github.com/a76yyyy/ipdata/stargazers) [![](https://img.shields.io/github/watchers/a76yyyy/ipdata?style=social)](https://github.com/a76yyyy/ipdata/watchers)[![](https://img.shields.io/github/forks/a76yyyy/ipdata?style=social)](https://github.com/a76yyyy/ipdata/network/members)

[![](https://img.shields.io/badge/HomePage-a76yyyy-brightgreen)](https://www.a76yyyy.cn) [![](https://img.shields.io/github/license/a76yyyy/ipdata)](https://github.com/a76yyyy/ipdata/blob/main/LICENSE) [![](https://img.shields.io/github/last-commit/a76yyyy/ipdata)](https://github.com/a76yyyy/ipdata/)[![](https://img.shields.io/github/commit-activity/m/a76yyyy/ipdata)](https://github.com/a76yyyy/ipdata/)![](https://img.shields.io/github/repo-size/a76yyyy/ipdata)
![](https://img.shields.io/github/pipenv/locked/python-version/a76yyyy/ipdata)[!(https://github.com/a76yyyy/ipdata/actions/workflows/update.yml/badge.svg)](https://github.com/a76yyyy/ipdata/actions/workflows/update.yml)[!(https://github.com/a76yyyy/ipdata/actions/workflows/create-release.yml/badge.svg)](https://github.com/a76yyyy/ipdata/actions/workflows/create-release.yml)

> **因IPv4和IPv6数据库相继开启商业化运营模式, 当IP数据库源不再提供离线镜像时, 本仓库将尊重其要求进行存档或关闭。**

纯真IPv4数据库镜像 / ZXinc_IPv6数据库镜像 & MySQL脚本/SQLite3 同步更新 for Python3(原czipdata项目)
(数据文件已通过release发布)

Github:(https://github.com/a76yyyy/ipdata)(推荐)

Gitee :(https://gitee.com/a76yyyy/ipdata)(更新频率较低)

# 功能

1. 通过Python实现[纯真IPv4](https://update.cz88.net/)数据库及(http://ip.zxinc.org/)数据库的镜像更新,数据库在data文件夹下;
2. 将数据文件解析为txt格式;
3. 将数据文件全量导入mysql中,请先安装mysql并启用服务;
4. 将数据文件全量导入SQLite3中,请先安装SQLite3并启用服务;
5. 将MySQL/SQLite3数据库中的IP数据库内的地址细分为省市区;
6. 生成sql脚本文件的gz压缩文档,请先安装 gzip 并添加至系统变量(默认提供gz压缩文档, 不提供sql脚本);
7. 生成SQLite3数据库db文件的gz压缩文档;
8. Windows使用BAT文件实现数据库的自动更新和推送;
9. 结合计划任务可实现windows的定时更新。

# 数据文件

文件 | 内容 | 类型
---|:---:|:---:
czipdata_version.bin|IPv4本地数据文件版本记录|Binary
ipv6data_version.bin|IPv6本地数据文件版本记录|Binary
ipdata.db|IP数据库db文件|SQLite3 DB文件
ipdatabase.sql|IP数据库sql脚本(含以下sql内容)|MySQL脚本
iprange_info.sql|纯真IPv4数据表sql脚本|MySQL脚本
ipv6_range_info.sql|ZXinc_IPv6数据表sql脚本|MySQL脚本
college_info.sql|高校信息表sql脚本|MySQL脚本
czipdata.dat|纯真IPv4数据文件|IPDB源文件
ipv6data.db|ZXinc_IPv6数据文件|IPDB源文件(Not SQLite3)
czipdata.txt|纯真IPv4数据文本文件|TXT
ipv6data.txt|ZXinc_IPv6数据文本文件|TXT
correct.json|地址细分纠错文件|JSON

# IP查询
## 安装相关模块
```powershell
# 使用git前请先安装git软件
git clone --depth=1 https://github.com/a76yyyy/ipdata.git
cd ipdata
# 安装gzip 解压data文件夹中的gz相关文件;
# 使用sqlite3请先安装sqlite3软件, 数据库文件在data/ipdata.db.gz压缩档内;
# 使用mysql请先安装mysql组件并导入sql脚本, sql脚本在data/ipdatabase.sql.gz压缩档内;
# 进行下述操作前请先安装python3;
pip3 install pipenv
pipenv install
pipenv shell
python
```
## SQLite3 for Python3
```python
from database import sqlite3_Database
from configs import config
sqlite3file = config['sqlite3'].ip_database
conn = sqlite3_Database(sqlite3file)
```
## MySQL for Python3
```python
from database import mysql_Database
from configs import config
conn = mysql_Database(config['mysql'].ip_database)
```
## IPv4 查询
```python
import ipaddress
ip = ipaddress.IPv4Address('114.114.114.114')
sql = "select * from iprange_info where " + str(int(ip)) +" between ip_start_num and ip_end_num "
print(conn.query(sql))
```
## IPv6 查询
```python
import ipaddress
ip = ipaddress.IPv6Address('2400:3200::')
sql = "select * from ipv6_range_info where x'" + ''.join(ip.exploded.split(':')) +"' between ip_start_num and ip_end_num "
print(conn.query(sql))
```
## 退出
```python
conn.__del__()
exit()
```

# TODO

1. 实现data文件夹的分类存储;
2. 实现数据库的增量更新;
3. 实现Linux定时更新.

# 图片







# (https://api.a76yyyy.cn/ip)



示例IPv4 API接口(暂不提供源码):(https://api.a76yyyy.cn/ip?function=ipInfo)



示例IPv6 API接口(暂不提供源码):(https://api.a76yyyy.cn/ip?function=ipv6Info)



# 示例日志
=======================================================
         Starting automatic update ipdata
=======================================================
开始检查IPv4数据库更新:
---------------处理中, 请稍候---------------
地址:http://update.cz88.net/ip/copywrite.rar
开始下载: .\tmp\copywrite.rar
[ .\tmp\copywrite.rar] 下载完成 0.27 KB / 0.27 KB
下载完成,共花费了0.16s
IPv4数据文件新版本: 44370, 大小: 5396789
-------------------------------------------

开始更新IPv4数据文件:.\data\czipdata.dat
---------------处理中, 请稍候---------------
地址:http://update.cz88.net/ip/qqwry.rar
开始下载: .\tmp\qqwry.rar
[ .\tmp\qqwry.rar] 下载完成 5270.30 KB / 5270.30 KB
下载完成,共花费了7.89s
成功写入到 .\data\czipdata.dat, 10,448,828字节
-------------------------------------------

将IPv4数据文件写入文本文件中 dat -> txt
-------------------------------------------
写入文件.\data\czipdata.txt 中, 请稍候...
写入完成, 写入 530116 条数据.
-------------------------------------------

开始检查IPv6数据库更新:
---------------处理中, 请稍候---------------
地址:http://ip.zxinc.org
IPv6数据文件新版本: 20210511
-------------------------------------------

开始更新IPv6数据文件:.\data\ipv6wry.db
---------------处理中, 请稍候---------------
地址:http://ip.zxinc.org/ip-20210511.7z
开始下载: .\tmp\ip-20210511.7z
[ .\tmp\ip-20210511.7z] 下载完成 552.43 KB / 552.43 KB
下载完成,共花费了0.47s
成功写入到 .\data\ipv6wry.db, 565,689字节
-------------------------------------------

将IPv6数据文件写入文本文件中 db -> txt
-------------------------------------------
写入文件.\data\ipv6data.txt 中, 请稍候...
写入完成, 写入 176315 条数据.
-------------------------------------------

检索IPv4数据库是否存在
---------------处理中, 请稍候---------------
将IPv4数据文件" .\data\czipdata.txt"导入Mysql数据库中:
---------------处理中, 请稍候---------------
本批次(行:0 - 99999)已处理完成。共需处理100000条,成功转换100000条。
系统将自动处理下一批IPv4数据(行:100000 - 199999)……
---------------处理中, 请稍候---------------
……
---------------处理中, 请稍候---------------
本批次(行:500000 - 530115)已处理完成。共需处理30116条,成功转换30116条。
-------------------------------------------
已全部导入完成, 共导入530116条IPv4数据.


连接IP数据库, 并检索大学数据库信息:
---------------处理中, 请稍候---------------
大学数据库不存在,重新部署中:
---------------处理中, 请稍候---------------
从https://github.com/pg7go/The-Location-Data-of-Schools-in-China导入大学-8084.json至 .\tmp\college.json
成功将大学地址数据写入到 .\tmp\college.json, 1,752,894字节
-------------------------------------------
将大学数据文件" .\tmp\college.json"导入Mysql数据库中:
---------------处理中, 请稍候---------------
本批次(行:0 - 999)已处理完成。共需处理1000条,成功转换1000条。
系统将自动处理下一批IP数据(行:1000 - 1999)……
---------------处理中, 请稍候---------------
……
---------------处理中, 请稍候---------------
本批次(行:8000 - 8083)已处理完成。共需处理84条,成功转换84条。
-------------------------------------------
已全部导入完成, 共导入8084条数据.


IP数据库连接成功!
-------------------------------------------
开始载入纠错文件correct.json:
---------------处理中, 请稍候---------------
载入完成!
-------------------------------------------
将IP数据库内的地址细分为省市区:
---------------处理中, 请稍候---------------
本批次(行:0 - 19999)已处理完成。共需处理20000条,成功转换20000条。
系统将自动处理下一批IP数据(行:20000 - 40000)……
---------------处理中, 请稍候---------------
……
---------------处理中, 请稍候---------------
本批次(行:520000 - 530115)已处理完成。共需处理10116条,成功转换10116条。
-------------------------------------------
已全部完成转换。
操作完成!

检索IPv6数据库是否存在
---------------处理中, 请稍候---------------
将IPv6数据文件" .\data\ipv6wry.db"导入Mysql数据库中:
---------------处理中, 请稍候---------------
……
---------------处理中, 请稍候---------------
本批次(行:150000 - 176314)已处理完成。共需处理26315条,成功转换26315条。
-------------------------------------------
已全部导入完成, 共导入176315条IPv6数据.


连接IP数据库, 并导出为sql文件:
---------------处理中, 请稍候---------------
IP数据库gz压缩档导出成功!
高校信息表gz压缩档导出成功!
IPv4数据表gz压缩档导出成功!
IPv6数据表gz压缩档导出成功!
=======================================================
         Starting automatic git commit push
=======================================================
.\
Adata/college_info.sql.gz
Mdata/czipdata_version.bin
Mdata/ipdatabase.sql.gz
Mdata/iprange_info.sql.gz
Mdata/ipv6_range_info.sql.gz
Mdata/ipv6data_version.bin
定时同步 2021-06-26 10:29:53
10 files changed, 6 insertions(+), 4 deletions(-)

a76yyyy 发表于 2021-6-28 16:21

更新项目支持ipv6了,有兴趣的同学可以看一下

子竹聆风 发表于 2022-11-2 11:28

青蓝天空 发表于 2022-8-15 00:13
ip库很久没更新了,最近一次更新在4月份。

是的,有几个月没更新了。这种数据,都是怎么来的原始数据呢?有懂业务的介绍下?

青蓝天空 发表于 2022-11-6 17:59

子竹聆风 发表于 2022-11-2 11:28
是的,有几个月没更新了。这种数据,都是怎么来的原始数据呢?有懂业务的介绍下?

抱歉,这个我也不是很了解。

tflyr 发表于 2020-11-23 11:33

突然怀念以前用肉鸡开钻..

开创者 发表于 2020-11-23 11:40

要是再写上php调用语句就更好了

chs12358 发表于 2020-11-23 11:40

这个不错,又可以自己写个API来实现IP查询玩了。

NvidiaChina 发表于 2020-11-23 12:15

看起来很厉害的样子

a941002 发表于 2020-11-23 13:53

看不懂 。。。。

a76yyyy 发表于 2020-11-23 14:35

开创者 发表于 2020-11-23 11:40
要是再写上php调用语句就更好了

主要是为了更新ip数据库,调用数据库就是另外的项目了

hj170520 发表于 2020-11-23 16:58

tflyr 发表于 2020-11-23 11:33
突然怀念以前用肉鸡开钻..

现在还有呀!

manxia 发表于 2022-3-13 22:30

大佬,可否请教一下,一个ipv6地址是如何匹配库里的ip的
页: [1] 2
查看完整版本: 【20220316更新】纯真IPv4/ZXinc_IPv6数据库镜像及sql脚本同步更新