Как получить MAC-адрес клиента от HttpServlet?
Мне было предложено написать сервлет, который собирает данные клиента, такие как ip, MAC-адрес и т.д.
Получение его IP довольно прямолинейно (request.getRemoteAddr()
), но я не нашел элегантный способ получить его MAC-адрес.
представляется разумным, что веб-сервер имеет доступ к данным, таким как MAC-адрес и т.д., поскольку он получает пакеты TCP и все. эти данные регистрируются где-то? доступен ли он?
(Я работаю над Tomcat6)
Ответы
Ответ 1
Вероятно, вы не получите то, что хотите. (MAC-адрес клиента)
Если сервер достаточно близко (напрямую подключен через концентратор или, возможно, коммутатор), вы можете ARP для MAC-адреса. Если вы сделаете это для IP через Интернет, вы, вероятно, получите внутренний интерфейс ближайшего маршрутизатора или коммутатора.
Из-за того, как работает TCP/IP, MAC-адрес, используемый в "фрейме", будет разорван и повторно собран в каждом прыжке, который занимает информация между сервером и хостом.
![alt text]()
Encapsulation
Ответ 2
TCP/IP... Вы не можете получить MAC-адрес, что слишком низкий уровень AFAIK
Ответ 3
Я считаю, что клиентам необходимо разрешить это в своей JVM:
Смотрите thread
Ответ 4
Это невозможно в классе HttpServlet.
Единственный способ, которым я могу думать о том, что, возможно, получить MAC-адрес пользователя, - это использовать Javascript на стороне клиента для его извлечения, а затем поместить его в файл cookie, который ваш сервер может прочитать. Но я не знаю, можно ли получить MAC-адрр с помощью Javascript - это будет представлять угрозу безопасности для браузера, который позволит вам сделать это, поскольку он выходит за пределы изолированной программной панели браузера, но, возможно, там что-то взломать, чтобы сделать это.
Ответ 5
этот script работает лучшая 100% вероятность того, что он работает на вас localhost, но вы должны проверить это с помощью своего веб-хостинга
есть код php, который намного лучше
<font color="black" face="courier new">
<b>mac/linux/android</b>(arp -an)<br>
<?php
$mac = system('arp -an');
echo $mac;
echo "<hr>";
?>
<b>mac/linux/android</b>(ifconfig)<br>
<?php
$macall = system('ifconfig');
echo $macall;
echo "<hr>";
?>
<b>pc/win</b>(ipconfig /all)<br>
<?php
$pc = system('ipconfig /all');
echo $pc;
echo "<hr>";
?>
</font>