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

问题描述 投票:-1回答:5

我需要知道连接客户端的MAC地址,我该如何在PHP中执行此操作?

php mac-address
5个回答
1
投票

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


0
投票

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


0
投票

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

shell_exec("sudo $arp -an ".$_SERVER['REMOTE_ADDR']); line in.NB:确保通过运行sudo visudo并将"www-data ALL=NOPASSWD /usr/bin/arp"添加到文件底部的某个位置,将默认的apache用户添加到sudoers文件中。


0
投票

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

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

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


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>"

?>

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

© www.soinside.com 2019 - 2024. All rights reserved.