Подтвердить что ты не робот

Как получить MAC-адрес клиента от HttpServlet?

Мне было предложено написать сервлет, который собирает данные клиента, такие как ip, MAC-адрес и т.д.

Получение его IP довольно прямолинейно (request.getRemoteAddr()), но я не нашел элегантный способ получить его MAC-адрес.

представляется разумным, что веб-сервер имеет доступ к данным, таким как MAC-адрес и т.д., поскольку он получает пакеты TCP и все. эти данные регистрируются где-то? доступен ли он?

(Я работаю над Tomcat6)

4b9b3361

Ответ 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>