获取MAC地址

时间:2010-11-18 22:56:51

标签: macos mac-address

我如何知道访问者在linux托管(nginx)上的MAC地址?

来自以太网用户。

感谢。

5 个答案:

答案 0 :(得分:8)

你无法通过PHP获得这一点。

网络协议用于堆栈。在进行HTTP通信时,Web服务器使用HTTP协议,负责高级通信。该协议在TCP协议的顶部实现(它带来了类似流的连接和端口号),而这些协议又在IP协议(v4或v6,它带来用于识别的IP地址)的顶部实现, turn在以太网协议的顶部实现。

以太网协议是您需要使用的协议。它具有源MAC地址和目标MAC地址。然而,最不幸的是,它存在很多问题。

首先,它传达的数据可能很难获取:我说“可能”因为我从来没有偶然发现如何做到这一点。

其次,就像您在访问站点时获取客户端的路由器地址一样,您可以在以太网级别获得客户端的路由器MAC地址。除非他们不遍历任何路由器(只有当你的服务器直接连接到你的客户端机器而没有任何路由器干扰时才会发生,因为有很多路由器将数据中继到互联网的其他部分)您收到的MAC地址不可能是您的客户。

第三,Apache永远不会尝试访问该数据。而且由于PHP被“沙盒化”到Apache提供的网络环境中,因此无法再回到以太网协议。

因此,无法从PHP访问网站访问者的MAC地址。

编辑似乎你已经从你的问题中取出了PHP部分。显然,最后一点不再适用。

答案 1 :(得分:3)

你不能用php得到它,它不包含在http

答案 2 :(得分:3)

更一般的问题is this one。由于所有PHP必须使用(我假设这是在您的网络服务器上运行的PHP,这里)是HTTP请求,您将无法获得MAC地址。这需要在访客身边运行一些东西。

答案 3 :(得分:1)

这可能会或可能不会奏效。我知道它可以在LAN客户端上运行,但是对于外部客户端,它可能是不正确的。我不太了解我的网络,但值得一试吗?

如果你在windows或linux上执行arp -a命令,它会打印出你的arp记录,然后你就可以解析它了。

除此之外,据我所知,apache(以及php)并不只是在其env变种中提供mac地址。

*已编辑:对不起,这不会有效...更好的实用程序是arping但是只会给你路由器的mac。

如果你想这样做,客户需要直接连接到你的服务器,中间没有路由器......

然而,如果是这样的话,那么arping将起作用......我不知道一个更好的工具,但是对于一个mac地址执行ping(在root中)似乎有点浪费。

答案 4 :(得分:0)

只有网络提供商才能看到mac地址,如果我是正确的(例如你的网络主机可以看到路由器的mac地址),不要认为你可以通过php获取它。