访问我的网站时如何获取客户端MAC地址?

时间:2017-07-13 06:00:42

标签: php mac-address

我需要知道连接客户端的MAC地址,  我怎么能用PHP做到这一点?

5 个答案:

答案 0 :(得分:1)

通常情况下,安全问题不可能发生。因为MAC地址是您的计算机地址,您的服务器无法访问您的计算机。 MAC地址不会在设备连接的LAN之外广播 - 它永远不会离开路由器并传递到服务器。

答案 1 :(得分:0)

除非桌面应用程序在用户的计算机上运行,​​否则我认为不可能。

答案 2 :(得分:0)

通过互联网,你可以' T。但是如果客户端在本地网络(LAN)上,则创建一个php文件并将其放入

shell_exec("sudo $arp -an ".$_SERVER['REMOTE_ADDR']); 划线。注意:确保添加  通过运行默认的apache用户到sudoers文件  sudo visudo 并在某处将"www-data ALL=NOPASSWD /usr/bin/arp"添加到文件的底部。

答案 3 :(得分:0)

除非客户自己在邮件中发送,否则你不能。

这是因为MAC地址是仅用于本地连接的本地地址。计算机使用它与本地网络(LAN)中的其他设备通信,例如计算机,路由器,打印机等。 这也意味着拥有客户端的MAC地址对于长时间通信也没用,因为它们不在同一个网络中。

为了与本地网络(WAN)以外的设备通信,使用IP地址和端口号。 路由器使用IP地址知道发送数据的位置,而端口号通常用于最终路由器,以将公共IP地址转换为专用IP地址(192.168.XX,172.16.XX,10.XXX),称为NAT。 目标计算机还使用端口号来了解应将数据发送到哪个程序/进程。

答案 4 :(得分:0)

我知道这个帖子有点旧,但我已经搜索了很多网页,试图为同一个问题找到解决方案。经过大量的网络搜索以及许多从未奏效的解决方案和代码后,我在下面编写了两段代码。

请记住,您只能获取局域网上机器的mac地址,无法通过浏览器获取mac。希望这也可以帮助别人。

<?php
$ip_address = $_SERVER['REMOTE_ADDR'];
$mac = `arp $ip_address | cut -d " " -f4`;
echo "<br />Your Mac is: ";  
echo $mac;
?>

上面的第一个版本是我能得到的最简单的版本。

下面的另一个更复杂,因为它带来了代理和主机名。

<?php
$http_client_ip = $_SERVER['HTTP_CLIENT_IP'];
$http_x_forwarded_for = $_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_addr = $_SERVER['REMOTE_ADDR'];
$hostname = gethostname();


if (!empty($http_client_ip)) {
    $ip_address = $http_client_ip;
} else if (!empty($http_x_forwarded_for)) {
    $ip_address = $http_x_forwarded_for;
} else  {
    $ip_address = $remote_addr;
}

//$output = shell_exec('arp -n $ip_address'); 
$mac = `arp $ip_address | cut -d " " -f4`;


//echo "<br /> <br />Your hostname is: $hostname";
//echo $hostname;  
echo "<br />Your Mac is: ";  
echo $mac;
//echo "<pre>$output</pre>"

?>

我再一次想把它留在这里以帮助其他人。