爱意满满的作品展示区。
KasuganoSoras

分享一个自建的 IP 归属地查询库

  •  3
     
  •   KasuganoSoras ·
    kasuganosoras · Oct 7, 2019 · 11007 views
    This topic created in 2588 days ago, the information mentioned may be changed or developed.

    看到另一篇帖子说淘宝 IP 库挂了……我想了下还是分享一下自己的 IP 库吧。

    数据来源

    数据基于纯真 IP 库 2019-09-25 的数据,一般我会每个月去更新一次(官方是每周,但是我可能没有这么多时间每周都去更新一次),自己写了一个脚本把 txt 格式的数据导入到了数据库里,并区分了国家、地区和运营商。

    特性

    返回结果为 Json,区分国家、地区、运营商,支持返回明文、Unicode 编码结果。

    接口稳定性

    接口程序使用 PHP 开发,环境为 PHP 7.3.8,搭建在一台 4 核 i5-6500 小机器上,做了 Redis 缓存,首次查询后会把结果缓存在 Redis,下一次查询直接从缓存调取,速度会快很多。

    之前的测试结果:

    • 缓存命中情况下 7200QPS
    • 查询未缓存数据 5400QPS

    小项目或者自己测试之类的用这个应该是没问题的,我会长期提供服务(我自己的网站也在用)。大项目还是建议用大厂的 API 吧……我也不敢保证我的 SLA 能达到小数点后几个 9 什么的...

    请求方式

    返回结果

    正常返回结果

    {
        "status":200,
        "message":"OK",
        "addr":"14.215.177.38",
        "country":"中国",
        "area":"广东省广州市",
        "provider":"北京百度网讯科技有限公司电信节点"
    }
    

    无效的 IP 地址

    {
        "status":500,
        "message":"Invalid IP Address"
    }
    

    因为纯真 IP 库格式的问题,我没有办法细分到省和市……所以统一用 area 来表示了。

    接口没有限制单 IP QPS,但是还是希望各位合理使用,上面还运行着公益内网穿透 owo

    如果发现有查询结果错误的话欢迎在帖子里留言或者邮箱联系我修正:YWtrYXJpaW5zQGdtYWlsLmNvbQ==

    Supplement 1  ·  Oct 7, 2019

    考虑到纯真数据库可能不够全的问题,我增加了一个 ip2region 的数据库查询选项,在查询参数里加上 &db2 即可使用 ip2region 的数据库。

    示例:https://ip.mcr.moe/?ip=223.5.5.5&db2

    但是在我实际测试中发现 ip2region 在查询部分冷门 IP 地址时的准确度不如纯真 IP 库,因此建议还是将纯真 IP 库作为主要选择,ip2region 可以作为参考使用。

    另外还增加了 Json 美化效果,可以更直观的看到返回结果。当然如果你不喜欢或者有特殊原因不能使用这种美化过的 Json 的话,也可以加个参数 &compress 将 json 变回原来压缩过的效果。

    示例:https://ip.mcr.moe/?ip=223.5.5.5&compress

    Supplement 2  ·  Sep 29, 2022

    网站已经迁移到国内的托管服务器了,访问速度更快也更稳定。现在可以通过新的域名 ip-moe.zerodream.net 访问,老域名 ip.mcr.moe 不受影响依然可以使用。

    但是老域名因为没有备案所以只能通过香港服务器转发,访问速度可能较慢,因此建议使用新的备案直连域名访问,以达到最佳的请求速度和稳定性。

    70 replies  •  2025-03-15 03:03:18 +08:00
    opengps
    opengps
    Oct 7, 2019 via Android
    1
    ip 库的总有效数据量多少?
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 7, 2019
    2
    @opengps #1 看了一下,是 526742 条
    frozenway
    frozenway
    Oct 7, 2019
    3
    纯真的准确率太低了,以前用的时候经常被运营怼
    lk1ngaa7
    lk1ngaa7
    Oct 7, 2019
    4
    ipip.net 的免费 ip 库和纯真的区别是啥呢?
    lovestudykid
    lovestudykid
    Oct 7, 2019❤️1
    5
    gitee.com/lionsoul/ip2region
    这个号称 99.9%,连各种语言的查询客户端都提供了...
    opengps
    opengps
    Oct 7, 2019
    6
    @KasuganoSoras 跟我之前了解的相似,52 万条,跟 ipv4 的 43 亿条占比太小,建议对接下百度地图高德地图,做替补查询
    caijunyi
    caijunyi
    Oct 7, 2019
    7
    已经在使用了。挺好的!
    bagel
    bagel
    Oct 7, 2019
    8
    @opengps 没明白,你说的这几家地图也提供 IP 查询服务吗?
    starsriver
    starsriver
    Oct 7, 2019 via Android
    9
    纯真也在用。备用吧。

    淘宝还是很稳的,这两天可能是因为特殊时间
    ysicing
    ysicing
    Oct 7, 2019 via Android
    10
    ip.sb 也不错哈哈
    opengps
    opengps
    Oct 7, 2019
    11
    @bagel 刚刚总结了一下,但愿不被站长理解成 aff 继续降权: https://www.opengps.cn/Blog/View.aspx?id=476&f=v
    nicoljiang
    nicoljiang
    Oct 7, 2019
    12
    @opengps 这 50 多万条是 IP 段。。。大的段可能包含上百万个 IP
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 7, 2019
    13
    @starsriver #9 淘宝主要是 QPS 限制的太低了,只能作为人工搜索使用。目前增加了一个新的选择 ip2region,后续我会考虑接入更多的 IP 库,继续完善它。

    @nicoljiang #12 是的,其中还包含了很多类似于 192.168.0.0 / 255.0.0.0 这些保留地址,实际上纯真 IP 库还是很全的,日常查询完全足够了。
    KallyDev
    KallyDev
    Oct 7, 2019 via iPhone
    14
    编码似乎有些问题,环境是 iOS Chrome

    {
    "status": 200,
    "message": "OK",
    "addr": "1.1.1.1",
    "country": "缇庡浗",
    "area": "缇庡浗",
    "provider": "APNIC&CloudFlare 鍏叡 DNS 鏈嶅姟鍣�"
    }
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 7, 2019
    15
    @KallyDev #14 服务器端是 UTF-8 无 BOM,如果出现编码问题可以试下在 URL 里加上 &unicode 参数
    Soar360
    Soar360
    Oct 7, 2019
    16
    纯真的数据库直接集成到程序里也很容易吧?
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 7, 2019
    17
    @Soar360 #16 是的,但是纯真的数据库体积有点大( 32MB ),集成到程序里有点累赘。另外我把国家和地区单独存在一个字段里面,方便一些特殊场合使用,比如需要屏蔽国外访问的网站,可以直接判断:
    if(json.country !== "中国") {
    return 403;
    }
    Tang
    Tang
    Oct 7, 2019 via Android
    18
    @KasuganoSoras 原始压缩后的 dat 文件应该没这么大吧
    xiangyuecn
    xiangyuecn
    Oct 7, 2019
    19
    仅仅返回文字这种不太好用,还要自己解析省市然后反解出城市区划代码,有没有像淘宝 ip 库那样可以直接返回城市区划代码的?
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 7, 2019
    20
    @xiangyuecn #19 过段时间增加这个功能,到时候可能要重新导一份数据库
    Varobjs
    Varobjs
    Oct 8, 2019 via Android
    21
    ipip.net 也可以吧
    Vogan
    Vogan
    Oct 9, 2019 via iPhone
    22
    我来说的点,免费的淘宝能返回运营商,其他免费的都没有运营商
    KasuganoSoras
    KasuganoSoras
    OP
    Oct 9, 2019
    23
    @Vogan #22 有的,我的 API 返回字段有一个 provider 就是运营商,默认的话是纯真的 IP 库,会带有一些机房名字和其他信息,如果需要比较统一的(电信、移动、联通)可以加上 &db2 参数使用备用数据库。
    alamak76
    alamak76
    Oct 9, 2019
    24
    可以考虑 IP2Location LITE 的免费 IP 库。
    ganymedenil590
    ganymedenil590
    Oct 9, 2019
    25
    目前应该只有 ipip.net 是最准确的 国内大厂的归属地查询的库也基本都是 ipip.net
    wudi77
    wudi77
    Apr 3, 2021
    26
    @KasuganoSoras 您好,网站证书昨天到期啦,目前无法使用。
    KasuganoSoras
    KasuganoSoras
    OP
    Apr 3, 2021
    27
    @wudi77 #26 谢谢,已经看到了,正在更新
    wudi77
    wudi77
    Jul 2, 2021
    28
    您好,网站证书今天又到期啦,目前无法使用。
    wudi77
    wudi77
    Jul 2, 2021
    29
    @KasuganoSoras 您好,网站证书今天又到期啦,目前无法使用。
    KasuganoSoras
    KasuganoSoras
    OP
    Jul 2, 2021
    30
    @wudi77 谢谢提醒,证书已经更新,换了个一年的
    wudi77
    wudi77
    Aug 19, 2021
    31
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Aug 19, 2021
    32
    @wudi77 #31 谢谢提醒,域名过期了,刚刚续费完。
    wudi77
    wudi77
    Dec 27, 2021
    33
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Dec 28, 2021
    34
    @wudi77 #33 网络出问题了,今天一直在外面没看到消息,已经恢复了
    wudi77
    wudi77
    Jan 24, 2022
    35
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Jan 25, 2022
    36
    @wudi77 #35 已恢复,感谢提醒
    uniteweare
    uniteweare
    Jan 25, 2022
    37
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Jan 26, 2022
    38
    @uniteweare #37 忘记把反代服务跑起来了😓感谢提醒
    uniteweare
    uniteweare
    Feb 28, 2022
    39
    @KasuganoSoras Error 502
    wudi77
    wudi77
    May 26, 2022
    40
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    uniteweare
    uniteweare
    May 26, 2022
    41
    @KasuganoSoras Error 502 啦,麻烦检查一下哟
    KasuganoSoras
    KasuganoSoras
    OP
    May 26, 2022
    42
    @uniteweare #41 谢谢提醒,服务器到期忘记续费了,已恢复
    lwd2020
    lwd2020
    Jul 29, 2022
    43
    您好,我对这个项目比较有兴趣,我也想自建一个,不知道大佬是否愿意分享下源码
    wudi77
    wudi77
    Aug 18, 2022
    44
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Aug 18, 2022
    45
    @wudi77 #44 域名过期了,刚续费完,可能要等一段时间 dns 才会变回去
    uniteweare
    uniteweare
    Aug 18, 2022
    46
    @KasuganoSoras 感谢,正准备提醒您,已经解决啦,辛苦了
    wudi77
    wudi77
    Sep 24, 2022
    47
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Sep 29, 2022
    48
    @wudi77 抱歉造成不便了,前几天在搬迁服务器数据,搬迁过程中可能会有一些问题。目前已经迁移到国内的服务器了,速度更快也更稳定了,以及目前可以通过新的域名 ip-moe.zerodream.net 访问,老域名不受影响依然可以使用,但是因为没有备案所以只能通过香港服务器转发,因此建议使用新的直连域名以达到最佳的请求速度。
    wudi77
    wudi77
    May 4, 2023
    49
    @KasuganoSoras 你好,请求返回内容变成
    {
    "status": 500,
    "message": "No Record, Please contact administrator"
    }
    ,麻烦检查下
    KasuganoSoras
    KasuganoSoras
    OP
    May 15, 2023
    50
    @wudi77 之前已经修复了,忘记回复,抱歉
    cyrker
    cyrker
    Jul 21, 2023
    51
    感谢大佬 非常好用
    wudi77
    wudi77
    Sep 13, 2023
    52
    @KasuganoSoras 您好,URL 无法访问了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Sep 13, 2023
    53
    @wudi77 #52 测试了一下好像没有问题,如果国内无法访问有可能是被墙了,可以更换国内接口 https://ip-moe.zerodream.net/ 更稳定
    wudi77
    wudi77
    Feb 1, 2024 via iPhone
    54
    @KasuganoSoras 您好,URL 无法访问了,应该是证书到期了,请检查。
    KasuganoSoras
    KasuganoSoras
    OP
    Feb 1, 2024
    55
    @wudi77 #54 抱歉,这几天我们在搬迁服务器机房,原来的宿迁机房最近不稳定,所以打算换到广东机房,这几天可以临时先用其他的 IP 库顶一下,预计 4 号左右能恢复。
    KasuganoSoras
    KasuganoSoras
    OP
    Feb 5, 2024
    56
    @wudi77 #54 目前已经恢复了,如果无法访问请尝试清理 DNS 缓存后重试下
    hellomuser
    hellomuser
    Aug 10, 2024
    57
    你好,好像新域名 http://ip-moe.zerodream.net/ 出现 502 错误了
    hellomuser
    hellomuser
    Aug 10, 2024
    58
    @KasuganoSoras 你好,不知道是不是备案掉了,域名对应的 IP 好像不是之前的广东机房了,是个香港 IP
    KasuganoSoras
    KasuganoSoras
    OP
    Aug 13, 2024
    59
    @hellomuser #58 不好意思,服务器机房和运营商那边因为费用问题没谈拢,运营商把网断了,我们也被清退了,现在正在找新的机房,临时把域名解析到了香港服务器上,预计两三天左右会恢复。
    KasuganoSoras
    KasuganoSoras
    OP
    Aug 13, 2024
    60
    @hellomuser #58 这里有我们的服务状态页,可以关注一下这个网站,恢复了会通知的 https://status.zerodream.net/
    hellomuser
    hellomuser
    Aug 14, 2024
    61
    非常感谢,服务状态页很棒,之前不知道
    KasuganoSoras
    KasuganoSoras
    OP
    Aug 15, 2024
    62
    @hellomuser #61 久等了,服务器已经搬迁到新的机房了,如果不能正常使用的话可以尝试清除一下 DNS 缓存
    hellomuser
    hellomuser
    Sep 8, 2024
    63
    你好,最近“开放认证服务”好像坏了,可能这项服务影响到了 ip-moe.zerodream.net 站点默认数据库。不过奇怪的是,勾选“使用备用数据库 (ip2region)”就能正常使用。
    KasuganoSoras
    KasuganoSoras
    OP
    Sep 9, 2024
    64
    @hellomuser #63 已修复,是之前服务器数据库搬迁不完整导致的,现在应该可以了
    hellomuser
    hellomuser
    Feb 6, 2025
    65
    你好,ip-moe.zerodream.net 这个网站很好用,不过现在似乎是 https 到期了?

    显示“各个网站通过证书证明自己的身份,它们在设定的时间段内有效。ip-moe.zerodream.net 的证书已于 2025/2/2 过期。”
    KasuganoSoras
    KasuganoSoras
    OP
    Feb 6, 2025
    66
    @hellomuser #65 感谢提醒,SSL 证书到期忘记续了,已经好了
    hellomuser
    hellomuser
    Feb 6, 2025❤️1
    67
    非常感谢,这个站点非常好用,造福了很多用户
    hellomuser
    hellomuser
    Mar 14, 2025
    68
    不好意思打扰下,我看了 ZeroStat 页面公告,服务器已经维护完毕了。不过 ip-moe.zerodream.net 这个站点暂时还无法使用,可能是这个小功能比较冷门,忘记这个二级域名了,不知道空闲的时候是否可以顺带手恢复一下,确实很好用,谢谢
    KasuganoSoras
    KasuganoSoras
    OP
    Mar 15, 2025
    69
    @hellomuser #68 抱歉影响使用了。。是因为搬过来的时候太匆忙,Redis 忘记设置成系统服务开机自启了😓重启之后 Redis 没起来,所以导致查询失败,现在已经恢复了。
    hellomuser
    hellomuser
    Mar 15, 2025
    70
    恢复啦,感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   734 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 19:34 · PVG 03:34 · LAX 11:34 · JFK 14:34
    ♥ Do have faith in what you're doing.