首页 > 代码编程 > 后端开发 > PHP > php 获取公网ip(PHP获取公网IP的简单方法)

php 获取公网ip(PHP获取公网IP的简单方法)

2023-08-28 PHP 30 ℃ 0 评论

什么是公网IP

在互联网上,每个设备都需要一个唯一的标识以进行通信。这个标识就是IP地址。IP地址又分为内网IP和公网IP两种。内网IP是指在局域网中使用的IP地址,而公网IP则是在互联网上使用的IP地址。

为什么需要获取公网IP

获取公网IP的场景很多,比如:

需要远程访问服务器的情况下,需要知道服务器的公网IP

某些应用程序需要获取用户的公网IP,以便提供更好的服务

网络管理员需要获知自己网络下某一个用户的公网IP地址,方便排查网络问题

如何获取公网IP

获取公网IP的方法有很多,其中一个比较简单的方法是使用PHP。

在PHP中,我们可以使用 $_SERVER 变量来获取客户端访问网站时所用的IP地址。但是这个IP地址并不一定是公网IP地址,有可能是内网IP地址。要获取公网IP,则需要使用一些第三方接口。

以下是几种获取公网IP的方法:

1. 使用第三方接口/API

通过使用一些第三方的IP查询接口,可以获取到当前服务器所使用的公网IP地址。比如:http://ifconfig.me/iphttp://icanhazip.com 等。

<?php

// 获取IP

$ip = file_get_contents('http://ifconfig.me/ip');

echo $ip;

?>

2. 使用网页抓取

可以通过网页抓取的方式,获取一些公网IP查询网站上的IP地址。这种方法的好处是可以选择自己信任的网站进行查询,但是需要考虑一些反爬虫的措施。

<?php

// 获取IP

$ch = curl_init("http://ip.chinaz.com/");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');

$output = curl_exec($ch);

curl_close($ch);

// 解析HTML,获取IP

$doc = new DOMDocument();

@$doc->loadHTML($output);

foreach ($doc->getElementsByTagName('div') as $div) {

if ($div->getAttribute('class') == 'IcpMain02') {

foreach ($div->getElementsByTagName('span') as $span) {

if ($span->getAttribute('class') == 'fr WhwtdWrap mr5') {

$ip = $span->nodeValue;

}

}

}

}

echo $ip;

?>

3. 使用DNS解析

通过使用DNS解析器,可以获取到当前域名所对应的公网IP地址。这种方法的好处是可以不用去访问第三方接口或网站,速度比较快。

<?php

// 获取IP

$ip = gethostbyname('example.com');

echo $ip;

?>

总结

获取公网IP的方法有很多,可以根据自己的需求选择不同的方法。但是需要注意的是,有些网站或者接口可能会因为访问过于频繁而限制访问,所以需要谨慎使用。

炮渣日记