【问题标题】:How to determine if incoming IP address is from a mobile carrier? [closed]如何确定传入的 IP 地址是否来自移动运营商? [关闭]
【发布时间】:2010-07-15 15:10:40
【问题描述】:

是否有人知道确定传入 IP 是否来自移动运营商的好方法(免费或付费)?

之前有一个问题: API to determine cell carrier?

答案是“使用 ISP 数据库并匹配名称”。我想我希望在这个问题被问到一年半之后,有人想出了一些更干净的东西?

手指交叉

【问题讨论】:

    标签: mobile ip


    【解决方案1】:

    我有一个移动网站,我需要进行 IP 地理定位。我查看了几个 IP-> 位置数据库。其中之一是 MaxMind。他们有一个免费的数据库,可以提供城市级别的准确性,但他们也有一个付费数据库(相当合理的费用),可以为您提供更多详细信息,包括移动用户正在使用的移动运营商。

    转到http://www.maxmind.com 并将您的IP 放入演示输入框(位于首页),您将看到您可以获得的详细信息。这是您需要的 API:http://www.maxmind.com/app/isp

    就像我说的,我只使用城市级别的详细数据库,因此无法保证移动运营商的覆盖范围。但在我最初的测试中,它似乎总是为我测试的英国、爱尔兰和亚洲手机返回不错的值。

    Rgds,凯文。

    【讨论】:

    • 这对我很有用,因为我试图根据他们的 IP 地址禁止一些用户。我绝对不想禁止移动IP地址,因为这会导致其他用户和访客在该地址被重复使用时遇到禁止墙。
    【解决方案2】:

    如果这是针对网站的,您可以检查 HTTP_USER_AGENT。这当然可以伪造。

    如果这确实适用于网站,请让您的用户选择查看非移动优化版本!

    【讨论】:

    • 这只会告诉浏览器类型(并且很容易伪造)。它不会告诉用户是通过移动连接进来的,还是用户是通过 WIFI 进来的。
    • @jlwarlow 并非完全错误,iOS 上的 Facebook 应用实际上在其用户代理中泄露了运营商信息。
    【解决方案3】:

    您可以使用 hostip。他们拥有不断变化的 IP 列表及其所在位置。

    您可以获得该 IP 的物理位置、国家/地区和主机名等信息。

    您可以使用正则表达式或其他方式轮询数据并对照预先定义的运营商列表检查主机名。

    更多信息在这里:http://www.hostip.info/

    【讨论】:

    • 我住在距离米兰 45 公里的意大利贝加莫市。我的 ISP 是 Tiscali。该服务报告“柏林”...
    • 在这种情况下,使用工具更新它(如果您还没有)。这是一个由社区提供支持的工具,因此通过添加更准确的数据,对每个人都会更好
    【解决方案4】:

    NetAcuity aka Digital Envoy 有运营商定位(功能 24),通常是付费许可,但我相信他们有一个 30 天的试用计划。

    【讨论】:

    • 他们在 2010 年 7 月没有。:) 这就是我们今天使用的。
    【解决方案5】:

    这是我用的:

    if (preg_match("@(android|iphone|opera mini|blackberry)@is",$_SERVER['HTTP_USER_AGENT'])) {
        $mobile = true;
    } else {
        $mobile = false;
    }
    

    【讨论】:

    • 这只会告诉你设备是否是移动设备,它不会告诉你他们使用的传输方式。
    猜你喜欢
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2012-04-06
    • 1970-01-01
    • 2010-10-16
    • 2012-05-10
    相关资源
    最近更新 更多