Ich muss irgendwie die IP-Adresse des Kunden mit JavaScript abrufen. Kein serverseitiger Code, nicht einmal SSI.
Ich bin jedoch nicht gegen die Verwendung eines kostenlosen Skripts/Dienstes von Drittanbietern.
Ich würde einen Webdienst verwenden, der JSON zurückgeben kann (zusammen mit jQuery, um die Dinge einfacher zu machen). Nachfolgend finden Sie alle kostenlosen aktiven IP-Suchdienste, die ich finden konnte, und die Informationen, die sie zurückgeben. Wenn Sie mehr wissen, dann fügen Sie bitte einen Kommentar hinzu und ich werde diese Antwort aktualisieren.
Probieren Sie es aus: http://api.db-ip.com/addrinfo?api_key= < your API-Schlüssel > & addr = < IP-Adresse >
Kehrt zurück:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
Einschränkungen:
Probieren Sie es aus: http://Gd.geobytes.com/GetCityDetails
$.getJSON('http://Gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Probieren Sie es aus: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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
}
Einschränkungen:
Probieren Sie es aus: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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
}
Einschränkungen:
Probieren Sie es aus: https://api.hackertarget.com/geoip/?q= < IP-Adresse >
Kehrt zurück:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
Einschränkungen:
Probieren Sie es aus: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Probieren Sie es aus: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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": ""
}
Einschränkungen:
Probieren Sie es aus: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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
}
}
Einschränkungen:
Probieren Sie es aus: https://ipfind.co/me?auth= < Ihr API-Schlüssel >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
]
}
Einschränkungen:
Probieren Sie es aus: https://api.ipgeolocation.io/ipgeo?apiKey= < Ihren API-Schlüssel >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
}
Einschränkungen:
Probieren Sie es aus: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"ip": "116.12.250.1"
}
Einschränkungen:
Probieren Sie es aus: https://api.ipinfodb.com/v3/ip-city/?key= < dein api key > & 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));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Probieren Sie es aus: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Probieren Sie es aus: https://api.ipregistry.co/?key= < Ihr API-Schlüssel >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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
}
}
Einschränkungen:
Probieren Sie es aus: http://api.ipstack.com/ < ip address >? access_key = <Ihr API-Schlüssel>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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
}
}
Einschränkungen:
Probieren Sie es aus: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"ip": "116.12.250.1",
"about": "/about",
"Pro!": "http://getjsonip.com",
"reject-fascism": "Liberal America will prevail"
}
Einschränkungen:
Probieren Sie es aus: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"ip": "116.12.250.1"
}
Einschränkungen:
Probieren Sie es aus: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Probieren Sie es aus: https://smartip.io/api/?api_key= < Ihren API-Schlüssel >
$.getJSON('https://smartip.io/api/?api_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Kehrt zurück:
{
"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"
}
Einschränkungen:
Bedenken Sie, dass Ihre Laufleistung in Bezug auf Kontingent und Betriebszeit variieren kann, da es sich um kostenlose Dienste handelt. Wer weiß, wann/ob sie später offline geschaltet werden (Anlage A: Telize )? . Die meisten dieser Dienste bieten auch eine kostenpflichtige Stufe für den Fall, dass Sie weitere Funktionen wie die SSL-Unterstützung wünschen.
Wie in den Kommentaren unten erwähnt, sind die Anforderungsquoten größtenteils akademisch, da dies clientseitig geschieht und die meisten Endbenutzer das Kontingent niemals überschreiten werden.
UPDATES
Update : Ich wollte immer eine min/uglified-Version des Codes erstellen, daher hier ein ES6 Promise-Code:
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))
Hinweis: Dieser neue minimierte Code würde nur eine einzelne IP zurückgeben, wenn Sie alle IPs des Benutzers (die je nach seinem Netzwerk mehr sein könnten) verwenden möchten der ursprüngliche Code ...
dank WebRTC ist es sehr einfach, in von WebRTC unterstützten Browsern (zumindest für den Moment) lokale IP-Adressen zu erhalten. Ich habe den Quellcode geändert, die Zeilen reduziert und keine Stun-Anfragen gestellt, da Sie nur die lokale IP möchten, nicht die öffentliche IP. Der folgende Code funktioniert in den neuesten Versionen von Firefox und Chrome. Führen Sie einfach das Snippet aus und überzeugen Sie sich selbst:
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>
was hier passiert, ist, dass wir eine Dummy-Peer-Verbindung herstellen, und damit der Remote-Peer mit uns Kontakt aufnehmen kann, tauschen wir im Allgemeinen Eiskandidaten miteinander aus. Durch Lesen der Eiskandidaten (aus der lokalen Sitzungsbeschreibung und onIceCandidateEvent) können wir die IP des Benutzers ermitteln.
woher ich Code genommen habe -> Quelle
Sie können es über den Server mit JSONP weiterleiten
Und während Sie googeln, um eine zu finden, finden Sie diese hier auf SO Kann ich eine DNS-Suche (Hostname zu IP-Adresse) mit clientseitigem Javascript durchführen?
<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>
Hinweis: Die telize.com-API ist dauerhaft zum 15. November 2015 heruntergefahren .
Die meisten Antworten hier "umgehen" den Bedarf an serverseitigem Code, indem sie ... den Server eines anderen treffen. Dies ist eine absolut gültige Technik, es sei denn, Sie benötigen , um die IP-Adresse abzurufen, ohne einen Server zu treffen.
Herkömmlicherweise war dies ohne ein Plugin nicht möglich (und selbst dann würden Sie wahrscheinlich die falsche IP-Adresse erhalten, wenn Sie sich hinter einem NAT befinden. Router), aber mit dem Aufkommen von WebRTC ist es tatsächlich möglich, dies zu tun ... Wenn Sie als Ziel angeben Browser, die WebRTC unterstützen (derzeit: Firefox, Chrome und Opera).
Bitte lesen Sie die Antwort von mido, um zu erfahren, wie Sie mithilfe von WebRTC nützliche Client-IP-Adressen abrufen können.
Sie können einen Ajax-Anruf bei hostip.info oder einem ähnlichen Dienst tätigen ...
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;
}
Als Bonus werden Geolokalisierungsinformationen im selben Anruf zurückgegeben.
Versuche dies
$.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);
});
});
Check out http://www.ipify.org/
Nach ihnen:
- Sie können es unbegrenzt verwenden (auch wenn Sie Millionen von Anfragen pro Minute ausführen).
- ipify ist komplett Open Source (siehe GitHub-Repository ).
Hier ist ein funktionierendes JS-Beispiel (anstatt sich zu fragen, warum diese Antwort so wenige Stimmen hat, versuchen Sie es selbst, um sie in Aktion zu sehen):
<script>
function getIP(json) {
alert("My public IP address is: " + json.ip);
}
</script>
<script src="https://api.ipify.org?format=jsonp&callback=getIP"></script>
Zu faul zum Kopieren/Einfügen? Ich mag das. Hier ist eine ???? Demo
Zu faul zu klicken? :O
Hinweis : Schalten Sie Adblock Plus/uBlock & co aus, bevor Sie die Demo ausführen. Andernfalls funktioniert es einfach nicht.
Ich habe nichts mit dem IPify-Team zu tun. Ich finde es einfach lächerlich cool, dass jemand einen solchen Service für das Allgemeinwohl erbringt.
Das kannst du nicht. Sie müssten einen Server fragen.
Sie können hierfür meinen Dienst http://ipinfo.io verwenden, der Ihnen die Client-IP, den Hostnamen, die Geolocation-Informationen und den Netzwerkbesitzer angibt. Hier ist ein einfaches Beispiel, das die IP protokolliert:
$.get("http://ipinfo.io", function(response) {
console.log(response.ip);
}, "jsonp");
Hier ist ein ausführlicheres JSFiddle-Beispiel, das auch die vollständigen Antwortinformationen ausgibt, sodass Sie alle verfügbaren Details sehen können: http://jsfiddle.net/zK5FN/2/
Fügen Sie diesen Code in Ihre Seite ein: <script type="text/javascript" src="http://l2.io/ip.js"></script>
mehr doc hier
Ich würde sagen, dass Tschad und Malta eine gute Antwort haben. Ihre sind jedoch kompliziert. Daher schlage ich diesen Code vor, den ich in Anzeigen nach Ländern gefunden habe
<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>
Kein Ajax. Einfach nur Javascripts. : D
Wenn Sie zu http://j.maxmind.com/app/geoip.js gehen, werden Sie sehen, dass es enthält
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 ''; }
Es beantwortet die Frage noch nicht wirklich, weil
http://j.maxmind.com/app/geoip.js enthält die IP nicht (obwohl ich wette, dass sie die IP verwendet, um das Land zu ermitteln).
Aber es ist so einfach, ein PhP-Skript zu erstellen, das so etwas wie popt
function visitorsIP() { return '123.123.123.123'; }
Das machen. Setzen Sie http://yourdomain.com/yourip.php .
Dann mach
<script language="javascript" src="http://yourdomain.com/yourip.php"></script>
In der Frage wird ausdrücklich darauf hingewiesen, dass kein Skript eines Drittanbieters verwendet werden soll. Es geht nicht anders. Javascript kann Ihre IP nicht kennen. Aber auch andere Server, auf die mit Javascript zugegriffen werden kann, funktionieren problemlos.
Zu dieser Frage gibt es zwei Interpretationen. Die meisten Leute interpretierten "Client-IP" als die öffentliche IP-Adresse, die der Webserver außerhalb des LAN und außerhalb des Internets sieht. In den meisten Fällen ist dies jedoch nicht die IP-Adresse des Client-Computers
Ich benötigte die echte IP-Adresse des Computers, auf dem der Browser ausgeführt wird, der meine JavaScript-Software hostet (bei der es sich fast immer um eine lokale IP-Adresse in einem LAN handelt, das sich hinter einer Schicht von NAT befindet).
Mido hat oben eine FANTASTISCHE Antwort gepostet, die anscheinend die einzige Antwort ist, die wirklich die IP-Adresse des Kunden liefert.
Danke dafür, Mido!
Die dargestellte Funktion wird jedoch asynchron ausgeführt. Ich muss die IP-Adresse in meinem Code tatsächlich VERWENDEN. Bei einer asynchronen Lösung kann ich versuchen, die IP-Adresse zu verwenden, bevor sie abgerufen/gelernt/gespeichert wird. Ich musste in der Lage sein, auf die Ergebnisse zu warten, bevor ich sie verwendete.
Hier ist eine "Wartbare" Version von Midos Funktion. Ich hoffe es hilft jemand anderem:
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>
Mit Smart-IP.net Geo-IP API . Zum Beispiel mit jQuery:
$(document).ready( function() {
$.getJSON( "http://smart-ip.net/geoip-json?callback=?",
function(data){
alert( data.Host);
}
);
});
Es gibt einen einfacheren und kostenlosen Ansatz, bei dem Sie Ihren Besucher nicht um Erlaubnis bitten müssen.
Es besteht darin, eine sehr einfache Ajax POST -Anforderung an http://freegeoip.net/json zu senden. Sobald Sie Ihre Standortinformationen in JSON erhalten haben, reagieren Sie entsprechend, indem Sie die Seite aktualisieren oder auf eine neue umleiten.
So senden Sie Ihre Anfrage nach Standortinformationen:
jQuery.ajax( {
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
console.log(location)
}
} );
Nun, ich schweife von der Frage ab, aber ich hatte heute ein ähnliches Bedürfnis und obwohl ich die ID des Kunden mit Javascript nicht finden konnte, habe ich Folgendes getan.
Auf der Serverseite: -
<div style="display:none;visibility:hidden" id="uip"><%= Request.UserHostAddress %></div>
Mit Javascript
var ip = $get("uip").innerHTML;
Ich verwende ASP.Net Ajax, aber Sie können getElementById anstelle von $ get () verwenden.
Was passiert ist, ich habe ein verstecktes div-Element auf der Seite mit der IP des Benutzers vom Server gerendert. Als in Javascript lade ich nur diesen Wert.
Dies könnte für einige Leute mit ähnlichen Anforderungen wie Ihre hilfreich sein (wie ich, obwohl ich das nicht herausgefunden hatte).
Prost!
Im Allgemeinen nicht möglich, es sei denn, Sie nutzen einen externen Dienst.
Sie können die JavaScript-Bibliothek serinfo.io verwenden.
<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
});
Sie können auch requirejs verwenden, um das Skript zu laden.
Sie erhalten die IP-Adresse Ihres Besuchers sowie einige Daten zu dessen Standort (Land, Stadt usw.). Es basiert auf der maxmind Geoip-Datenbank.
Haftungsausschluss: Ich habe diese Bibliothek geschrieben
Holen Sie sich Ihre IP mit jQuery
können Sie Ihre öffentliche IP-Adresse mit einer Zeile JS erhalten? Es gibt einen kostenlosen Service, der dies für Sie anbietet, und Sie müssen lediglich eine Anfrage stellen:
$.get('http://jsonip.com/', function(r){ console.log(r.ip); });
Damit das obige Snippet funktioniert, muss Ihr Browser CORS (Cross-Origin Request Sharing) unterstützen. Andernfalls würde eine Sicherheitsausnahme ausgelöst. In älteren Browsern können Sie diese Version verwenden, die eine JSON-P-Anforderung verwendet:
$.getJSON('http://jsonip.com/?callback=?', function(r){ console.log(r.ip); });
Es gibt keine wirklich zuverlässige Möglichkeit, die IP-Adresse des Clientcomputers abzurufen.
Dies geht einige der Möglichkeiten durch. Der Code, der Java verwendet, bricht ab, wenn der Benutzer über mehrere Schnittstellen verfügt.
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
Wenn Sie sich die anderen Antworten hier ansehen, möchten Sie möglicherweise die öffentliche IP-Adresse des Clients abrufen. Dies ist wahrscheinlich die Adresse des Routers, über den die Verbindung zum Internet hergestellt wird. Viele der anderen Antworten hier sprechen darüber. Ich würde empfehlen, eine eigene serverseitige Seite zu erstellen und zu hosten, um die Anforderung zu empfangen und mit der IP-Adresse zu antworten, anstatt von dem Dienst eines anderen abhängig zu sein, der möglicherweise weiterhin funktioniert oder nicht.
Javascript/jQuery ruft die IP-Adresse und den Standort des Kunden ab (Land, Stadt)
Sie müssen nur ein Tag mit "src" -Link zum Server einbetten. Der Server gibt "codehelper_ip" als Object/JSON zurück und Sie können es sofort verwenden.
// 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>
Weitere Informationen finden Sie unter Javascript erkennt reale IP-Adresse plus Land
Wenn Sie jQUery verwenden, können Sie Folgendes versuchen:
console.log(codehelper_ip);
Es werden weitere Informationen zum zurückgegebenen Objekt angezeigt.
Wenn Sie eine Rückruffunktion wünschen, versuchen Sie dies bitte:
// 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>
Der Appspot.com-Rückrufservice ist nicht verfügbar. ipinfo.io scheint zu funktionieren.
Ich habe einen zusätzlichen Schritt gemacht und alle Geoinformationen mit AngularJS abgerufen. (Dank an Ricardo) Schau es dir an.
<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>
Arbeitsseite hier: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
Verwenden Sie ipdata.co .
Die API stellt auch Geolocation-Daten bereit und verfügt über 10 globale Endpunkte, die jeweils mehr als 800 Millionen Anfragen pro Tag verarbeiten können!
Diese Antwort verwendet einen "Test" -API-Schlüssel, der sehr begrenzt ist und nur zum Testen einiger Aufrufe gedacht ist. Anmelden für Ihren eigenen kostenlosen API-Schlüssel und Sie erhalten täglich bis zu 1500 Anfragen für die Entwicklung.
$.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>
Ich mag api.ipify.org
wirklich, weil es sowohl HTTP als auch HTTPS unterstützt.
Im Folgenden finden Sie einige Beispiele für das Abrufen der IP-Adresse mithilfe von _api.ipify.org
_ mithilfe von 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>
_
Wenn Sie es nicht in JSON wollen, gibt es auch eine Klartextantwort über HTTPS
_https://api.ipify.org
_
Und es gibt auch eine Klartextantwort über HTTP
_http://api.ipify.org
_
Wenn Sie immer eine Datei einbinden, können Sie einen einfachen Ajax-Befehl ausführen:
function ip_callback() {
$.get("ajax.getIp.php",function(data){ return data; }
}
Und ajax.getIp.php
wäre das:
<?=$_SERVER['REMOTE_ADDR']?>
Ich werde eine Methode anbieten, die ich häufig verwende, wenn ich Informationen auf der HTML-Seite speichern möchte und mein Javascript Informationen lesen soll, ohne dass Parameter an das Javascript übergeben werden müssen. Dies ist besonders nützlich, wenn Ihr Skript nicht inline, sondern extern referenziert wird.
Es erfüllt jedoch nicht das Kriterium "Kein serverseitiges Skript". Wenn Sie jedoch serverseitiges Scripting in Ihren HTML-Code aufnehmen können, gehen Sie wie folgt vor:
Machen Sie versteckte Beschriftungselemente am unteren Rand Ihrer HTML-Seite, direkt über dem Endkörper-Tag.
Ihr Etikett sieht folgendermaßen aus:
<label id="ip" class="hiddenlabel"><?php echo $_SERVER['REMOTE_ADDR']; ?></label>
Stellen Sie sicher, dass Sie eine Klasse mit dem Namen hiddenlabel
erstellen und den visibility:hidden
so einstellen, dass niemand das Etikett tatsächlich sieht. Auf diese Weise können Sie viele Dinge in versteckten Etiketten speichern.
Jetzt können Sie in Ihrem Javascript die auf dem Etikett gespeicherten Informationen (in diesem Fall die IP-Adresse des Kunden) wie folgt abrufen:
var ip = document.getElementById("ip").innerHTML;
Jetzt entspricht Ihre Variable "ip" der IP-Adresse. Jetzt können Sie die IP an Ihre API-Anfrage übergeben.
* 2 JAHRE SPÄTER BEARBEITEN * Zwei kleinere Verbesserungen:
Ich benutze diese Methode routinemäßig, rufe aber das Label class="data"
auf, weil es in der Tat eine Möglichkeit ist, Daten zu speichern. Der Klassenname "hiddenlabel" ist eine Art dummer Name.
Die zweite Änderung befindet sich im Stylesheet anstelle von visibility:hidden
:
.data{
display:none;
}
... ist der bessere Weg, es zu tun.
Sie können dies vollständig clientseitig und meistens in JavaScript tun, indem Sie ein Flash-Objekt verwenden, das der JS aufrufen kann. Flash can greift auf die IP-Adresse des lokalen Rechners zu, was möglicherweise nicht sehr nützlich ist.
<!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
ist die IP-Adresse. Rufen Sie dies einfach von Ihrem Browser aus auf.
http://smart-ip.net/geoip-json?callback=?
[Ohne Anführungszeichen] und die IP erhalten.
$.getJSON("http://jsonip.com?callback=?", function (data) {
alert("Your ip address: " + data.ip);
});
Sie können Webdienste wie: http://ip-api.com/ verwenden
Beispiel:
<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
Zuallererst die tatsächliche Antwort : Es ist nicht möglich rein clientseitig ausgeführten Code verwenden, um Ihre eigene IP-Adresse herauszufinden.
Sie können jedoch einfach ein GET in Richtung https://api.muctool.de/whois ausführen und so etwas wie die IP-Adresse eines Kunden erhalten
{
"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
}
Versuchen Sie Folgendes: http://httpbin.org/ip (oder https://httpbin.org/ip )
Beispiel mit https:
$.getJSON('https://httpbin.org/ip', function(data) {
console.log(data['Origin']);
});
Quelle: http://httpbin.org/
Bitte schön:
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
alert(data.Host);
});
Probieren Sie JAvascript aus
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
alert(data.Host);
});
oder
http://jsfiddle.net/ourcodeworld/cks0v68q/?utm_source=website&utm_medium=embed&utm_campaign=cks0v68q
Wenn Sie NGINX irgendwo verwenden, können Sie dieses Snippet hinzufügen und Ihren eigenen Server mit einem beliebigen AJAX -Tool fragen.
location /get_ip {
default_type text/plain;
return 200 $remote_addr;
}
Get System Local IP:
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) { }
Alle obigen Antworten haben einen Serverteil, keinen reinen Clientteil. Dies sollte vom Webbrowser bereitgestellt werden. Derzeit unterstützt dies kein Webbrowser.
Mit diesem Addon für Firefox: https://addons.mozilla.org/en-US/firefox/addon/ip-address/ Sie müssen Ihre Benutzer bitten, dieses Addon zu installieren. (Es ist gut von mir, einer dritten Partei).
sie können testen, ob der Benutzer es installiert hat.
var installed=window.IP!==undefined;
sie können es mit Javascript bekommen, wenn es installiert ist, dann var ip = IP.getClient (); var IPclient = ip.IP; // während ip.url die URL ist
ip=IP.getServer();
var IPserver=ip.IP;
var portServer=ip.port;
//while ip.url is the url
//or you can use IP.getBoth();
weitere Informationen finden Sie hier: http://www.jackiszhp.info/tech/addon.IP.html
Ich bin kein Javascript-Guru, aber wenn möglich, können Sie einen Iframe mit http://www.whatismyip.com/automation/n09230945.asp als Quelle öffnen und den Inhalt des Frames lesen.
Bearbeiten: Dies funktioniert aufgrund der domänenübergreifenden Sicherheit nicht.
<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>
Sie können versuchen, unsere https://ip-api.io Geo-IP-API zu verwenden. Zum Beispiel mit jQuery:
$(document).ready( function() {
$.getJSON("http://ip-api.io/api/json",
function(data){
console.log(data);
}
);
});
Außerdem https://ip-api.io prüft TOR, öffentliche Proxy- und Spammerdatenbanken und stellt diese Informationen ebenfalls bereit.
Beispielantwort:
{
"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
}
}
Ein Problem mit einigen der anderen Dienste, die ich hier gesehen habe, ist, dass sie entweder IPv6 nicht unterstützen oder sich in Gegenwart von IPv6 unvorhersehbar verhalten.
Da ich diese Funktion in einer Dual-Stack-Umgebung selbst benötigt habe, habe ich meinen eigenen IP-Adressdienst zusammengestellt, den Sie unter http://myip.addr.space/ finden. Es gibt auch eine Kurzreferenz unter / help .
Verwenden Sie zur Verwendung mit jQuery den Endpunkt /ip
. Je nach verwendeter Subdomain erhalten Sie Klartext mit der IP-Adresse zurück:
$.get("http://myip.addr.space/ip")
gibt entweder IPv6 oder IPv4 zurück, je nachdem, was dem System zur Verfügung steht. ( JSFiddle )
$.get("http://ipv4.myip.addr.space/ip")
gibt immer IPv4 zurück (oder schlägt fehl, wenn kein IPv4 vorhanden ist).
$.get("http://ipv6.myip.addr.space/ip")
gibt immer IPv6 zurück (oder schlägt fehl, wenn kein IPv6 vorhanden ist).
<script type="application/javascript">
function getip(json)
{
alert(json.ip);
}
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
Führen Sie das obige Skript aus Klicken Sie hier
Ich habe mein eigenes API-Backend mit Laravel, daher habe ich normalerweise nur Folgendes:
$(document).ready( function() {
$.getJSON( "http://api.whoisdoma.com/v1/ip/visitor?api_key=key",
function(data){
alert( data.ip);
}
);
});
Für zusätzliche Sicherheit stelle ich einen API-Schlüssel zur Verfügung, der erforderlich ist, um Ergebnisse zu erzielen.
Die einfache Lösung, um die IP-Adresse zu erhalten, besteht darin, den folgenden Code in Ihre Datei einzufügen.
$.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);
});
Es wird die IP-Adresse erhalten, wenn die Seite geladen wird.
Versuche dies
$.get("http://ipinfo.io", function(response) {
alert(response.ip);
}, "jsonp");
$.getJSON("http://jsonip.com?callback=?", function (data) {
alert("Your ip: " + data.ip);
});
Java Script um IP zu finden
Um die IP-Adresse zu erhalten, rufe ich JSON beim Free Web Service auf . mögen
[jsonip.com/json, ipinfo.io/json, www.telize.com/geoip, ip-api.com/json, api.hostip.info/get_json.php]
und ich übergebe den Namen der Rückruffunktion, die nach Abschluss der Anforderung aufgerufen wird.
<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>
für XML-Antwort Code
WebRTC was keine Serverunterstützung erfordert.
Es kann nicht mit Javascript alleine gemacht werden (es sei denn, die Clients haben ein Browser-Plugin wie oben beschrieben). Dies ist auch mit Flash auf dem Client nicht möglich. Dies kann jedoch auf dem Client mithilfe eines Java - Applets erfolgen (und Javascript kann damit kommunizieren), obwohl es zur Eingabe der vollständigen Berechtigungen auffordert. z.B. Siehe http://www.findmyrouter.net