#geo-ip #geolocation #maxmind #gis

app geoip-api

geoip-api 提供自动更新的数据库中特定 IP 地址的地理位置信息

2 个版本

0.7.1 2020 年 6 月 2 日
0.7.0 2020 年 6 月 1 日

#215 in 地理空间

Apache-2.0

28KB
402

geoip-api

如果您不需要自动更新的数据库或 Prometheus 指标,您应该查看 ffissore/geoip-rs,这是本项目的灵感来源。

geoip-api 是一个 geoip 服务:它提供指定 IP 地址的地理位置信息。它支持 IPV4 和 IPV6。

  • 当使用 ip 查询参数调用时,它解析指定的 IP 地址。例如:https://127.0.0.1:3000/?ip=216.58.205.132

    如果提供的 IP 地址无效,它将返回一个错误

  • 默认情况下,响应将是英文。可以提供可选的 lang 查询参数:如果可用,返回的数据将使用该语言。当前列表包括:deenesfrjapt-BRruzh-CH。例如:https://127.0.0.1:3000/?ip=216.58.205.132&lang=ja

  • geoip-api 将定期检查 maxminddb 在线更新,而不是从文件中读取。有关如何配置此功能的示例,请参阅下面的用法。

示例响应

有效的 IP 地址

{
    "ip_address": "46.51.179.90",
    "latitude": 53.3331,
    "longitude": -6.2489,
    "postal_code": "D02",
    "continent_code": "EU",
    "continent_name": "Europe",
    "country_code": "IE",
    "country_name": "Ireland",
    "region_code": "L",
    "region_name": "Leinster",
    "province_code": "",
    "province_name": "",
    "city_name": "Dublin",
    "timezone": "Europe/Dublin"
}

未找到(私有)IP 地址(将返回 400 错误代码)

  AddressNotFoundError: Address not found in database

速度

我能在我的机器上达到每秒 150k 的请求。

geoip-api 选择将整个数据库保留在内存中,而不是将其写入文件。由于它必须在继续为旧数据库提供服务的同时下载新数据库,因此请至少为这留出 512 MB 的内存。

用法

使用以下命令安装 geoip-api

cargo install geoip-api

如果您没有 cargo,请使用以下命令安装它

curl https://sh.rustup.rs -sSf | sh

阅读教程 获取更多说明。

您可以通过命令行或环境变量指定选项,

USAGE:
    geoip-api [OPTIONS] --account-id <account-id> --license-key <license-key>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --account-id <account-id>             [env: GEOIP_API_ACCOUNT_ID=]
        --edition-id <edition-id>             [env: GEOIP_API_EDITION_ID=]  [default: GeoIP2-City]
        --license-key <license-key>           [env: GEOIP_API_LICENSE_KEY=]
    -l, --listen-addr <listen-addr>           [env: GEOIP_API_LISTEN_ADDR=]  [default: 127.0.0.1:3000]
        --update-minutes <update-minutes>     [env: GEOIP_API_UPDATE_MINUTES=]  [default: 30]

例如。

 geoip-api =-account-id 123456 --license-key s3cretlicense --update-minutes 30
 # or
 export GEOIP_API_ACCOUNT_ID=123456
 export GEOIP_API_LICENSE_KEY=s3cretlicense
 geoip-api

许可证

本项目采用 Apache 许可证,版本 2.0

依赖项

~27–40MB
~712K SLoC