#geo-ip #ip-geolocation #ip-address #ip #ip-lookup #geolocation

bin+lib ipcap

🌍 无需网络访问即可将 IP 地址解码为状态、邮编、国家、坐标等

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 地理空间

MIT 许可证

87KB
1.5K SLoC

🌍 IPCap

Crates.io docs License

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