首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用托管/镜像的区域Internet注册表IP数据库查询IP国家

使用托管/镜像的区域Internet注册表IP数据库查询IP国家
EN

Stack Overflow用户
提问于 2016-01-04 15:12:11
回答 1查看 168关注 0票数 2

我想查询这些IP块,我已经将这些块卷曲/解析/修剪/插入到服务器上的一个mysql数据库表中:

  • ARIN (美国注册表)根文件夹:ftp://ftp.arin.net/pub/stats/
代码语言:javascript
复制
- [ftp://ftp.arin.net/pub/stats/ripencc/delegated-ripencc-latest](ftp://ftp.arin.net/pub/stats/ripencc/delegated-ripencc-latest)
- [ftp://ftp.arin.net/pub/stats/lacnic/delegated-lacnic-latest](ftp://ftp.arin.net/pub/stats/lacnic/delegated-lacnic-latest)
- [ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest](ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest)
- [ftp://ftp.arin.net/pub/stats/apnic/delegated-apnic-latest](ftp://ftp.arin.net/pub/stats/apnic/delegated-apnic-latest)
- [ftp://ftp.arin.net/pub/stats/afrinic/delegated-afrinic-latest](ftp://ftp.arin.net/pub/stats/afrinic/delegated-afrinic-latest)

规范(和表列结构):

registry|cc|type|start|value|date|status

https://www.apnic.net/publications/media-library/documents/resource-guidelines/rir-statistics-exchange-format#FileHeader

问题)如何输入单个IP地址,并返回一个2字符的ISO 3166国家代码?

我试着写了这方面的查询。但我并不真正理解什么是“启动”means...or,至少如何将其与IP块范围的某种"end“关联起来。

在过去,我曾针对高/低或从/到范围查询IP地址的长形式。

如果这一点有帮助的话,我有以下php函数,我过去曾使用这些函数将IP地址转换为长形式整数:

代码语言:javascript
复制
//Convert IPv6 address into long form number
function ip6_to_ipnumber($ip_address) {
  $pton = @inet_pton($ip_address);
  if (!$pton) { return false; }
  $number = '';
  foreach (unpack('C*', $pton) as $byte) {
    $number .= str_pad(decbin($byte), 8, '0', STR_PAD_LEFT);
  }
  return base_convert(ltrim($number, '0'), 2, 10);
}

//Convert IPv4 address into long form number
function ip4_to_ipnumber($ip_address) {
  return ip2long($ip_address);
}

//Identify the IP address version
function ip_version($ip_address) {
     return strpos($ip_address, ":") === false ? 4 : 6;
}

让我接受赏金:

  1. 解释解决方案是如何工作的。
  2. 查询答案必须同时适用于IPv4和IPv6,并返回单个国家的ISO3166代码。
  3. 必须能够同时查询来自所有5个注册表区域的数据。
  4. 如果原始形式的表的MySql查询不能工作,请解释表结构所需的更改(例如转换为长形式整数)。

本质上,我正在寻找一种解决方案,根据来自区域注册中心的最新公共域IP块数据来定位ip地址国

这个解决方案可能会对很多人有用。祝你好运,谢谢你们的帮助!

EN

回答 1

Stack Overflow用户

发布于 2016-01-05 14:57:19

嗨,我正在研究你的问题,我发送电子邮件,以获得信息,但这些服务的工厂没有支持这一点。但是,如果您可以查看链接,则页是一个远程文件(name_file.text),如果您可以使用该文件,请使用

代码语言:javascript
复制
 $content = file_get_contents('http://www.example.com/');
echo $content;

如果您尝试这样做,您可以读取url (远程文件)。

有关此链接的更多信息,请查看此链接。

在这里输入链接描述

您可以获得更多关于读取文件的每个部分的信息,并使用您需要的方式。

代码语言:javascript
复制
file() - Reads entire file into an array
fgets() - Gets line from file pointer
fread() - Binary-safe file read
readfile() - Outputs a file
file_put_contents() - Write a string to a file
stream_get_contents() - Reads remainder of a stream into a string
stream_context_create() - Creates a stream context
$http_response_header
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34594160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档