Вопрос
Откуда мне знать MAC-адрес посетителей на хостинге Linux (Nginx)?
От пользователя Ethernet.
Спасибо.
Решение
Вы не можете получить это через PHP.
Протокол сети используются в стеке. При выполнении HTTP Communications ваш веб-сервер использует протокол HTTP, отвечающий за коммуникации высокого уровня. Этот протокол реализован в верхней части протокола TCP (который приносит потокоподобные соединения и номера портов), которые, в свою очередь, реализуются в верхней части протокола IP (V4 или V6, которые приносят IP-адреса для идентификации), которые в Поворот реализован в верхней части протокола Ethernet.
Протокол Ethernet - это тот, с которым вам нужно будет работать. Он имеет и исходный MAC-адрес и MAC-адрес назначения. Однако, к сожалению, с этим много проблем.
Во-первых, данные, которые она передает, вероятно, трудно доступен: я говорю «, вероятно,», потому что я никогда не наткнулся на то, как это сделать.
Во-вторых, как вы получаете адрес маршрутизатора вашего клиента, когда они получают доступ к вашему сайту, вы получаете MAC-адрес маршрутизатора вашего клиента на уровне Ethernet. Если они не пройдут любой маршрутизатор (который произойдет только в том случае, если ваш сервер был непосредственно подключен к вашему клиентскому компьютеру без какого-либо маршрутизатора, потому что есть много маршрутизаторов для других деталей для других частей Интернета), Нет вероятности, что MAC-адрес, который вы получите, будет вашим клиентом.
В-третьих, Apache никогда не попытается получить доступ к этому данным. А поскольку PHP «Sandboxed» в сетевой среде Apache дает его, вы не можете вернуться к протоколу Ethernet.
Поэтому доступ к MAC-адресу посетителя с веб-сайта, от PHP невозможно.
РЕДАКТИРОВАТЬ Кажется, вы вывели деталь PHP с вашего вопроса. Так очевидно, последний момент больше не будет стоять.
Другие советы
Вы не можете получить это с PHP, он не включен в http
Чем более общий вопрос это один. Отказ Поскольку весь PHP должен работать (я предполагаю, что это PHP работает на вашем веб-сервере, здесь) - это запрос HTTP, вы не сможете получить MAC-адрес. Это требует чего-то бегущего на стороне посетителя.
Это может или не может работать. Я знаю, что это будет работать на клиентах LAN, однако для внешних клиентов это может быть неверным. Я не знаю свои сети, но стоит выстрел правильно?
Если вы выполняете команду ARP -A в Windows или Linux, он распечатает ваши записи ARP, которые вы можете проанализировать для Mac.
Кроме того, насколько я знаю, Apache (и там PHP) не просто выдает MAC-адреса в его env vars.
* Отредактировано: Извините, что не будет работать ... Лучшая утилита проживает, однако, что просто даст вам Mac вашего маршрутизатора.
Если вы хотите сделать это, клиенты должны быть напрямую подключены к вашему серверу, без маршрутизатора между ...
Однако, если это так, то arping будет работать ... Я не знаю лучшего инструмента, но кажется немного расточительным, чтобы сделать пинг (в корне) для просто MAC-адреса.
MAC-адрес виден только для сетевого провайдера, если я правильно (ваш интернет-хост может увидеть MAC-адрес вашего маршрутизатора), не думаю, что вы можете получить его с PHP.