Мне нужно каким-то образом получить IP-адрес клиента с помощью JavaScript; нет кода на стороне сервера, даже SSI.
Однако я не против использования бесплатного стороннего скрипта / сервиса.
источник
Мне нужно каким-то образом получить IP-адрес клиента с помощью JavaScript; нет кода на стороне сервера, даже SSI.
Однако я не против использования бесплатного стороннего скрипта / сервиса.
Я хотел бы использовать веб-сервис, который может возвращать JSON (вместе с jQuery, чтобы сделать вещи проще). Ниже приведены все свободные активные IP служб поиска я мог бы найти и информация , которую они возвращают. Если вы знаете что-то еще, пожалуйста, добавьте комментарий, и я обновлю этот ответ.
Попробуйте это: 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)
})
Возвращает:
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
Ограничения:
Попробуйте: http://api.db-ip.com/addrinfo?api_key= < ваш ключ API > & addr = < IP-адрес >
Возвращает:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
Ограничения:
Попробуйте это: http://gd.geobytes.com/GetCityDetails
$.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
}
Ограничения:
Попробуйте это: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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
}
Ограничения:
Попробуйте это: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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
}
Ограничения:
Попробуйте: https://api.hackertarget.com/geoip/?q= < IP-адрес >
Возвращает:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
Ограничения:
Попробуйте это: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
}
Ограничения:
Попробуйте это: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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": ""
}
Ограничения:
Попробуйте это: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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
}
}
Ограничения:
Попробуйте: https://ipfind.co/me?auth= < ваш ключ API >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
]
}
Ограничения:
Попробуйте: https://api.ipgeolocation.io/ipgeo?apiKey= < ваш ключ API >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
}
}
Ограничения:
Попробуйте: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"ip": "116.12.250.1"
}
Ограничения:
Попробуйте: https://api.ipinfodb.com/v3/ip-city/?key= < ваш ключ 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));
});
Возвращает:
{
"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"
}
Ограничения:
Попробуйте это: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
}
Ограничения:
Попробуйте: https://api.ipregistry.co/?key= < ваш ключ API >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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
}
}
Ограничения:
Попробуйте: http://api.ipstack.com/ < IP-адрес >? Access_key = <ваш ключ API>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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
}
}
Ограничения:
Попробуйте это: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"ip": "116.12.250.1",
"about": "https://jsonip.com/about",
"Pro!": "http://getjsonip.com",
"Get Notifications": "https://jsonip.com/notify"
}
Ограничения:
Попробуйте это: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"ip": "116.12.250.1"
}
Ограничения:
Попробуйте это: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Возвращает:
{
"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"
}
Ограничения:
Имейте в виду, что, поскольку все это бесплатные услуги, ваш пробег может варьироваться в зависимости от превышения квоты и времени безотказной работы, и кто знает, когда / если они будут переведены в автономный режим в будущем (выставка A: Telize ). Большинство из этих услуг также предлагают платный уровень, если вам нужны дополнительные функции, такие как поддержка SSL.
Кроме того, как отметил Скобальич в комментариях ниже, квоты на запросы в основном являются академическими, поскольку это происходит на стороне клиента, и большинство конечных пользователей никогда не превысят эту квоту.
ОБНОВЛЕНИЕ
$.getJSON('//freegeoip.net/json/?callback=?', function(data) { if (!data || !data.ip) alert('IP not found'); }).fail(function() { alert('$.getJSON() request failed'); });
Окончательное обновление
Это решение больше не будет работать, потому что браузеры исправляют утечку webrtc: для получения дополнительной информации об этом прочитайте этот другой вопрос: RTCIceCandidate больше не возвращает IP
Обновление : я всегда хотел сделать min / uglified версию кода, так что вот код ES6 Promise:
Примечание. Этот новый минимизированный код будет возвращать только один IP-адрес, если вы хотите, чтобы все IP-адреса пользователя (которые могут быть в большей степени зависят от его сети), используют оригинальный код ...
Благодаря WebRTC очень легко получить локальный IP в браузерах, поддерживаемых WebRTC (по крайней мере, на данный момент). Я изменил исходный код, сократил количество строк, не делая никаких запросов на оглушение, так как вам нужен только локальный IP, а не публичный IP, приведенный ниже код работает в последних версиях Firefox и Chrome, просто запустите сниппет и проверьте сами:
то, что здесь происходит, мы создаем фиктивное одноранговое соединение, и для того, чтобы удаленный одноранговый узел связался с нами, мы обычно обмениваемся ледовыми кандидатами друг с другом. И, читая ледовых кандидатов (из описания локального сеанса и onIceCandidateEvent), мы можем указать IP пользователя.
откуда я взял код -> Source
источник
Вы можете передать его через серверную часть с помощью JSONP
И в то время как поиск в Google, нашел его здесь на SO. Могу ли я выполнить поиск DNS (имя хоста по IP-адресу), используя Javascript на стороне клиента?
источник
Error Over Quota This application is temporarily over its serving quota. Please try again later.
Большинство ответов здесь "обходят" потребность в коде на стороне сервера путем ... попадания на чужой сервер. Это вполне допустимый метод, если только вам действительно не нужно получать IP-адрес, не обращаясь к серверу.
Традиционно это было невозможно без какого-либо плагина (и даже тогда вы, вероятно, получили бы неправильный IP-адрес, если бы находились за маршрутизатором NAT), но с появлением WebRTC это действительно возможно сделать .. . Если вы ориентируетесь браузеры, поддержка WebRTC ( в настоящее время: Firefox, Chrome и Opera).
Пожалуйста, прочтите ответ Mido для получения подробной информации о том, как вы можете получить полезные клиентские IP-адреса с помощью WebRTC.
источник
Вы можете сделать ajax вызов на hostip.info или аналогичный сервис ...
В качестве бонуса информация о геолокации возвращается в том же вызове.
источник
ИЛИ
скрипка
источник
Ты не можешь Вы должны спросить сервер.
источник
Смотреть не дальше
Проверьте http://www.ipify.org/
Согласно им:
Вот рабочий пример JS (вместо того, чтобы удивляться, почему у этого ответа так мало голосов, попробуйте сами, чтобы увидеть его в действии):
Лень копировать / вставлять? Мне это нравится. Вот демо
Лень щелкать?
:O
Я не имею ничего общего с командой IPify. Я просто думаю, что это смешно, что кто-то предоставит такую услугу для общего блага.
источник
Для этого вы можете использовать мой сервис http://ipinfo.io , который предоставит вам IP-адрес клиента, имя хоста, информацию о геолокации и владельца сети. Вот простой пример, который регистрирует IP:
Вот более подробный пример JSFiddle, который также выводит полную информацию об ответах, чтобы вы могли увидеть все доступные сведения: http://jsfiddle.net/zK5FN/2/
источник
http://ipinfo.io
в//ipinfo.io
или HTTPSВключите этот код на своей странице:
<script type="text/javascript" src="http://l2.io/ip.js"></script>
больше документов здесь
источник
Я бы сказал, что у Чада и Мальты отличный ответ. Однако их сложно. Поэтому я предлагаю этот код, который я нашел из рекламы по стране плагин
Нет аякса. Просто простые javascript. : D
Если вы перейдете на http://j.maxmind.com/app/geoip.js, вы увидите, что он содержит
Это на самом деле еще не отвечает на вопрос, потому что
http://j.maxmind.com/app/geoip.js не содержит IP (хотя, держу пари, он использует IP для получения страны).
Но это так легко сделать скрипт PhP, который выдает что-то вроде
Сделай это. Положите на http://yourdomain.com/yourip.php .
Тогда делай
В вопросе конкретно упоминается НЕ использовать сторонний скрипт. Другого пути нет. Javascript не может знать ваш IP. Но другие серверы, к которым можно получить доступ через javascript, могут работать без проблем.
источник
Есть два толкования этого вопроса. Большинство людей интерпретировали «IP-адрес клиента» как «Общий IP-адрес», который веб-сервер видит вне локальной сети и в Интернете. В большинстве случаев это не IP-адрес клиентского компьютера.
Мне нужен был реальный IP-адрес компьютера, на котором работает браузер, на котором размещено мое программное обеспечение JavaScript (это почти всегда локальный IP-адрес в локальной сети, находящейся за чем-то, что находится на уровне NAT).
Mido опубликовал ФАНТАСТИЧЕСКИЙ ответ выше, который, кажется, единственный ответ, который действительно предоставил IP-адрес клиента.
Спасибо за это, Мидо!
Однако представленная функция работает асинхронно. Мне нужно на самом деле использовать IP-адрес в моем коде, и при асинхронном решении я мог бы попытаться использовать IP-адрес до того, как он будет извлечен / изучен / сохранен. Я должен был быть в состоянии дождаться результатов, прежде чем использовать их.
Вот «ожидаемая» версия функции Mido. Я надеюсь, что это помогает кому-то еще:
источник
Существует более простой и бесплатный подход, который не будет запрашивать у вашего посетителя никакого разрешения.
Он заключается в отправке очень простого запроса POST Ajax на http://freegeoip.net/json . Получив информацию о своем местоположении, в JSON вы реагируете соответствующим образом, обновляя страницу или перенаправляя на новую.
Вот как вы отправляете свой запрос на информацию о местоположении:
источник
Ну, я отступаю от этого вопроса, но у меня была похожая потребность сегодня, и, хотя я не смог найти идентификатор клиента с помощью Javascript, я сделал следующее.
На стороне сервера: -
Используя Javascript
Я использую ASP.Net Ajax, но вы можете использовать getElementById вместо $ get ().
Что происходит, у меня есть скрытый элемент div на странице с IP-адресом пользователя, отображаемым с сервера. Чем в Javascript я просто загружаю это значение.
Это может быть полезно для некоторых людей с такими же требованиями, как у вас (например, я, пока я этого не понял).
Ура!
источник
<script>var uip='<%= Request.UserHostAddress %>';</script>
?С использованием Smart-IP.net Geo-IP API . Например, используя jQuery:
источник
В целом невозможно, если вы не используете какой-либо внешний сервис.
источник
Получите ваш IP с помощью jQuery
Вы можете получить свой публичный IP-адрес с одной линией JS? Существует бесплатный сервис, который предлагает это для вас, и запрос на получение - это все, что вам нужно сделать:
Для работы приведенного выше фрагмента ваш браузер должен поддерживать CORS (обмен запросами между источниками). В противном случае возникнет исключение безопасности. В старых браузерах вы можете использовать эту версию, которая использует запрос JSON-P:
источник
Вы можете использовать библиотеку javascript userinfo.io .
Вы также можете использовать requirejs для загрузки скрипта.
Он предоставит вам IP-адрес вашего посетителя, а также несколько данных о его местонахождении (страна, город и т. Д.). Он основан на базе данных maxmind geoip.
Отказ от ответственности: я написал эту библиотеку
источник
Javascript / JQuery получить IP-адрес и местоположение клиента (страна, город)
Вам нужно только вставить тег с ссылкой "src" на сервер. Сервер вернет «codehelper_ip» в виде объекта / JSON, и вы можете сразу его использовать.
Более подробная информация на сайте Javascript Detect Real IP Address Plus Country
Если вы используете jQUery, вы можете попробовать:
Он покажет вам больше информации о возвращенном объекте.
Если вы хотите функцию обратного вызова, попробуйте это:
источник
language
атрибут, используйтеtype="text/javascript"
вместо этого, больше на MDNСлужба обратного вызова Appspot.com недоступна. ipinfo.io, кажется, работает.
Я сделал дополнительный шаг и получил всю геоинформацию, используя AngularJS. (Спасибо Рикардо) Проверьте это.
Рабочая страница здесь: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
источник
Если вы всегда включаете файл, вы можете сделать простой ajax get:
И
ajax.getIp.php
было бы это:источник
Мне очень нравится,
api.ipify.org
потому что он поддерживает HTTP и HTTPS.Вот несколько примеров получения IP с
api.ipify.org
использованием jQuery.Формат JSON через HTTPS
JSON формат по HTTP
Текстовый формат по HTTPS
Если вы не хотите, чтобы в JSON был также текстовый ответ через HTTPS
Текстовый формат по HTTP
И есть также открытый текст по HTTP
источник
Используйте ipdata.co .
API также предоставляет данные геолокации и имеет 10 глобальных конечных точек, каждая из которых может обрабатывать> 800 миллионов запросов в день!
источник
На самом деле нет надежного способа получить IP-адрес клиентского компьютера.
Это проходит через некоторые возможности. Код, который использует Java, сломается, если у пользователя будет несколько интерфейсов.
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
Если посмотреть на другие ответы здесь, кажется, что вы захотите получить публичный IP-адрес клиента, который, вероятно, является адресом маршрутизатора, который они используют для подключения к Интернету. Многие другие ответы здесь говорят об этом. Я бы порекомендовал создать и разместить свою собственную серверную страницу для получения запроса и ответа с IP-адресом, а не зависеть от чьей-либо службы, которая может продолжать работать, а может и не работать.
источник
Я собираюсь предложить метод, который я часто использую, когда хочу сохранить информацию на html-странице и хочу, чтобы мой javascript считывал информацию без фактической передачи параметров в javascript. Это особенно полезно, когда на ваш скрипт ссылаются внешне, а не на встроенный.
Однако он не соответствует критерию «нет сценария на стороне сервера». Но если вы можете включить серверные сценарии в свой HTML, сделайте это:
Сделайте скрытые элементы метки внизу вашей HTML-страницы, чуть выше конечного тега body.
Ваш ярлык будет выглядеть так:
Обязательно сделайте класс с именем
hiddenlabel
и установитеvisibility:hidden
так, чтобы никто не видел метку. Таким образом, вы можете хранить множество вещей в скрытых ярлыках.Теперь, в вашем javascript, чтобы получить информацию, хранящуюся в метке (в данном случае IP-адрес клиента), вы можете сделать это:
Теперь ваша переменная "ip" равна IP-адресу. Теперь вы можете передать IP на ваш запрос API.
* РЕДАКТИРОВАТЬ 2 ГОДА ПОЗЖЕ * Два небольших уточнения:
Я обычно использую этот метод, но вызываю метку
class="data"
, потому что, по сути, это способ хранения данных. Название класса "hiddenlabel" является своего рода глупым именем.Вторая модификация в таблице стилей, а не
visibility:hidden
:... это лучший способ сделать это.
источник
источник
Попробуйте это: http://httpbin.org/ip (или https://httpbin.org/ip )
Пример с https:
Источник: http://httpbin.org/
источник
Прежде всего, фактический ответ : невозможно использовать чисто исполняемый код на стороне клиента, чтобы узнать ваш собственный IP-адрес.
Однако вы можете просто получить GET к https://api.muctool.de/whois и получить что-то вроде получения IP-адреса клиента.
источник
Вы можете сделать это полностью на стороне клиента и в основном на JavaScript, используя объект Flash, который может вызвать js. Flash может получить доступ к IP-адресу локальной машины, что может быть не очень полезно.
источник
data.host
это IP-адрес. Просто позвоните в ваш браузер.http://smart-ip.net/geoip-json?callback=?
[Без кавычек] и получите IP.источник