Linux 技术手札

PHP 查询 IP 所属国家

要查询 IP 所属国家, 一般上会用 IP 数据库查询, 网上也有一些网站可以免费查询, 但如果想在自己的 PHP 程式, 查询 IP 所属国家, 便需要下载一些 IP 转国家的数据库, 有付费及免费。

另一个较简单方便的做法, 是使用 API 查询, 以下会示范使用 freegeoip.net 的免费服务查询 IP 所属国家的方法。

freegeoip.net 把供 CSV, XML 及 JSON 几种格式的 API, 使用方法也很简单, 例如想取得 8.8.8.8 的资料, 只要开启以下网站:

CSV:
http://freegeoip.net/csv/8.8.8.8

XML:
http://freegeoip.net/xml/8.8.8.8

JSON:
http://freegeoip.net/json/8.8.8.8

以下是使用 PHP 内建的 json_decode() 函式, 读取 freegeoip 的 JSON 资料的例子。

freegeoip 回传的资料, 除了国家名称外, 也有国家代号, 区域, 城市, 邮政编号及时区等, 以下是回传的参考资料:

现在假设只要取得 country_name, 即国家名称, 可以这样写:

以上方法除了可以在 PHP 使用外, 在其他程式语言 (如 Shell Script, Python) 使用也很方便, 如果需要查询更详细的 IP 资料, 例如 IP 所属的网络供应商等, 便需要购买相关服务了。

Exit mobile version