Как получить локальный ip пользователя при нажатии кнопки на странице?

Ссылка скопирована
2 ответов

Доброго времени суток.
На сайте есть форма для обращений в которой есть поле "IP адрес".
Можно ли как то реализовать парс локального IP пользователя в форму, условно при нажатии кнопки 'Указать автоматически'?
Пробовал гуглить, везде пишут про js скрипт с использованием rtc. Попробовал реализовать, ничего не выходит(как я понял rtc прикрыли)
Заранеее спасибо

Дополнительно:

Какого именно IP? Скажем, с компьютера 192.168.0.2 запрос идёт через прокси на 192.168.0.1, затем шлюз с внешним адресом 1.2.3.4, который работает через VPN 4.3.2.1.

  • Rsa97, локальный IP юзера. Тот, что показывает в ipconfigifconfig
    грубо он должен спарсить 192.168.0.2
  • Ancient Ghoul, никак
  • Ancient Ghoul, Только если прокси добавит заголовок X-Forwarded-For. В общем случае он делать этого не обязан. В любом другом случае вы увидите только тот IP, непосредственно с которого пришёл запрос (в данном примере - адрес VPN).
  • Вы не можете получить локальный адрес из браузера, так как это была бы серьезная утечка данных. НО, можно получить нечто вроде хеша локального адреса, емнип он будет одинаковым для одного устройства с конкретным 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, Я в курсе, спасибо )
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ольга Сеть Ответ

    Для получения локального IP пользователя при нажатии кнопки на странице можно воспользоваться JavaScript. Вот пример кода, который поможет вам реализовать данную задачу:

    ```html

    Получение локального IP

    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, чтобы данный код работал корректно.

    Другие ответы (1) Ответить на вопрос
    Кирилл JS

    Для того чтобы получить локальный IP адрес пользователя при нажатии кнопки на странице, вы можете воспользоваться JavaScript. Ниже приведен пример кода, который позволит вам достичь этой цели:

    ```html

    Get Local IP Address

    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 адреса.

    Надеюсь, это поможет вам решить вашу проблему! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно