0

我需要用 PHP 来做,也许用一些 pear 包或 php 内部函数。我怎么能这样做?

我知道我需要 gethostbyname() 来检查主机名,但我还需要这个提供商的 IP 范围。示例:ip:5.7.8.9 主机:美国提供商 ip 范围 5.7.8.0-5.7.9.0

用php可以吗?

4

1 回答 1

2

如果不访问 BGP,就无法准确查看 IP 范围,但如果您信任 ISP 提供的正确信息,您可以从 whois 获取。使用 shell_exec 或类似命令调用命令行 whois 客户端。

我建议你看这些标签:

  • 网数
  • 网络范围
  • CIDR
  • 路线

并且可能更多。然而,Whois 并不总是值得信赖的。它是一个没有定义标准格式的文本数据库,因此您可能并不总是得到可用的答案,而且您并不总是知道要查找什么。

正如我所说,最值得信赖的解决方案是获得真正的 BGP 访问权限,这样您就可以检查实际的 Internet 路由。然而,这是相当先进的,所以也许有一些 Web 服务可以用于路由查找?

编辑 我实际上找到了这个项目,它为 BGP 查询提供了一个 API:http ://www.routeviews.org/

在 routeviews.org 中有两个 TXT reconds 子域,asn 和 aspath。asn.routeviews.org 将反向 IPv4 地址或前缀(例如:128.223 -> 223.128.asn.routeviews.org)映射(解析)到由 route-views2 看到的最佳路由的原始 AS(以及前缀和前缀长度) .routeviews.org。aspath.routeviews.org 是相同的想法,但解析为完整的 AS 路径。

这可能用于通过简单的 DNS 查询获取 IP 的子网。使用子网很容易计算 IP 范围(您可能已经知道,范围只是子网的不同表示法)。

于 2010-10-24T08:23:43.193 回答