11 个版本
0.1.7 | 2024 年 5 月 7 日 |
---|---|
0.1.6 | 2024 年 2 月 18 日 |
0.1.4 | 2024 年 1 月 18 日 |
0.1.2 | 2023 年 12 月 31 日 |
0.0.2 | 2023 年 12 月 30 日 |
#41 in 地理空间
87KB
1.5K SLoC
🌍 IPCap
ipcap 0.1.7
▄█ ▄███████▄ ▄████████ ▄████████ ▄███████▄
███ ███ ███ ███ ███ ███ ███ ███ ███
███▌ ███ ███ ███ █▀ ███ ███ ███ ███
███▌ ███ ███ ███ ███ ███ ███ ███
███▌ ▀█████████▀ ███ ▀███████████ ▀█████████▀
███ ███ ███ █▄ ███ ███ ███
███ ███ ███ ███ ███ ███ ███
█▀ ▄████▀ ████████▀ ███ █▀ ▄████▀
🌍 IPCAP CLI
============
Perform IP lookup from the command line without internet access. Retrieve information
about IP addresses, including details such as city, region, country, location, etc.
📖 目录
🚀 安装
要安装 ipcap
,使用以下 Cargo 命令
cargo install --locked ipcap --all-features
📖 下载数据集
使用此命令从存储库下载城市数据库(v4 和 v6)
# IPV4 database
curl -LS https://raw.githubusercontent.com/wiseaidev/ipcap/main/data/geo_ip_city_v4.dat --create-dirs -o ~/.local/share/ipcap/geo_ip_city_v4.dat
# IPV6 database
curl -LS https://raw.githubusercontent.com/wiseaidev/ipcap/main/data/geo_ip_city_v6.dat --create-dirs -o ~/.local/share/ipcap/geo_ip_city_v6.dat
这将从存储库下载并放置在 ~/.local/share/ipcap/
的 data/geo_ip_city_v4.dat
和或 data/geo_ip_city_v4.dat
数据库。
如果出于某种原因,您决定更改此文件位置,只需设置此环境变量以帮助 CLI 读取此文件。在运行 Rust 程序之前设置环境变量,您可以这样做:
# IPV4 database
export IPCAP_FILE_PATH=/your/custom/path/geo_ip_city_v4.dat
# IPV6 database
export IPCAP_FILE_PATH=/your/custom/path/geo_ip_city_v6.dat
将 /your/custom/path/geo_ip_city_v4.dat
替换为所需的文件路径。如果未设置环境变量,则程序将使用默认路径(/home/username/ipcap/geo_ip_city_v4.dat
)。
[!NOTE] 默认的数据库位置是 macOS 上的
~/Library/Application Support/ipcap/
,Windows 上的C:\Users\Username\AppData\Local\ipcap\
。
[!NOTE] 数据库是从 fedora 网站上不客气地取的,网址是 https://src.fedoraproject.org/repo/pkgs/GeoIP-GeoLite-data/。
关于 IPV4 数据集
此数据集的最后 600 字节可以解释如下
-46 29 -75 -66 42 103 50 56 0 75 111 108 107 97
116 97 0 55 52 51 49 50 53 0 -31 -24 30 49
-13 40 103 50 56 0 67 104 97 110 100 97 110 110
97 103 97 114 0 55 49 50 49 51 55 0 -108 -12
30 124 -13 40 103 50 56 0 72 111 111 103 104 108
121 0 55 49 50 49 50 49 0 -100 -11 30 121 -12
40 103 49 49 0 66 104 97 114 109 111 117 114 0
49 55 54 51 49 53 0 -44 106 32 -43 36 39 103
49 48 0 66 97 110 119 97 115 97 0 0 -84 -23
31 4 38 39 103 49 49 0 68 97 100 97 104 117
0 49 55 51 48 50 50 0 55 35 32 -3 71 39
103 50 51 0 82 117 112 110 97 103 97 114 0 0
-32 48 32 -45 36 39 103 49 57 0 78 97 103 97
114 0 0 -99 -109 29 -105 -23 38 100 48 52 0 75
101 109 97 110 103 103 105 115 97 110 0 0 90 -123
26 -80 -62 43 0 0 0 71 69 79 45 53 51 51
76 73 84 69 32 50 48 49 54 48 52 48 53 32
66 117 105 108 100 32 49 32 67 111 112 121 114 105
103 104 116 32 40 99 41 32 50 48 49 54 32 77
97 120 77 105 110 100 32 73 110 99 32 65 108 108
32 82 105 103 104 116 115 32 82 101 115 101 114 -1
-1 -1 2 52 -67 41
...
^00 Shek Kip Mei
24 Phayakkhaphum Phisai 44110 _ 6+ 70 Yala 95120
Jt * 05 Ban Hong - * 44 Bang Khla 24110
* 68 Ban Na v * 77 Amnat Charoen 37000
Mp+ 68 Ban Phru _z * 68 Chana 90160 ~
* 46 Si Racha 20110 y * 02 Chiang Mai 50250
W * 16 Nakhon Sawan 60130 *g28 Kolkata 743125
1 (g28 Chandannagar 712137 | (g28 Hooghly 712121
y (g11 Bharmour 176315 j $'g10 Banwasa &'g11 Dadahu 173022
7# G'g23 Rupnagar 0 $'g19 Nagar &d04 Kemanggisan Z
+ GEO-533LITE 20160405 Build 1 Copyright (c) 2016 MaxMind Inc All Rights Reserved 4
文件末尾第四个字节 '2' 表示数据库类型为 GeoLite City 数据库 CITY_EDITION_REV1
。此数据集提供地理位置信息,包括多种地点、数字代码和相关详细信息。地名,如“石基梅”和“清迈”,以及数字代码、邮政编码,为数据集的地理背景做出贡献。此外,元数据元素如“GEO-533LITE”和版权声明表明与 MaxMind 地理位置数据库有关。该数据集旨在提供对地理位置分布的见解,对于地理空间分析(如本项目)可能具有潜在价值。
✨ 功能
- 自动检测 ipv4 和 ipv6。
- 无互联网访问也能查找 IP 地址。
- 解码 IP 地址无需 API 调用。
- 数据集下载和自定义文件路径。
⌨ 作为 CLI 使用
执行 IPV4 查找
ipcap -t 8.8.8.8
执行 IPV6 查找
ipcap -t 2a08:1450:300f:900::1003
💻 作为依赖项使用
[dependencies]
ipcap = "0.1.7"
use ipcap::geo_ip_reader::GeoIpReader;
use ipcap::utils::pretty_print_dict;
use std::fs::File;
fn main() {
let mut geo_ip = GeoIpReader::<File>::new("v4").unwrap();
let mut record = geo_ip.get_record("8.8.8.8");
pretty_print_dict(record);
geo_ip = GeoIpReader::<File>::new("v6").unwrap();
record = geo_ip.get_record("2a08:1450:300f:900::1003");
pretty_print_dict(record);
}
🎨 选项
选项 | 默认值 | 描述 |
---|---|---|
--target |
"" |
使用 --target 选项设置要查找的 IP 地址,v4 或 v6。 |
🤝 贡献
欢迎贡献和反馈!如果您想贡献、报告问题或建议增强功能,请在与 GitHub 的项目中互动。您的贡献有助于改善此 CLI 以供社区使用。
📄 许可证
此项目采用 MIT 许可证。
依赖项
~0–10MB
~50K SLoC