Как получить локальный ip пользователя при нажатии кнопки на странице?
Доброго времени суток.
На сайте есть форма для обращений в которой есть поле "IP адрес".
Можно ли как то реализовать парс локального IP пользователя в форму, условно при нажатии кнопки 'Указать автоматически'?
Пробовал гуглить, везде пишут про js скрипт с использованием rtc. Попробовал реализовать, ничего не выходит(как я понял rtc прикрыли)
Заранеее спасибо
Дополнительно:
Какого именно IP? Скажем, с компьютера 192.168.0.2 запрос идёт через прокси на 192.168.0.1, затем шлюз с внешним адресом 1.2.3.4, который работает через VPN 4.3.2.1.
грубо он должен спарсить 192.168.0.2
Вы не можете получить локальный адрес из браузера, так как это была бы серьезная утечка данных. НО, можно получить нечто вроде хеша локального адреса, емнип он будет одинаковым для одного устройства с конкретным IP. Можно посмотреть тут
Ответы:
snippet
- это применимо только для получения внешнего IP. Его можно и просто с логов сервера собрать при желании, а речь именно о локальном IP юзера
- Ancient Ghoul, а зачем он вам сдался?
Тем более что по нынешним временам он может быть не один - Владимир Коротенко, хелпдеск для локалки?
- Drno, можно и так сказать, только что сам веб сервер на внешнем хостинге.
- Владимир Коротенко, ну, собственно для указания его в заявке. Один он или нет, v4 или v6 особо роли не играет, главное что бы хоть какой то результат был и направление с которым уже можно работать
- Ancient Ghoul, серые адреса не маршрутизируются, это прописано в рфк.
Вм же нужно искать по теме 2 пробитие нат.
Обычный PHP это умеет.
- Не могли бы вы поделится своим опытом?
Мой закончился на получении адреса шлюза, локальный так и не понял как собрать -
<?php echo $_SERVER['REMOTE_ADDR']; ?>
<?php echo $_SERVER['REMOTE_ADDR']; ?>
- Sanes, это не локальный адрес, если вы выходите в интернет через роутер, то вы получите адрес роутера, но никак не локальный адрес вашего устройства.
- ThunderCat, браузер не покажет ему локальный адрес.
- Sanes, Я в курсе, спасибо )
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Для того чтобы получить локальный IP адрес пользователя при нажатии кнопки на странице, вы можете воспользоваться JavaScript. Ниже приведен пример кода, который позволит вам достичь этой цели:
```html
function getLocalIP() {
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var pc = new RTCPeerConnection({iceServers: []}), noop = function() {};
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
pc.onicecandidate = function(event) {
if (event.candidate) {
var ip = event.candidate.candidate.split(' ')[4];
document.getElementById('localIP').textContent = 'Your local IP address is: ' + ip;
pc.onicecandidate = noop;
}
};
}
```
Этот код использует технику WebRTC для получения локального IP адреса пользователя. При нажатии кнопки "Get Local IP Address" будет запущена функция `getLocalIP()`, которая создает RTCPeerConnection и после успешного создания данных канала и предложения, получает локальный IP адрес пользователя.
Обратите внимание, что этот подход может не работать во всех браузерах и может потребовать HTTPS соединения для корректной работы. Также некоторые пользователи могут иметь прокси-серверы или другие сетевые конфигурации, которые могут повлиять на точность определения локального IP адреса.
Надеюсь, это поможет вам решить вашу проблему! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Для получения локального IP пользователя при нажатии кнопки на странице можно воспользоваться JavaScript. Вот пример кода, который поможет вам реализовать данную задачу:
```html
document.getElementById('getLocalIp').onclick = function() {
var RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) {
var rtc = new RTCPeerConnection({iceServers: []});
rtc.createDataChannel('');
rtc.onicecandidate = function(event) {
if (event.candidate) {
var ip = event.candidate.candidate.split(' ')[4];
document.getElementById('localIp').textContent = 'Ваш локальный IP: ' + ip;
rtc.onicecandidate = null;
}
};
rtc.createOffer()
.then(offer => rtc.setLocalDescription(offer))
.catch(error => console.error(error));
} else {
alert('WebRTC недоступен, невозможно получить локальный IP');
}
};
```
Этот код использует WebRTC для получения локального IP пользователя. При нажатии на кнопку "Получить локальный IP" будет создан RTCPeerConnection, затем будет создан offer и установлено локальное описание. После этого будет вызван обработчик onicecandidate, который извлекает локальный IP из кандидата ICE и выводит его на страницу.
Убедитесь, что ваш браузер поддерживает WebRTC, чтобы данный код работал корректно.