Muszę jakoś odzyskać adres IP klienta za pomocą JavaScript; brak kodu po stronie serwera, nawet SSI.
Nie jestem jednak przeciwny korzystaniu z darmowego skryptu / usługi innej firmy.
źródło
Muszę jakoś odzyskać adres IP klienta za pomocą JavaScript; brak kodu po stronie serwera, nawet SSI.
Nie jestem jednak przeciwny korzystaniu z darmowego skryptu / usługi innej firmy.
Chciałbym skorzystać z usługi internetowej, która może zwrócić JSON (wraz z jQuery, aby uprościć sprawę). Poniżej znajdują się wszystkie bezpłatne aktywne usługi wyszukiwania adresów IP, które mogłem znaleźć, i informacje, które zwracają. Jeśli wiesz coś więcej, dodaj komentarz, a ja zaktualizuję tę odpowiedź.
Wypróbuj: https://www.cloudflare.com/cdn-cgi/trace
// If your site is on Cloudflare, then you can use '/cdn-cgi/trace' instead
$.get('https://www.cloudflare.com/cdn-cgi/trace', function(data) {
console.log(data)
})
Zwroty:
fl=4f422
h=www.cloudflare.com
ip=54.193.27.106
ts=1575967108.245
visit_scheme=https
uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36 Hypothesis-Via
colo=SJC
http=http/1.1
loc=US
tls=TLSv1.3
sni=plaintext
warp=off
Ograniczenia:
Wypróbuj: http://api.db-ip.com/addrinfo?api_key= < Twój klucz API > i addr = < adres IP >
Zwroty:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
Ograniczenia:
Wypróbuj: http://gd.geobytes.com/GetCityDetails
$.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
}
Ograniczenia:
Wypróbuj: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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
}
Ograniczenia:
Wypróbuj: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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
}
Ograniczenia:
Wypróbuj: https://api.hackertarget.com/geoip/?q= < adres ip >
Zwroty:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
Ograniczenia:
Wypróbuj: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
}
Ograniczenia:
Wypróbuj: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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": ""
}
Ograniczenia:
Wypróbuj: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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
}
}
Ograniczenia:
Wypróbuj: https://ipfind.co/me?auth= < Twój klucz API >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
]
}
Ograniczenia:
Wypróbuj: https://api.ipgeolocation.io/ipgeo?apiKey= < Twój klucz API >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
}
}
Ograniczenia:
Wypróbuj: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"ip": "116.12.250.1"
}
Ograniczenia:
Spróbuj: https://api.ipinfodb.com/v3/ip-city/?key= < your 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));
});
Zwroty:
{
"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"
}
Ograniczenia:
Wypróbuj: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
}
Ograniczenia:
Wypróbuj: https://api.ipregistry.co/?key= < Twój klucz API >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"ip" : "116.12.250.1",
"type" : "IPv4",
"hostname" : null,
"carrier" : {
"name" : null,
"mcc" : null,
"mnc" : null
},
"connection" : {
"asn" : 3758,
"domain" : "singnet.com.sg",
"organization" : "SingNet Pte Ltd",
"type" : "isp"
},
"currency" : {
"code" : "SGD",
"name" : "Singapore Dollar",
"plural" : "Singapore dollars",
"symbol" : "SGD",
"symbol_native" : "SGD",
"format" : {
"negative" : {
"prefix" : "-SGD",
"suffix" : ""
},
"positive" : {
"prefix" : "SGD",
"suffix" : ""
}
}
},
"location" : {
"continent" : {
"code" : "AS",
"name" : "Asia"
},
"country" : {
"area" : 692.0,
"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" : "Singapore"
},
"city" : "Singapore",
"postal" : "96534",
"latitude" : 1.28967,
"longitude" : 103.85007,
"language" : {
"code" : "cmn",
"name" : "cmn",
"native" : "cmn"
},
"in_eu" : false
},
"security" : {
"is_bogon" : false,
"is_cloud_provider" : 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-09-29T23:13:32+08:00",
"name" : "Singapore Standard Time",
"offset" : 28800,
"in_daylight_saving" : false
}
}
Ograniczenia:
Wypróbuj: http://api.ipstack.com/ < adres ip >? Access_key = <twój klucz api>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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
}
}
Ograniczenia:
Wypróbuj: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"ip": "116.12.250.1",
"about": "https://jsonip.com/about",
"Pro!": "http://getjsonip.com",
"Get Notifications": "https://jsonip.com/notify"
}
Ograniczenia:
Wypróbuj: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"ip": "116.12.250.1"
}
Ograniczenia:
Wypróbuj: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Zwroty:
{
"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"
}
Ograniczenia:
Należy pamiętać, że ponieważ są to wszystkie bezpłatne usługi, przebieg może się różnić pod względem przekroczenia limitu i czasu pracy, a kto wie, kiedy / czy zostaną one odłączone w trybie offline w drodze ( załącznik A: Telize ). Większość z tych usług oferuje również płatną warstwę, na wypadek gdybyś potrzebował więcej funkcji, takich jak obsługa SSL.
Ponadto, jak zauważył skobaljic w poniższych komentarzach, kwoty wniosków są w większości akademickie, ponieważ dzieje się to po stronie klienta, a większość użytkowników końcowych nigdy nie przekroczy limitu.
AKTUALIZACJE
$.getJSON('//freegeoip.net/json/?callback=?', function(data) { if (!data || !data.ip) alert('IP not found'); }).fail(function() { alert('$.getJSON() request failed'); });
Ostatnia aktualizacja
To rozwiązanie już nie działałoby, ponieważ przeglądarki naprawiają wyciek webrtc: aby uzyskać więcej informacji, przeczytaj to drugie pytanie: RTCIceCandidate nie zwraca już adresu IP
Aktualizacja : Zawsze chciałem stworzyć minimalną / nieglifikowaną wersję kodu, więc oto kod Promise ES6:
Uwaga: ten nowy zminimalizowany kod zwróci tylko jeden adres IP, jeśli chcesz uzyskać wszystkie adresy IP użytkownika (które mogą być większe w zależności od jego sieci), użyj oryginalnego kodu ...
dzięki WebRTC bardzo łatwo jest uzyskać lokalny adres IP w przeglądarkach obsługiwanych przez WebRTC (przynajmniej na razie). Zmodyfikowałem kod źródłowy, zmniejszyłem liczbę wierszy, nie wysyłając żadnych żądań ogłuszenia, ponieważ chcesz tylko lokalny adres IP, a nie publiczny adres IP, poniższy kod działa w najnowszych przeglądarkach Firefox i Chrome, po prostu uruchom fragment kodu i sprawdź sam:
to, co się tutaj dzieje, tworzymy fałszywe połączenie peer, a aby zdalny peer mógł się z nami skontaktować, zazwyczaj wymieniamy między sobą kandydatów do lodu. I czytając lodowych kandydatów (z lokalnego opisu sesji i onIceCandidateEvent) możemy powiedzieć adres IP użytkownika.
skąd wziąłem kod z -> Źródło
źródło
Możesz, przekazując go po stronie serwera za pomocą JSONP
A podczas wyszukiwania go w Google, znalazłem go tutaj na SO. Czy mogę przeprowadzić wyszukiwanie DNS (nazwa hosta na adres IP) przy użyciu Javascript po stronie klienta?
źródło
Error Over Quota This application is temporarily over its serving quota. Please try again later.
Większość odpowiedzi tutaj „omija” potrzebę kodu po stronie serwera, uderzając w serwer innej osoby. Jest to całkowicie poprawna technika, chyba że faktycznie potrzebujesz adresu IP bez uderzania w serwer.
Tradycyjnie nie było to możliwe bez jakiejś wtyczki (i nawet wtedy prawdopodobnie dostałbyś zły adres IP, gdybyś był za routerem NAT), ale wraz z pojawieniem się WebRTC jest to możliwe. . Jeśli jesteś kierowania przeglądarkach obsługujących WebRTC (obecnie: Firefox, Chrome i Opera).
Przeczytaj odpowiedź mido, aby uzyskać szczegółowe informacje na temat uzyskiwania użytecznych adresów IP klientów za pomocą WebRTC.
źródło
Możesz wykonać wywołanie ajax do hostip.info lub podobnej usługi ...
Jako bonus, informacje o geolokalizacji są zwracane w ramach tego samego połączenia.
źródło
LUB
Skrzypce
źródło
Nie możesz Musisz zapytać serwer.
źródło
Nie szukaj dalej
Sprawdź http://www.ipify.org/
Według nich:
Oto działający przykład JS (zamiast zastanawiać się, dlaczego ta odpowiedź ma tak mało głosów, spróbuj sam, aby zobaczyć ją w akcji):
Zbyt leniwy, aby skopiować / wkleić? Lubię to. Oto demo 💻
Zbyt leniwy, by kliknąć?
:O
Nie mam nic wspólnego z zespołem IPify. Myślę, że to absurdalnie fajne, że ktoś zapewniłby taką usługę dla ogólnego dobra.
źródło
Możesz do tego użyć mojej usługi http://ipinfo.io , która da ci adres IP klienta, nazwę hosta, informacje o geolokalizacji i właściciela sieci. Oto prosty przykład, który rejestruje adres IP:
Oto bardziej szczegółowy przykład JSFiddle, który drukuje również pełne informacje o odpowiedzi, dzięki czemu można zobaczyć wszystkie dostępne szczegóły: http://jsfiddle.net/zK5FN/2/
źródło
http://ipinfo.io
do//ipinfo.io
lub httpsDodaj ten kod na swojej stronie:
<script type="text/javascript" src="http://l2.io/ip.js"></script>
więcej dokumentów tutaj
źródło
Powiedziałbym, że Czad i Malta mają świetną odpowiedź. Ich są jednak skomplikowane. Sugeruję więc ten kod, który znalazłem w reklamach według wtyczek krajów
Brak ajax. Po prostu zwykłe javascripts. :RE
Jeśli przejdziesz na http://j.maxmind.com/app/geoip.js , zobaczysz, że zawiera
Tak naprawdę to jeszcze nie odpowiada na pytanie, ponieważ
http://j.maxmind.com/app/geoip.js nie zawiera adresu IP (chociaż założę się, że używa adresu IP w celu uzyskania kraju).
Ale tak łatwo jest stworzyć skrypt phP, który pop coś takiego
Sprawiają, że. Załóż http://yourdomain.com/yourip.php .
Więc zrób
Pytanie wyraźnie wspomina NIE używać skryptu innej firmy. Nie ma innego wyjścia. JavaScript nie może poznać twojego adresu IP. Ale inne serwery, do których można uzyskać dostęp za pomocą javascript, mogą działać równie dobrze bez problemu.
źródło
Istnieją dwie interpretacje tego pytania. Większość ludzi interpretowała „klient IP” jako publiczny adres IP, który serwer sieciowy widzi poza siecią LAN i poza Internetem. Jednak w większości przypadków nie jest to adres IP komputera klienckiego
Potrzebowałem prawdziwego adresu IP komputera, na którym działa przeglądarka, która obsługuje moje oprogramowanie JavaScript (który prawie zawsze jest lokalnym adresem IP w sieci LAN za czymś takim warstwy NAT).
Mido opublikowało odpowiedź FANTASTYCZNĄ powyżej, która wydaje się być jedyną odpowiedzią, która naprawdę podała adres IP klienta.
Dzięki za to, Mido!
Przedstawiona funkcja działa jednak asynchronicznie. Muszę faktycznie UŻYWAĆ adresu IP w moim kodzie, a przy rozwiązaniu asynchronicznym mogę spróbować użyć adresu IP, zanim zostanie pobrany / wyuczony / zapisany. Musiałem być w stanie zaczekać na pojawienie się wyników przed ich użyciem.
Oto „Waiable” wersja funkcji Mido. Mam nadzieję, że pomoże to komuś innemu:
źródło
Jest łatwiejsze i darmowe podejście, które nie poprosi użytkownika o pozwolenie.
Polega ona na przesłaniu bardzo prostego żądania POST Ajax na http://freegeoip.net/json . Po otrzymaniu informacji o lokalizacji w JSON reagujesz odpowiednio, aktualizując stronę lub przekierowując na nową.
Oto jak przesyłasz zapytanie o informacje o lokalizacji:
źródło
Cóż, odbiegam od pytania, ale dzisiaj miałem podobną potrzebę i chociaż nie mogłem znaleźć identyfikatora od klienta za pomocą Javascript, zrobiłem następujące.
Po stronie serwera:
Korzystanie z Javascript
Korzystam z ASP.Net Ajax, ale możesz użyć getElementById zamiast $ get ().
Co się dzieje, mam ukryty element div na stronie z adresem IP użytkownika renderowanym z serwera. Niż w JavaScript po prostu ładuję tę wartość.
Może to być pomocne dla niektórych osób o podobnych wymaganiach, takich jak twoje (takich jak ja, chociaż tego nie rozgryzłem).
Twoje zdrowie!
źródło
<script>var uip='<%= Request.UserHostAddress %>';</script>
?Dzięki użyciu API Geo-IP Smart-IP.net . Na przykład za pomocą jQuery:
źródło
Zwykle nie jest to możliwe, chyba że korzystasz z usług zewnętrznych.
źródło
Uzyskaj swój adres IP dzięki jQuery
możesz uzyskać swój publiczny adres IP za pomocą jednej linii JS? Jest to bezpłatna usługa, która oferuje to za Ciebie, a prośba o pobranie to wszystko, co musisz zrobić:
Aby powyższy fragment działał, Twoja przeglądarka będzie musiała obsługiwać CORS (udostępnianie żądań między źródłami). W przeciwnym razie zostałby zgłoszony wyjątek bezpieczeństwa. W starszych przeglądarkach możesz użyć tej wersji, która korzysta z żądania JSON-P:
źródło
Możesz użyć biblioteki javascript userinfo.io .
Do załadowania skryptu można także użyć metody wymaganej.
Poda ci adres IP twojego gościa, a także kilka danych o jego lokalizacji (kraj, miasto itp.). Opiera się na bazie geoip maxmind.
Oświadczenie: Napisałem tę bibliotekę
źródło
Javascript / jQuery uzyskać adres IP i lokalizację klienta (kraj, miasto)
Trzeba tylko osadzić tag z linkiem „src” do serwera. Serwer zwróci „codehelper_ip” jako Object / JSON i możesz go użyć od razu.
Więcej informacji na stronie Javascript Detect Real IP Address Plus Country
Jeśli używasz jQUery, możesz spróbować:
Pokaże ci więcej informacji na temat zwróconego obiektu.
Jeśli chcesz funkcji oddzwaniania, spróbuj tego:
źródło
language
atrybutu,type="text/javascript"
zamiast tego użyj , więcej na MDNUsługa oddzwaniania Appspot.com nie jest dostępna. Wygląda na to, że ipinfo.io działa.
Zrobiłem dodatkowy krok i odzyskałem wszystkie informacje geograficzne za pomocą AngularJS. (Dzięki Ricardo) Sprawdź to.
Strona robocza tutaj: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
źródło
Jeśli dołączasz plik zawsze, możesz zrobić prosty ajax:
I
ajax.getIp.php
byłoby to:źródło
Bardzo mi się podoba,
api.ipify.org
ponieważ obsługuje zarówno HTTP, jak i HTTPS.Oto kilka przykładów uzyskiwania adresu IP przy
api.ipify.org
użyciu jQuery.Format JSON przez HTTPS
Format JSON przez HTTP
Format tekstowy przez HTTPS
Jeśli nie chcesz tego w JSON, istnieje również odpowiedź w postaci zwykłego tekstu przez HTTPS
Format tekstowy przez HTTP
Istnieje również odpowiedź w postaci zwykłego tekstu przez HTTP
źródło
Użyj ipdata.co .
Interfejs API zapewnia również dane geolokalizacyjne i ma 10 globalnych punktów końcowych, z których każdy jest w stanie obsłużyć> 800 milionów żądań dziennie!
źródło
Naprawdę nie ma niezawodnego sposobu na uzyskanie adresu IP komputera klienckiego.
To dotyczy niektórych możliwości. Kod korzystający z Java ulegnie awarii, jeśli użytkownik ma wiele interfejsów.
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
Patrząc na inne odpowiedzi tutaj, wydaje się, że możesz chcieć uzyskać publiczny adres IP klienta, który prawdopodobnie jest adresem routera, którego używają do łączenia się z Internetem. Wiele innych odpowiedzi tutaj mówi o tym. Polecam utworzenie i hosting własnej strony po stronie serwera w celu otrzymania żądania i odpowiedzi adresem IP zamiast polegać na usługach innych osób, które mogą nadal działać.
źródło
Mam zamiar zaoferować metodę, której często używam, gdy chcę przechowywać informacje na stronie HTML i chcę, aby mój javascript czytał informacje bez konieczności przekazywania parametrów do javascript. Jest to szczególnie przydatne, gdy skrypt jest przywoływany zewnętrznie, a nie inline.
Jednak nie spełnia kryterium „bez skryptu po stronie serwera”. Ale jeśli możesz dołączyć skrypty po stronie serwera do html, wykonaj następujące czynności:
Twórz ukryte elementy etykiet u dołu strony HTML, tuż nad tagiem end body.
Twoja etykieta będzie wyglądać następująco:
Pamiętaj, aby utworzyć klasę o nazwie
hiddenlabel
i ustawićvisibility:hidden
tak, aby nikt nie widział etykiety. W ten sposób możesz przechowywać wiele rzeczy w ukrytych etykietach.Teraz, aby pobrać informacje przechowywane na etykiecie (w tym przypadku adres IP klienta) w skrypcie javascript, możesz to zrobić:
Teraz twoja zmienna „ip” jest równa adresowi ip. Teraz możesz przekazać ip do żądania API.
* EDYCJA 2 LATA PÓŹNIEJ * Dwa drobne poprawki:
Rutynowo używam tej metody, ale nazywam etykietę
class="data"
, ponieważ w rzeczywistości jest to sposób przechowywania danych. Nazwa klasy „hiddenlabel” to głupia nazwa.Druga modyfikacja znajduje się w arkuszu stylów zamiast
visibility:hidden
:... to lepszy sposób na zrobienie tego.
źródło
źródło
Spróbuj tego: http://httpbin.org/ip (lub https://httpbin.org/ip )
Przykład z https:
Źródło: http://httpbin.org/
źródło
Przede wszystkim faktyczna odpowiedź : nie można użyć kodu wykonanego wyłącznie po stronie klienta, aby znaleźć swój własny adres IP.
Możesz jednak zrobić GET w kierunku https://api.muctool.de/whois i otrzymać coś w rodzaju uzyskania adresu IP klienta
źródło
Możesz to zrobić całkowicie po stronie klienta, głównie w JavaScript, używając obiektu Flash, który może wywołać js. Flash może uzyskać dostęp do adresu IP komputera lokalnego, co może nie być bardzo przydatne.
źródło
data.host
to adres IP. Po prostu zadzwoń do tego z poziomu przeglądarki.http://smart-ip.net/geoip-json?callback=?
[Bez cytatów] i zdobądź ip.źródło