J'ai besoin de récupérer l'adresse IP du client en utilisant JavaScript; pas de code côté serveur, pas même SSI.
Cependant, je ne suis pas contre l'utilisation d'un script/service tiers gratuit.
Je voudrais utiliser un service Web qui peut renvoyer JSON (avec jQuery pour simplifier les choses). Vous trouverez ci-dessous tous les services de recherche IP libres actifs que je pouvais trouver et les informations qu’ils renvoient. Si vous en savez plus, alors s'il vous plaît ajoutez un commentaire et je mettrai à jour cette réponse.
Essayez: http://api.db-ip.com/addrinfo?api_key= < votre clé api > & addr = < adresse IP >
Résultats:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
Limitations:
Essayez-le: http://Gd.geobytes.com/GetCityDetails
$.getJSON('http://Gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"geobytesforwarderfor": "",
"geobytesremoteip": "116.12.250.1",
"geobytesipaddress": "116.12.250.1",
"geobytescertainty": "99",
"geobytesinternet": "SA",
"geobytescountry": "Saudi Arabia",
"geobytesregionlocationcode": "SASH",
"geobytesregion": "Ash Sharqiyah",
"geobytescode": "SH",
"geobyteslocationcode": "SASHJUBA",
"geobytescity": "Jubail",
"geobytescityid": "13793",
"geobytesfqcn": "Jubail, SH, Saudi Arabia",
"geobyteslatitude": "27.004999",
"geobyteslongitude": "49.660999",
"geobytescapital": "Riyadh ",
"geobytestimezone": "+03:00",
"geobytesnationalitysingular": "Saudi Arabian ",
"geobytespopulation": "22757092",
"geobytesnationalityplural": "Saudis",
"geobytesmapreference": "Middle East ",
"geobytescurrency": "Saudi Riyal",
"geobytescurrencycode": "SAR",
"geobytestitle": "Saudi Arabia"
}
Limitations:
Essayez: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"isp": "SGPOST",
"org": "Singapore Post Ltd",
"hostname": "116.12.250.1",
"longitude": "103.807",
"latitude": "1.29209",
"postal_code": "",
"city": "Singapore",
"country_code": "SG",
"country_name": "Singapore",
"continent_code": "AS",
"region": "Central Singapore",
"district": "",
"timezone_name": "Asia\/Singapore",
"connection_type": "",
"asn": "AS3758 SingNet",
"currency_code": "SGD",
"currency_name": "Singapore Dollar",
"success": true
}
Limitations:
Essayez-le: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"geoplugin_request": "116.12.250.1",
"geoplugin_status": 200,
"geoplugin_credit": "Some of the returned data includes GeoLite data created by MaxMind, available from <a href=\\'http://www.maxmind.com\\'>http://www.maxmind.com</a>.",
"geoplugin_city": "Singapore",
"geoplugin_region": "Singapore (general)",
"geoplugin_areaCode": "0",
"geoplugin_dmaCode": "0",
"geoplugin_countryCode": "SG",
"geoplugin_countryName": "Singapore",
"geoplugin_continentCode": "AS",
"geoplugin_latitude": "1.2931",
"geoplugin_longitude": "103.855797",
"geoplugin_regionCode": "00",
"geoplugin_regionName": "Singapore (general)",
"geoplugin_currencyCode": "SGD",
"geoplugin_currencySymbol": "$",
"geoplugin_currencySymbol_UTF8": "$",
"geoplugin_currencyConverter": 1.4239
}
Limitations:
Essayez-le: https://api.hackertarget.com/geoip/?q= < adresse ip >
Résultats:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
Limitations:
Essayez: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"country": "SG",
"country_name": "Singapore",
"postal": null,
"latitude": 1.2855,
"longitude": 103.8565,
"timezone": "Asia/Singapore"
}
Limitations:
Essayez-le: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"as": "AS3758 SingNet",
"city": "Singapore",
"country": "Singapore",
"countryCode": "SG",
"isp": "SingNet Pte Ltd",
"lat": 1.2931,
"lon": 103.8558,
"org": "Singapore Telecommunications",
"query": "116.12.250.1",
"region": "01",
"regionName": "Central Singapore Community Development Council",
"status": "success",
"timezone": "Asia/Singapore",
"Zip": ""
}
Limitations:
Essayez ceci: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"region_code": "01",
"country_name": "Singapore",
"country_code": "SG",
"continent_name": "Asia",
"continent_code": "AS",
"latitude": 1.2931,
"longitude": 103.8558,
"asn": "AS3758",
"organisation": "SingNet",
"postal": "",
"calling_code": "65",
"flag": "https://ipdata.co/flags/sg.png",
"emoji_flag": "\ud83c\uddf8\ud83c\uddec",
"emoji_unicode": "U+1F1F8 U+1F1EC",
"is_eu": false,
"languages": [
{
"name": "English",
"native": "English"
},
{
"name": "Malay",
"native": "Bahasa Melayu"
},
{
"name": "Tamil",
"native": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
},
{
"name": "Chinese",
"native": "\u4e2d\u6587"
}
],
"currency": {
"name": "Singapore Dollar",
"code": "SGD",
"symbol": "S$",
"native": "$",
"plural": "Singapore dollars"
},
"time_zone": {
"name": "Asia/Singapore",
"abbr": "+08",
"offset": "+0800",
"is_dst": false,
"current_time": "2018-05-09T12:28:49.183674+08:00"
},
"threat": {
"is_tor": false,
"is_proxy": false,
"is_anonymous": false,
"is_known_attacker": false,
"is_known_abuser": false,
"is_threat": false,
"is_bogon": false
}
}
Limitations:
Essayez-le: https://ipfind.co/me?auth= < votre clé d'api >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip_address": "116.12.250.1",
"country": "Singapore",
"country_code": "SG",
"continent": "Asia",
"continent_code": "AS",
"city": "Singapore",
"county": null,
"region": "Central Singapore",
"region_code": "01",
"timezone": "Asia/Singapore",
"owner": null,
"longitude": 103.8565,
"latitude": 1.2855,
"currency": "SGD",
"languages": [
"cmn",
"en-SG",
"ms-SG",
"ta-SG",
"zh-SG"
]
}
Limitations:
Essayez-le: https://api.ipgeolocation.io/ipgeo?apiKey= < votre clé d'api >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"continent_code": "AS",
"continent_name": "Asia",
"country_code2": "SG",
"country_code3": "SGP",
"country_name": "Singapore",
"country_capital": "Singapore",
"state_prov": "Central Singapore",
"district": "",
"city": "Singapore",
"zipcode": "",
"latitude": "1.29209",
"longitude": "103.807",
"is_eu": false,
"calling_code": "+65",
"country_tld": ".sg",
"languages": "cmn,en-SG,ms-SG,ta-SG,zh-SG",
"country_flag": "https://ipgeolocation.io/static/flags/sg_64.png",
"isp": "SGPOST",
"connection_type": "",
"organization": "Singapore Post Ltd",
"geoname_id": "1880252",
"currency": {
"name": "Dollar",
"code": "SGD"
},
"time_zone": {
"name": "Asia/Singapore",
"offset": 8,
"is_dst": false,
"current_time": "2018-06-12 09:06:49.028+0800"
}
}
Limitations:
Essayez: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1"
}
Limitations:
Essayez ceci: https://api.ipinfodb.com/v3/ip-city/?key= < votre clé d'api > & format = json
$.getJSON('https://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&format=json&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"statusCode": "OK",
"statusMessage": "",
"ipAddress": "116.12.250.1",
"countryCode": "SG",
"countryName": "Singapore",
"regionName": "Singapore",
"cityName": "Singapore",
"zipCode": "048941",
"latitude": "1.28967",
"longitude": "103.85",
"timeZone": "+08:00"
}
Limitations:
Essayez: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"hostname": "No Hostname",
"city": "Singapore",
"region": "Central Singapore Community Development Council",
"country": "SG",
"loc": "1.2931,103.8558",
"org": "AS3758 SingNet"
}
Limitations:
Essayez-le: https://api.ipregistry.co/?key= < votre clé d'api >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"type": "IPv4",
"hostname": null,
"connection": {
"asn": 3758,
"organization": "SingNet"
},
"currency": {
"code": "SGD",
"name": "Singapore Dollar",
"plural": "Singapore dollars",
"symbol": "SGD",
"symbol_native": "SGD",
"format": null
},
"location": {
"continent": {
"code": "AS",
"name": "Asia"
},
"country": {
"area": 692,
"borders": [],
"calling_code": "65",
"capital": "Singapore",
"code": "SG",
"name": "Singapore",
"population": 5638676,
"population_density": 8148.38,
"flag": {
"emoji": "????????",
"emoji_unicode": "U+1F1F8 U+1F1EC",
"emojitwo": "https://cdn.ipregistry.co/flags/emojitwo/sg.svg",
"noto": "https://cdn.ipregistry.co/flags/noto/sg.png",
"twemoji": "https://cdn.ipregistry.co/flags/twemoji/sg.svg",
"wikimedia": "https://cdn.ipregistry.co/flags/wikimedia/sg.svg"
},
"languages": [
{
"code": "cmn",
"name": "cmn",
"native": "cmn"
},
{
"code": "en",
"name": "English",
"native": "English"
},
{
"code": "ms",
"name": "Malay",
"native": "Melayu"
},
{
"code": "ta",
"name": "Tamil",
"native": "தமிழ்"
},
{
"code": "zh",
"name": "Chinese",
"native": "中文"
}
],
"tld": ".sg"
},
"region": {
"code": null,
"name": null
},
"city": "Singapore",
"postal": "18",
"latitude": 1.2997,
"longitude": 103.8546,
"language": {
"code": "cmn",
"name": "cmn",
"native": "cmn"
},
"in_eu": false
},
"security": {
"is_bogon": false,
"is_tor": false,
"is_tor_exit": false,
"is_proxy": false,
"is_anonymous": false,
"is_abuser": false,
"is_attacker": false,
"is_threat": false
},
"time_zone": {
"id": "Asia/Singapore",
"abbreviation": "SGT",
"current_time": "2019-08-01T01:06:28+08:00",
"name": "Singapore Standard Time",
"offset": 28800,
"in_daylight_saving": false
}
}
Limitations:
Essayez: http://api.ipstack.com/ < adresse IP >? clé_accès = <votre clé d'api>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"type": "ipv4",
"continent_code": "AS",
"continent_name": "Asia",
"country_code": "SG",
"country_name": "Singapore",
"region_code": "01",
"region_name": "Central Singapore Community Development Council",
"city": "Singapore",
"Zip": null,
"latitude": 1.2931,
"longitude": 103.8558,
"location": {
"geoname_id": 1880252,
"capital": "Singapore",
"languages": [{
"code": "en",
"name": "English",
"native": "English"
},
{
"code": "ms",
"name": "Malay",
"native": "Bahasa Melayu"
},
{
"code": "ta",
"name": "Tamil",
"native": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
},
{
"code": "zh",
"name": "Chinese",
"native": "\u4e2d\u6587"
}],
"country_flag": "http:\/\/assets.ipstack.com\/flags\/sg.svg",
"country_flag_emoji": "\ud83c\uddf8\ud83c\uddec",
"country_flag_emoji_unicode": "U+1F1F8 U+1F1EC",
"calling_code": "65",
"is_eu": false
}
}
Limitations:
Essayez-le: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1",
"about": "/about",
"Pro!": "http://getjsonip.com",
"reject-fascism": "Liberal America will prevail"
}
Limitations:
Essayez-le: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"ip": "116.12.250.1"
}
Limitations:
Essayez: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"city": "Singapore",
"country": {
"name": "Singapore",
"code": "SG"
},
"location": {
"accuracy_radius": 50,
"latitude": 1.2855,
"longitude": 103.8565,
"time_zone": "Asia/Singapore"
},
"ip": "116.12.250.1"
}
Limitations:
Essayez: https://smartip.io/api/?api_key= < votre clé d'api >
$.getJSON('https://smartip.io/api/?api_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Résultats:
{
"status-code": 200,
"country": {
"is-metric": true,
"is-in-europe": false,
"region-geo-id": null,
"continent-geo-id": 6255147,
"country-geo-id": 1880251,
"region-code": null,
"region-name": null,
"continent-code": "AS",
"continent-name": "Asia",
"capital": "Singapur",
"country-name": "Singapore",
"country-two-letter-iso-code": "SG",
"country-iso-code": "SG"
},
"location": {
"metro-code": null,
"longitude": 103.8547,
"latitude": 1.2929,
"timezone": "Asia/Singapore",
"Zip-code": null,
"city": "Singapore"
},
"asn": {
"organization": "SingNet",
"asn": "AS3758"
},
"currency": {
"native-name": "新币",
"code": "SGD",
"name": "Singapore Dollar",
"symbol": "$"
},
"timezone": {
"is-daylight-saving": false,
"gmt-offset": 28800,
"date-time": "2019-08-23T14:22:11+08:00",
"Microsoft-name": "Singapore Standard Time",
"iana-name": "Asia/Singapore"
},
"security": {
"is-crawler": false,
"is-proxy": false,
"is-tor": false,
"tor-insights": null,
"proxy-insights": null,
"crawler-insights": null
},
"crypto": {
"is-crypto-node": false,
"crypto-insights": null
},
"user-agent": {
"os": {
"name": "Windows",
"platform": "x64",
"version": "10",
"family": "Windows"
},
"device": {
"brand": "",
"model": "",
"family": "desktop"
},
"engine-version": "",
"engine": "Blink",
"name": "Chrome",
"type": "browser",
"header": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
"version": "76.0.3809.100",
"family": "Chrome"
},
"error": null,
"hostname": "116.12.250.1",
"ip-type": "ipv4",
"ip": "116.12.250.1"
}
Limitations:
N'oubliez pas que, puisque tous ces services sont gratuits, votre kilométrage peut varier en termes de dépassement des quotas et de disponibilité, et qui sait quand/s'ils seront déconnectés (tableau A: Telize ) . La plupart de ces services offrent également un niveau payant si vous souhaitez davantage de fonctionnalités telles que la prise en charge de SSL.
En outre, comme Skobaljic l’a noté dans les commentaires ci-dessous, les quotas de demandes sont pour la plupart théoriques, car cela se produit côté client et que la plupart des utilisateurs finaux ne dépasseront jamais le quota.
MET À JOUR
Mise à jour : J'ai toujours voulu créer une version min/uglifiée du code, voici donc un code de promesse ES6:
var findIP = new Promise(r=>{var w=window,a=new (w.RTCPeerConnection||w.mozRTCPeerConnection||w.webkitRTCPeerConnection)({iceServers:[]}),b=()=>{};a.createDataChannel("");a.createOffer(c=>a.setLocalDescription(c,b,b),b);a.onicecandidate=c=>{try{c.candidate.candidate.match(/([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g).forEach(r)}catch(e){}}})
/*Usage example*/
findIP.then(ip => document.write('your ip: ', ip)).catch(e => console.error(e))
Remarque: Ce nouveau code réduit ne renverra qu'une seule adresse IP si vous souhaitez que toutes les adresses IP de l'utilisateur (qui peuvent être plus dépendantes de son réseau), utilisez le code d'origine ...
grâce à WebRTC , il est très facile d'obtenir une adresse IP locale dans les navigateurs WebRTC (du moins pour le moment). J'ai modifié le code source, réduit le nombre de lignes, ne faisant aucune demande d'étourdissement, car vous ne voulez que l'adresse IP locale, pas l'adresse IP publique, le code ci-dessous fonctionne dans les derniers Firefox et Chrome, exécutez simplement l'extrait et vérifiez par vous-même:
function findIP(onNewIP) { // onNewIp - your listener function for new IPs
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
var 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 ipIterate(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(function(sdp) {
sdp.sdp.split('\n').forEach(function(line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(ipIterate);
});
pc.setLocalDescription(sdp, noop, noop);
}, noop); // create offer and set local description
pc.onicecandidate = function(ice) { //listen for candidate events
if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
};
}
var ul = document.createElement('ul');
ul.textContent = 'Your IPs are: '
document.body.appendChild(ul);
function addIP(ip) {
console.log('got ip: ', ip);
var li = document.createElement('li');
li.textContent = ip;
ul.appendChild(li);
}
findIP(addIP);
<h1> Demo retrieving Client IP using WebRTC </h1>
ce qui se passe ici, c’est que nous sommes en train de créer une fausse connexion entre homologues et que, pour que les homologues distants nous contactent, nous échangeons généralement des candidats à la glace. Et en lisant les candidats ice (à partir de la description de la session locale et de onIceCandidateEvent), nous pouvons dire l’adresse IP de l’utilisateur.
où j'ai pris le code de -> Source
Vous pouvez le relayer via le côté serveur avec JSONP
Et tout en cherchant sur Google pour en trouver un, je l'ai trouvé ici sur SO Puis-je effectuer une recherche DNS (nom d'hôte en adresse IP) à l'aide de Javascript côté client?
<script type="application/javascript">
function getip(json){
alert(json.ip); // alerts the ip address
}
</script>
<script type="application/javascript" src="http://www.telize.com/jsonip?callback=getip"></script>
Remarque: L'API de telize.com a en permanence arrêté le 15 novembre 2015 .
La plupart des réponses ici "contournent" le besoin de code côté serveur en ... Frappant sur le serveur de quelqu'un d'autre. Ce qui est une technique totalement valide, sauf si vous avez réellement besoin pour obtenir l'adresse IP sans toucher un serveur.
Traditionnellement, cela n’était pas possible sans une sorte de plugin (et même dans ce cas, vous auriez probablement la mauvaise adresse IP si vous étiez derrière un NAT routeur), mais avec l'avènement de WebRTC, il est en fait possible de le faire ... Si vous ciblez navigateurs prenant en charge WebRTC (actuellement: Firefox, Chrome et Opera).
Veuillez lire la réponse de mido pour savoir comment récupérer des adresses IP de clients utiles à l'aide de WebRTC.
Vous pouvez faire un appel ajax à hostip.info ou à un service similaire ...
function myIP() {
if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","http://api.hostip.info/get_html.php",false);
xmlhttp.send();
hostipInfo = xmlhttp.responseText.split("\n");
for (i=0; hostipInfo.length >= i; i++) {
ipAddress = hostipInfo[i].split(":");
if ( ipAddress[0] == "IP" ) return ipAddress[1];
}
return false;
}
En prime, les informations de géolocalisation sont renvoyées dans le même appel.
Essaye ça
$.get("http://ipinfo.io", function(response) {
alert(response.ip);
}, "jsonp");
OR
$(document).ready(function () {
$.getJSON("http://jsonip.com/?callback=?", function (data) {
console.log(data);
alert(data.ip);
});
});
Départ http://www.ipify.org/
Selon eux:
- Vous pouvez l'utiliser sans limite (même si vous faites des millions de demandes par minute).
- ipify est complètement open source (consultez le référentiel GitHub ).
Voici un exemple de travail de JS (au lieu de vous demander pourquoi cette réponse a si peu de voix, essayez vous-même de la voir en action):
<script>
function getIP(json) {
alert("My public IP address is: " + json.ip);
}
</script>
<script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
Trop paresseux pour copier/coller? Je l'aime. Voici une démo de ????
Trop paresseux pour cliquer? :O
Remarque : Désactivez Adblock Plus/uBlock & co avant d'exécuter la démonstration. Sinon, cela ne fonctionnera tout simplement pas.
J'ai rien à faire avec l'équipe IPify. Je pense juste que c’est ridiculement cool que quelqu'un fournisse un tel service pour le bien général.
Tu ne peux pas. Vous devriez demander à un serveur.
Vous pouvez utiliser mon service http://ipinfo.io pour cela, ce qui vous donnera l'adresse IP du client, le nom d'hôte, les informations de géolocalisation et le propriétaire du réseau. Voici un exemple simple qui enregistre l'IP:
$.get("http://ipinfo.io", function(response) {
console.log(response.ip);
}, "jsonp");
Voici un exemple plus détaillé de JSFiddle qui affiche également les informations de réponse complètes, afin que vous puissiez voir tous les détails disponibles: http://jsfiddle.net/zK5FN/2/
Incluez ce code dans votre page: <script type="text/javascript" src="http://l2.io/ip.js"></script>
plus doc ici
Je dirais que le Tchad et Malte ont une excellente réponse. Cependant, les leurs sont compliqués. Je suggère donc ce code que j'ai trouvé dans les annonces par pays plugin
<script>
<script language="javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script language="javascript">
mmjsCountryCode = geoip_country_code();
mmjsCountryName = geoip_country_name();
</script>
Pas d'ajax. De simples javascripts. : D
Si vous allez à http://j.maxmind.com/app/geoip.js vous verrez qu'il contient
function geoip_country_code() { return 'ID'; }
function geoip_country_name() { return 'Indonesia'; }
function geoip_city() { return 'Jakarta'; }
function geoip_region() { return '04'; }
function geoip_region_name() { return 'Jakarta Raya'; }
function geoip_latitude() { return '-6.1744'; }
function geoip_longitude() { return '106.8294'; }
function geoip_postal_code() { return ''; }
function geoip_area_code() { return ''; }
function geoip_metro_code() { return ''; }
Il ne répond pas encore vraiment à la question car
http://j.maxmind.com/app/geoip.js ne contient pas l'adresse IP (bien que je parie qu'il utilise l'adresse IP pour obtenir le pays).
Mais il est si facile de créer un script PhP qui affiche quelque chose comme
function visitorsIP() { return '123.123.123.123'; }
Fais ça. Mettez sur http://votredomaine.com/votreip.php .
Alors fais
<script language="javascript" src="http://yourdomain.com/yourip.php"></script>
La question mentionne spécifiquement de NE PAS utiliser de script tiers. Il n'y a pas d'autre moyen. Javascript ne peut pas connaître votre adresse IP. Mais d’autres serveurs accessibles via javascript peuvent fonctionner aussi bien sans problème.
Il y a deux interprétations à cette question. La plupart des gens ont interprété "IP client" comme signifiant l'adresse IP publique que le serveur Web voit en dehors du réseau local et sur Internet. Ce n'est pas l'adresse IP de l'ordinateur client dans la plupart des cas, bien que
J'avais besoin de la véritable adresse IP de l'ordinateur qui exécute le navigateur hébergeant mon logiciel JavaScript (qui est presque toujours une adresse IP locale sur un réseau local qui se cache derrière quelque chose que la couche NAT).
Mido a posté une réponse FANTASTIQUE, ci-dessus, qui semble être la seule réponse qui fournissait réellement l'adresse IP du client.
Merci pour ça, Mido!
Cependant, la fonction présentée s'exécute de manière asynchrone. Je dois réellement utiliser l'adresse IP dans mon code, et avec une solution asynchrone, je pourrais essayer d'utiliser l'adresse IP avant qu'elle soit récupérée/apprise/stockée. Je devais pouvoir attendre les résultats avant de les utiliser.
Voici une version "Waitable" de la fonction de Mido. J'espère que ça aide quelqu'un d'autre:
function findIP(onNewIP) { // onNewIp - your listener function for new IPs
var promise = new Promise(function (resolve, reject) {
try {
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome
var 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 ipIterate(ip) {
if (!localIPs[ip]) onNewIP(ip);
localIPs[ip] = true;
}
pc.createDataChannel(""); //create a bogus data channel
pc.createOffer(function (sdp) {
sdp.sdp.split('\n').forEach(function (line) {
if (line.indexOf('candidate') < 0) return;
line.match(ipRegex).forEach(ipIterate);
});
pc.setLocalDescription(sdp, noop, noop);
}, noop); // create offer and set local description
pc.onicecandidate = function (ice) { //listen for candidate events
if (ice && ice.candidate && ice.candidate.candidate && ice.candidate.candidate.match(ipRegex)) {
ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
}
resolve("FindIPsDone");
return;
};
}
catch (ex) {
reject(Error(ex));
}
});// New Promise(...{ ... });
return promise;
};
//This is the callback that gets run for each IP address found
function foundNewIP(ip) {
if (typeof window.ipAddress === 'undefined')
{
window.ipAddress = ip;
}
else
{
window.ipAddress += " - " + ip;
}
}
//This is How to use the Waitable findIP function, and react to the
//results arriving
var ipWaitObject = findIP(foundNewIP); // Puts found IP(s) in window.ipAddress
ipWaitObject.then(
function (result) {
alert ("IP(s) Found. Result: '" + result + "'. You can use them now: " + window.ipAddress)
},
function (err) {
alert ("IP(s) NOT Found. FAILED! " + err)
}
);
<h1>Demo "Waitable" Client IP Retrieval using WebRTC </h1>
Avec l'utilisation de Smart-IP.net API Geo-IP . Par exemple, en utilisant jQuery:
$(document).ready( function() {
$.getJSON( "http://smart-ip.net/geoip-json?callback=?",
function(data){
alert( data.Host);
}
);
});
Il existe une approche simple et gratuite qui ne demande aucune autorisation à votre visiteur.
Il consiste à soumettre une demande Ajax POST très simple à http://freegeoip.net/json . Une fois que vous avez reçu vos informations de localisation, en JSON, vous réagissez en conséquence en mettant à jour la page ou en redirigeant vers une nouvelle.
Voici comment vous soumettez votre demande d'informations de localisation:
jQuery.ajax( {
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
console.log(location)
}
} );
Eh bien, je m'éloigne de la question, mais j'avais un besoin similaire aujourd'hui et, bien que je ne puisse pas trouver l'identifiant du client à l'aide de Javascript, j'ai procédé comme suit.
Du côté du serveur: -
<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
Utiliser Javascript
var ip = $get("uip").innerHTML;
J'utilise ASP.Net Ajax, mais vous pouvez utiliser getElementById au lieu de $ get ().
Ce qui se passe, c’est que j’ai un élément div caché sur la page avec l’adresse IP de l’utilisateur rendue par le serveur. En Javascript, je charge juste cette valeur.
Cela pourrait être utile à certaines personnes ayant les mêmes exigences que la vôtre (comme moi alors que je ne l’avais pas encore compris).
À votre santé!
Pas possible en général, sauf si vous utilisez un type de service externe.
Vous pouvez utiliser la bibliothèque javascript serinfo.io .
<script type="text/javascript" src="userinfo.0.0.1.min.js"></script>
UserInfo.getInfo(function(data) {
alert(data.ip_address);
}, function(err) {
// Do something with the error
});
Vous pouvez également utiliser requirejs pour charger le script.
Il vous donnera l'adresse IP de votre visiteur, ainsi que quelques données sur son emplacement (pays, ville, etc.). Il est basé sur la base de données maxmind geoip.
Disclaimer: J'ai écrit cette bibliothèque
Obtenez votre IP avec jQuery
vous pouvez obtenir votre adresse IP publique avec une ligne de JS? Il existe un service gratuit qui offre cela pour vous et une demande de get est tout ce que vous devez faire:
$.get('http://jsonip.com/', function(r){ console.log(r.ip); });
Pour que l'extrait de code ci-dessus fonctionne, votre navigateur doit prendre en charge le CORS (partage de requêtes inter-origines). Sinon, une exception de sécurité serait levée. Dans les navigateurs plus anciens, vous pouvez utiliser cette version, qui utilise une requête JSON-P:
$.getJSON('http://jsonip.com/?callback=?', function(r){ console.log(r.ip); });
Il n'y a pas vraiment de moyen fiable d'obtenir l'adresse IP de l'ordinateur client.
Cela passe par certaines des possibilités. Le code qui utilise Java sera interrompu si l'utilisateur possède plusieurs interfaces.
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
En regardant les autres réponses ici, il semble que vous souhaitiez obtenir l'adresse IP publique du client, qui est probablement l'adresse du routeur utilisé par le client pour se connecter à Internet. Beaucoup des autres réponses ici parlent de cela. Je recommanderais de créer et d’héberger votre propre page côté serveur afin de recevoir la demande et de répondre avec l’adresse IP au lieu de dépendre du service d’une autre personne susceptible de ne pas continuer à fonctionner.
Javascript/jQuery obtient l'adresse IP et l'emplacement du client (pays, ville)
Vous devez uniquement intégrer une balise avec un lien "src" au serveur. Le serveur renverra "codehelper_ip" en tant qu'objet/JSON et vous pourrez l'utiliser immédiatement.
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?js"></script>
// You can use it
<script language="Javascript">
alert(codehelper_ip.IP);
alert(codehelper_ip.Country);
</script>
Plus d'informations sur Javascript détecte l'adresse IP réelle plus le pays
Si vous utilisez jQUery, vous pouvez essayer:
console.log(codehelper_ip);
Il vous montrera plus d'informations sur l'objet retourné.
Si vous voulez une fonction de rappel, essayez ceci:
// First, embed this script in your head or at bottom of the page.
<script language="Javascript" src="http://www.codehelper.io/api/ips/?callback=yourcallback"></script>
// You can use it
<script language="Javascript">
function yourcallback(json) {
alert(json.IP);
}
</script>
Le service de rappel Appspot.com n'est pas disponible. ipinfo.io semble fonctionner.
J'ai fait une étape supplémentaire et récupéré toutes les informations géographiques en utilisant AngularJS. (Merci à Ricardo) Regarde ça.
<div ng-controller="geoCtrl">
<p ng-bind="ip"></p>
<p ng-bind="hostname"></p>
<p ng-bind="loc"></p>
<p ng-bind="org"></p>
<p ng-bind="city"></p>
<p ng-bind="region"></p>
<p ng-bind="country"></p>
<p ng-bind="phone"></p>
</div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.12/angular-route.min.js"></script>
<script>
'use strict';
var geo = angular.module('geo', [])
.controller('geoCtrl', ['$scope', '$http', function($scope, $http) {
$http.jsonp('http://ipinfo.io/?callback=JSON_CALLBACK')
.success(function(data) {
$scope.ip = data.ip;
$scope.hostname = data.hostname;
$scope.loc = data.loc; //Latitude and Longitude
$scope.org = data.org; //organization
$scope.city = data.city;
$scope.region = data.region; //state
$scope.country = data.country;
$scope.phone = data.phone; //city area code
});
}]);
</script>
Page de travail ici: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
Utilisez ipdata.co .
L'API fournit également des données de géolocalisation et dispose de 10 points de terminaison globaux, chacun pouvant gérer plus de 800 millions de demandes par jour!
Cette réponse utilise une clé d'API 'test' très limitée et destinée uniquement à tester quelques appels. Signup pour votre propre clé API gratuite et recevez jusqu'à 1500 requêtes de développement par jour.
$.get("https://api.ipdata.co?api-key=test", function (response) {
$("#response").html(response.ip);
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="response"></pre>
J'aime beaucoup api.ipify.org
car il prend en charge HTTP et HTTPS.
Voici quelques exemples d'obtention de l'adresse IP avec _api.ipify.org
_ avec jQuery.
_https://api.ipify.org?format=json
_
_$.getJSON("https://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
_
_<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
_
_http://api.ipify.org?format=json
_
_$.getJSON("http://api.ipify.org/?format=json", function(e) {
alert(e.ip);
});
_
_<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
_
Si vous ne le souhaitez pas dans JSON, il existe également une réponse en texte brut via HTTPS.
_https://api.ipify.org
_
Et il y a aussi une réponse en texte brut sur HTTP
_http://api.ipify.org
_
Si vous incluez toujours un fichier, vous pouvez faire un simple ajax get:
function ip_callback() {
$.get("ajax.getIp.php",function(data){ return data; }
}
Et ajax.getIp.php
serait ceci:
<?=$_SERVER['REMOTE_ADDR']?>
Je vais proposer une méthode que j'utilise beaucoup lorsque je veux stocker des informations dans la page html et que je veux que mon javascript lise des informations sans avoir à passer de paramètres au javascript. Ceci est particulièrement utile lorsque votre script est référencé en externe plutôt qu'en ligne.
Il ne répond toutefois pas au critère "pas de script côté serveur". Mais si vous pouvez inclure des scripts côté serveur dans votre code HTML, procédez comme suit:
Créez des éléments d’étiquette cachés au bas de votre page html, juste au-dessus de la balise end body.
Votre étiquette ressemblera à ceci:
<label id="ip" class="hiddenlabel"><?php echo $_SERVER['REMOTE_ADDR']; ?></label>
Assurez-vous de créer une classe appelée hiddenlabel
et de définir le visibility:hidden
afin que personne ne voie réellement l'étiquette. Vous pouvez stocker beaucoup de choses de cette façon, dans des étiquettes cachées.
Maintenant, dans votre javascript, pour récupérer les informations stockées dans l'étiquette (dans ce cas l'adresse IP du client), vous pouvez faire ceci:
var ip = document.getElementById("ip").innerHTML;
Maintenant, votre variable "ip" est égale à l'adresse ip. Maintenant, vous pouvez passer l'ip à votre demande d'API.
* EDIT 2 ANS PLUS TARD * Deux améliorations mineures:
J'utilise couramment cette méthode, mais appelle l'étiquette class="data"
, car c'est en fait un moyen de stocker des données. Le nom de classe "hiddenlabel" est une sorte de nom stupide.
La deuxième modification est dans la feuille de style, à la place de visibility:hidden
:
.data{
display:none;
}
... est la meilleure façon de le faire.
Vous pouvez le faire entièrement côté client et principalement en JavaScript en utilisant un objet Flash que le js peut appeler. Flash peut accéder à l'adresse IP de la machine locale, ce qui pourrait ne pas être très utile.
<!DOCTYPE html>
<html ng-app="getIp">
<body>
<div ng-controller="getIpCtrl">
<div ng-bind="ip"></div>
</div>
<!-- Javascript for load faster
================================================== -->
<script src="lib/jquery/jquery.js"></script>
<script src="lib/angular/angular.min.js"></script>
<script>
/// Scripts app
'use strict';
/* App Module */
var getIp = angular.module('getIp', [ ]);
getIp.controller('getIpCtrl', ['$scope', '$http',
function($scope, $http) {
$http.jsonp('http://jsonip.appspot.com/?callback=JSON_CALLBACK')
.success(function(data) {
$scope.ip = data.ip;
});
}]);
</script>
</body>
</html>
var call_to = "http://smart-ip.net/geoip-json?callback=?";
$.getJSON(call_to, function(data){
alert(data.Host);
});
data.Host
est l'adresse IP. Appelez simplement ceci depuis votre navigateur.
http://smart-ip.net/geoip-json?callback=?
[Sans guillemets] et obtenez l'ip.
$.getJSON("http://jsonip.com?callback=?", function (data) {
alert("Your ip address: " + data.ip);
});
Vous pouvez utiliser des services Web tels que: http://ip-api.com/
Exemple:
<script type="text/javascript" src="http://ip-api.com/json/?callback=foo">
<script>
function foo(json) {
alert(json.query)
}
</script>
additional example: http://whatmyip.info
Tout d'abord la réponse réelle : Ce n'est pas possible utiliser du code exécuté purement côté client pour trouver votre propre adresse IP.
Cependant, vous pouvez simplement faire un GET vers https://api.muctool.de/whois et recevoir quelque chose comme obtenir l'adresse IP d'un client
{
"ip": "88.217.152.15",
"city": "Munich",
"isp": "M-net Telekommunikations GmbH",
"country": "Germany",
"countryIso": "DE",
"postalCode": "80469",
"subdivisionIso": "BY",
"timeZone": "Europe/Berlin",
"cityGeonameId": 2867714,
"countryGeonameId": 2921044,
"subdivisionGeonameId": 2951839,
"ispId": 8767,
"latitude": 48.1299,
"longitude": 11.5732,
"fingerprint": "61c5880ee234d66bded68be14c0f44236f024cc12efb6db56e4031795f5dc4c4",
"session": "69c2c032a88fcd5e9d02d0dd6a5080e27d5aafc374a06e51a86fec101508dfd3",
"fraud": 0.024,
"tor": false
}
Essayez ceci: http://httpbin.org/ip (ou https://httpbin.org/ip )
Exemple avec https:
$.getJSON('https://httpbin.org/ip', function(data) {
console.log(data['Origin']);
});
Source: http://httpbin.org/
Voici:
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
alert(data.Host);
});
Essayez JAvascript
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
alert(data.Host);
});
ou
http://jsfiddle.net/ourcodeworld/cks0v68q/?utm_source=website&utm_medium=embed&utm_campaign=cks0v68q
Si vous utilisez NGINX quelque part, vous pouvez ajouter cet extrait de code et demander à votre propre serveur via n'importe quel outil AJAX.
location /get_ip {
default_type text/plain;
return 200 $remote_addr;
}
Obtenir l'IP locale du système:
try {
var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (RTCPeerConnection) (function () {
var rtc = new RTCPeerConnection({ iceServers: [] });
if (1 || window.mozRTCPeerConnection) {
rtc.createDataChannel('', { reliable: false });
};
rtc.onicecandidate = function (evt) {
if (evt.candidate) grepSDP("a=" + evt.candidate.candidate);
};
rtc.createOffer(function (offerDesc) {
grepSDP(offerDesc.sdp);
rtc.setLocalDescription(offerDesc);
}, function (e) { console.warn("offer failed", e); });
var addrs = Object.create(null);
addrs["0.0.0.0"] = false;
function updateDisplay(newAddr) {
if (newAddr in addrs) return;
else addrs[newAddr] = true;
var displayAddrs = Object.keys(addrs).filter(function (k) { return addrs[k]; });
LgIpDynAdd = displayAddrs.join(" or perhaps ") || "n/a";
alert(LgIpDynAdd)
}
function grepSDP(sdp) {
var hosts = [];
sdp.split('\r\n').forEach(function (line) {
if (~line.indexOf("a=candidate")) {
var parts = line.split(' '),
addr = parts[4],
type = parts[7];
if (type === 'Host') updateDisplay(addr);
} else if (~line.indexOf("c=")) {
var parts = line.split(' '),
addr = parts[2];
alert(addr);
}
});
}
})();} catch (ex) { }
Toutes les réponses ci-dessus ont une partie serveur, pas une partie client pur. Cela devrait être fourni par le navigateur Web. À l'heure actuelle, aucun navigateur Web ne le supporte.
Cependant, avec cet addon pour firefox: https://addons.mozilla.org/en-US/firefox/addon/ip-address/ Vous devrez demander à vos utilisateurs d'installer cet addon. (c'est bien de ma part, une 3ème partie).
vous pouvez tester si l'utilisateur l'a installé.
var installed=window.IP!==undefined;
vous pouvez l'obtenir avec javascript, s'il est installé, alors var ip = IP.getClient (); var IPclient = ip.IP; // tandis que ip.url est l'URL
ip=IP.getServer();
var IPserver=ip.IP;
var portServer=ip.port;
//while ip.url is the url
//or you can use IP.getBoth();
plus d'informations ici: http://www.jackiszhp.info/tech/addon.IP.html
Je ne suis pas un gourou javascript, mais si c'est possible, vous pouvez ouvrir un iframe avec http://www.whatismyip.com/automation/n09230945.asp comme source et lire le contenu du cadre.
Edit: cela ne fonctionnera pas à cause de la sécurité interdomaine.
<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<script>
function systemip(){
document.getElementById("ip").value = myip
console.log(document.getElementById("ip").value)
}
</script>
Vous pouvez essayer d’utiliser notre https://ip-api.io geo ip API. Par exemple avec jQuery:
$(document).ready( function() {
$.getJSON("http://ip-api.io/api/json",
function(data){
console.log(data);
}
);
});
De plus, https://ip-api.io vérifie les bases de données des mandataires, des mandataires publics et des spammeurs et fournit également ces informations.
Exemple de réponse:
{
"ip": "182.35.213.213",
"country_code": "US",
"country_name": "United States",
"region_code": "CA",
"region_name": "California",
"city": "San Francisco",
"Zip_code": "94107",
"time_zone": "America/Los_Angeles",
"latitude": 32.7697,
"longitude": -102.3933,
"suspicious_factors": {
"is_proxy": true,
"is_tor_node": true,
"is_spam": true,
"is_suspicious": true // true if any of other fields (is_proxy, is_tor_node, is_spam) is true
}
}
Un des problèmes avec certains des autres services que j'ai vus ici est qu'ils ne supportent pas IPv6 ou agissent de manière imprévisible en présence d'IPv6.
Comme j'avais moi-même besoin de cette fonctionnalité dans un environnement à double pile, j'ai mis en place mon propre service d'adresse IP, que vous pouvez trouver à l'adresse http://myip.addr.space/ . Il y a aussi une référence rapide à / help .
Pour l'utiliser avec jQuery, utilisez le noeud final /ip
. Vous obtiendrez du texte brut contenant l'adresse IP, en fonction du sous-domaine que vous utilisez:
$.get("http://myip.addr.space/ip")
renvoie IPv6 ou IPv4, selon ce qui est disponible pour le système. ( JSFiddle )
$.get("http://ipv4.myip.addr.space/ip")
renvoie toujours IPv4 (ou échoue si aucun IPv4).
$.get("http://ipv6.myip.addr.space/ip")
renvoie toujours IPv6 (ou échoue si aucun IPv6).
<script type="application/javascript">
function getip(json)
{
alert(json.ip);
}
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
Exécutez le script ci-dessus Cliquez ici
J'ai mon propre api back end avec laravel, donc je ne fais habituellement que ce qui suit:
$(document).ready( function() {
$.getJSON( "http://api.whoisdoma.com/v1/ip/visitor?api_key=key",
function(data){
alert( data.ip);
}
);
});
Pour plus de sécurité, je fournis une clé API indispensable pour obtenir des résultats.
La solution simple pour obtenir l'adresse IP consiste à ajouter le code suivant dans votre fichier.
$.getJSON('https://api.ipify.org?format=json', function(data){
// Your callback functions like
console.log(data.ip);
localStorage.setItem('ip',data.ip);
alert(data.ip);
});
Il obtiendra l'adresse IP lors du chargement de la page.
Essaye ça
$.get("http://ipinfo.io", function(response) {
alert(response.ip);
}, "jsonp");
$.getJSON("http://jsonip.com?callback=?", function (data) {
alert("Your ip: " + data.ip);
});
Java Script pour trouver l'IP
Pour obtenir l'adresse IP, je passe un appel JSON au service Web gratuit . comme
[jsonip.com/json, ipinfo.io/json, www.telize.com/geoip, ip-api.com/json, api.hostip.info/get_json.php]
et je passe le nom de la fonction de rappel qui sera appelée à la fin de la demande.
<script type="text/javascript">
window.onload = function () {
var webService = "http://www.telize.com/geoip";
var script = document.createElement("script");
script.type = "text/javascript";
script.src = webService+"?callback=MyIP";
document.getElementsByTagName("head")[0].appendChild(script);
};
function MyIP(response) {
document.getElementById("ipaddress").innerHTML = "Your IP Address is " + response.ip;
}
</script>
<body>
<form>
<span id = "ipaddress"></span>
</form>
</body>
pour la réponse XML code
WebRTC qui ne nécessite pas de support serveur.
Cela ne peut pas être fait avec Javascript seul (à moins que les clients aient un plugin de navigateur comme décrit ci-dessus). Cela ne peut pas être fait avec Flash sur le client non plus. Mais cela peut être fait sur le client en utilisant un applet Java (et javascript peut en parler), bien qu'il demande une autorisation pour toutes les autorisations. par exemple. Voir http://www.findmyrouter.net