Я хочу получить client-ip, либо клиент подключен к локальной сети или WIFI, используя скрипт java - PullRequest
0 голосов
/ 30 марта 2020

Я хочу получить client-ip, либо клиент подключен к локальной сети или WIFI с использованием сценария java, в настоящее время я использую следующий код:

function  getUserIP(onNewIP) {
// compatibility for firefox and chrome
let myPeerConnection = window['RTCPeerConnection'] || window['mozRTCPeerConnection'] || window['webkitRTCPeerConnection'];
let pc = new myPeerConnection({
iceServers: []
}),
noop = function () { },
localIPs = {},
ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
key;

function iterateIP(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}

// create a bogus data channel
pc.createDataChannel("");

// create offer and set local description
pc.createOffer(function (sdp) {
sdp.sdp.split('\n').forEach(function (line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(iterateIP);
});

pc.setLocalDescription(sdp, noop, noop);
}, noop);

// listen for candidate events
pc.onicecandidate = function (ice) {
if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
};
}
let ipAddr = [];
this.getUserIP(function (ip) {
ipAddr.push(ip);
localStorage['ip'] = ipAddr[0];
});

Этот код работает для более старой версии chrome но не работает для последних chrome (версия 80).

1 Ответ

1 голос
/ 30 марта 2020

Chrome 76+ В прошлом году я успешно обнаружил свой локальный IP через JavaScript. Однако в последних Chrome обновлениях (76?) Этот метод работал так, что теперь он возвращает скрытый IP-адрес, например: 1f4712db-ea17-4bcf-a596-105139dfd8bf.local

Если у вас есть полный контроль над В вашем браузере вы можете отменить это поведение, отключив его в Chrome Flags, введя его в адресную строку:

chrome: // flags и ОТКЛЮЧИВ флаг, чтобы анонимизировать локальные IP-адреса, предоставляемые WebRT C

В моем случае мне требуется IP-адрес для скрипта TamperMonkey, чтобы определить мое текущее местоположение и сделать разные вещи в зависимости от моего местоположения. У меня также есть полный контроль над собственными настройками браузера (без корпоративных политик и т. Д. c). Так что для меня изменение настройки chrome: // flags делает свое дело.

Источники:

https://groups.google.com/forum/#! Topic / обсуждения-webrtc / 6stQXi72BEU

https://codelabs.developers.google.com/codelabs/webrtc-web/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...