sjzar / ips

IP geolocation databases tool and library. IP 地理位置数据库工具。
Apache License 2.0
352 stars 23 forks source link

可以支持查询国内和国外ip时分别指派不同的ip库吗 #24

Open darvenking opened 4 months ago

darvenking commented 4 months ago

今天看到这个项目非常惊艳,感谢作者的开源付出

可以支持查询国内和国外ip时分别指派不同的ip库吗,比如国内的走纯真,国外的走GEO2lite

sjzar commented 4 months ago

很高兴这个项目能够帮助到你 :)

关于你提到的海内外使用不同 IP 库的需求,由于 “国家” 字段同样是 IP 数据库内容的一部分,不同数据库的信息会存在差异,所以基于任一 IP 数据库做海内外判断都可能有误差。

我的建议是尝试用 hybrid-mode 同时查询两个数据库的信息,并自行实现业务逻辑判断。 请参考相关文档:https://github.com/sjzar/ips/blob/main/docs/config.md#hybrid_mode

示例:
1. 下载 qqwry.dat & GeoLite2 数据库
    ips download qqwry.dat
    ips download GeoLite2-City.mmdb

2. 使用 hybrid-mode 查询 2 个数据库
    ips -i .ips/qqwry.dat -i .ips/GeoLite2-City.mmdb 12.12.12.12 -f '*' -j
    {"items":[{"ip":"12.12.12.12","net":"12.11.140.0/22","data":{"0_country":"美国","0_isp":"AT","1_accuracy_radius":"1000","1_city":"","1_continent":"北美洲","1_country":"美国","1_latitude":"37.751000","1_longitude":"-97.822000","1_province":"","1_registered_country":"美国","1_utcOffset":"America/Chicago"}}]}

    ips -i .ips/qqwry.dat -i .ips/GeoLite2-City.mmdb -f '*'  123.123.123.123 -j
    {"items":[{"ip":"123.123.123.123","net":"123.123.123.0/24","data":{"0_country":"中国","0_isp":"联通","1_accuracy_radius":"1000","1_city":"北京","1_continent":"亚洲","1_country":"中国","1_latitude":"39.911000","1_longitude":"116.395000","1_province":"北京","1_registered_country":"中国","1_utcOffset":"Asia/Shanghai"}}]}

命令中的多个 -i 参数会同时生效,使用 -f '*' 检查所有的数据库字段,第一个数据库的字段以 0_ 作为前缀,第二个数据库的字段以 1_ 作为前缀。

希望可以帮助到你~