Saya perlu mengambil alamat IP klien menggunakan JavaScript; tidak ada kode sisi server, bahkan SSI.
Namun, saya tidak menentang menggunakan skrip / layanan pihak ke-3 gratis.
sumber
Saya perlu mengambil alamat IP klien menggunakan JavaScript; tidak ada kode sisi server, bahkan SSI.
Namun, saya tidak menentang menggunakan skrip / layanan pihak ke-3 gratis.
Saya akan menggunakan layanan web yang dapat mengembalikan JSON (bersama dengan jQuery untuk mempermudah). Di bawah ini adalah semua layanan pencarian IP aktif gratis yang dapat saya temukan dan informasi yang mereka kembalikan. Jika Anda tahu lagi, silakan tambahkan komentar dan saya akan memperbarui jawaban ini.
Cobalah: 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)
})
Pengembalian:
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
Keterbatasan:
Cobalah: http://api.db-ip.com/addrinfo?api_key= < kunci api Anda > & addr = < alamat ip >
Pengembalian:
{
"address": "116.12.250.1",
"country": "SG",
"stateprov": "Central Singapore",
"city": "Singapore"
}
Keterbatasan:
Cobalah: http://gd.geobytes.com/GetCityDetails
$.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
}
Keterbatasan:
Cobalah: https://json.geoiplookup.io/api
$.getJSON('https://json.geoiplookup.io/api?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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
}
Keterbatasan:
Cobalah: http://www.geoplugin.net/json.gp
$.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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
}
Keterbatasan:
Cobalah: https://api.hackertarget.com/geoip/?q= < alamat ip >
Pengembalian:
IP Address: 116.12.250.1
Country: SG
State: N/A
City: Singapore
Latitude: 1.293100
Longitude: 103.855797
Keterbatasan:
Cobalah: https://ipapi.co/json/
$.getJSON('https://ipapi.co/json/', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
}
Keterbatasan:
Cobalah: http://ip-api.com/json
$.getJSON('http://ip-api.com/json?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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": ""
}
Keterbatasan:
Cobalah: https://api.ipdata.co
$.getJSON('https://api.ipdata.co', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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
}
}
Keterbatasan:
Cobalah: https://ipfind.co/me?auth= < kunci api Anda >
$.getJSON('https://ipfind.co/me?auth=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
]
}
Keterbatasan:
Cobalah: https://api.ipgeolocation.io/ipgeo?apiKey= < kunci api Anda >
$.getJSON('https://api.ipgeolocation.io/ipgeo?apiKey=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
}
}
Keterbatasan:
Cobalah: https://api.ipify.org/?format=json
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"ip": "116.12.250.1"
}
Keterbatasan:
Cobalah: https://api.ipinfodb.com/v3/ip-city/?key= < kunci api Anda > & 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));
});
Pengembalian:
{
"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"
}
Keterbatasan:
Cobalah: https://ipinfo.io/json
$.getJSON('https://ipinfo.io/json', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
}
Keterbatasan:
Cobalah: https://api.ipregistry.co/?key= < kunci api Anda >
$.getJSON('https://api.ipregistry.co/?key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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
}
}
Keterbatasan:
Cobalah: http://api.ipstack.com/ < ip address >? Access_key = <kunci api Anda>
$.getJSON('http://api.ipstack.com/<ip_address>?access_key=<your_api_key>', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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
}
}
Keterbatasan:
Cobalah: https://jsonip.com
$.getJSON('https://jsonip.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"ip": "116.12.250.1",
"about": "https://jsonip.com/about",
"Pro!": "http://getjsonip.com",
"Get Notifications": "https://jsonip.com/notify"
}
Keterbatasan:
Cobalah: http://ip.jsontest.com/
$.getJSON('http://ip.jsontest.com/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"ip": "116.12.250.1"
}
Keterbatasan:
Cobalah: https://geoip.nekudo.com/api
$.getJSON('https://geoip.nekudo.com/api', function(data) {
console.log(JSON.stringify(data, null, 2));
});
Pengembalian:
{
"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"
}
Keterbatasan:
Ingatlah bahwa karena ini semua adalah layanan gratis, jarak tempuh Anda mungkin berbeda dalam hal melebihi kuota dan waktu aktif, dan siapa yang tahu kapan / apakah mereka akan offline di jalan (pameran A: Telize ). Sebagian besar layanan ini juga menawarkan tingkat pembayaran jika Anda menginginkan lebih banyak fitur seperti dukungan SSL.
Juga, seperti yang dicatat skobaljic dalam komentar di bawah ini, kuota permintaan sebagian besar bersifat akademis karena ini terjadi di sisi klien dan sebagian besar pengguna akhir tidak akan pernah melebihi kuota.
PEMBARUAN
$.getJSON('//freegeoip.net/json/?callback=?', function(data) { if (!data || !data.ip) alert('IP not found'); }).fail(function() { alert('$.getJSON() request failed'); });
Pembaruan Terakhir
Solusi ini tidak akan berfungsi lagi karena browser memperbaiki kebocoran webrtc: untuk info lebih lanjut tentang itu baca pertanyaan lain ini: RTCIceCandidate tidak lagi mengembalikan IP
Pembaruan : Saya selalu ingin membuat versi kode min / uglified, jadi di sini adalah kode ES6 Promise:
Catatan: Kode minified baru ini hanya akan mengembalikan satu IP jika Anda ingin semua IP pengguna (yang mungkin lebih tergantung pada jaringannya), gunakan kode asli ...
berkat WebRTC , sangat mudah untuk mendapatkan IP lokal di browser yang didukung WebRTC (setidaknya untuk saat ini). Saya telah memodifikasi kode sumber, mengurangi garis, tidak membuat permintaan setrum karena Anda hanya menginginkan IP Lokal, bukan IP Publik, kode di bawah ini berfungsi di Firefox dan Chrome terbaru, cukup jalankan cuplikan dan periksa sendiri:
apa yang terjadi di sini adalah, kami membuat koneksi peer dummy, dan untuk peer remote untuk menghubungi kami, kami biasanya bertukar kandidat es satu sama lain. Dan membaca kandidat es (dari deskripsi sesi lokal dan onIceCandidateEvent) kami dapat memberi tahu IP pengguna.
tempat saya mengambil kode dari -> Sumber
sumber
Anda bisa, menyampaikannya melalui sisi server dengan JSONP
Dan ketika mencari di Google, menemukannya di SO, bisakah saya melakukan pencarian DNS (nama host ke alamat IP) menggunakan Javascript sisi klien?
sumber
Error Over Quota This application is temporarily over its serving quota. Please try again later.
Sebagian besar jawaban di sini "mengatasi" kebutuhan kode sisi server dengan ... Memukul server orang lain. Yang merupakan teknik yang benar-benar valid, kecuali jika Anda benar-benar perlu mendapatkan alamat IP tanpa memukul server.
Secara tradisional ini tidak mungkin tanpa semacam plugin (dan bahkan kemudian, Anda mungkin akan mendapatkan alamat IP yang salah jika Anda berada di belakang router NAT), tetapi dengan munculnya WebRTC sebenarnya mungkin untuk melakukan ini .. . Jika Anda menargetkan browser yang mendukung WebRTC (saat ini: Firefox, Chrome dan Opera).
Silakan baca jawaban mido untuk perincian tentang bagaimana Anda dapat mengambil alamat IP klien yang bermanfaat menggunakan WebRTC.
sumber
Anda dapat melakukan panggilan ajax ke hostip.info atau layanan serupa ...
Sebagai bonus, informasi geolokalisasi dikembalikan dalam panggilan yang sama.
sumber
ATAU
Biola
sumber
Kamu tidak bisa Anda harus bertanya ke server.
sumber
Tidak terlihat lagi
Lihat http://www.ipify.org/
Menurut mereka:
Berikut ini adalah contoh JS yang berfungsi (alih-alih bertanya-tanya mengapa jawaban ini memiliki begitu sedikit suara, cobalah sendiri untuk melihatnya beraksi):
Terlalu malas untuk menyalin / menempel? Saya suka itu. Ini demo 💻
Terlalu malas untuk mengklik?
:O
Saya tidak ada hubungannya dengan tim IPify. Saya hanya berpikir itu sangat keren bahwa seseorang akan memberikan layanan seperti itu untuk kebaikan umum.
sumber
Anda dapat menggunakan layanan saya http://ipinfo.io untuk ini, yang akan memberi Anda IP klien, nama host, informasi geolokasi, dan pemilik jaringan. Berikut adalah contoh sederhana yang mencatat IP:
Berikut adalah contoh JSFiddle yang lebih terperinci yang juga mencetak informasi respons lengkap, sehingga Anda dapat melihat semua detail yang tersedia: http://jsfiddle.net/zK5FN/2/
sumber
http://ipinfo.io
ke//ipinfo.io
atau httpsSertakan kode ini di halaman Anda:
<script type="text/javascript" src="http://l2.io/ip.js"></script>
lebih banyak dokumen di sini
sumber
Saya akan mengatakan Chad dan Malta memiliki jawaban yang bagus. Namun, mereka rumit. Jadi saya menyarankan kode ini yang saya temukan dari iklan dengan plugin negara
Tidak ajax. Javascript sederhana. : D
Jika Anda membuka http://j.maxmind.com/app/geoip.js Anda akan melihat bahwa isinya
Itu belum benar-benar menjawab pertanyaan karena
http://j.maxmind.com/app/geoip.js tidak mengandung IP (meskipun saya yakin itu menggunakan IP untuk mendapatkan negara).
Tapi sangat mudah untuk membuat skrip PhP yang muncul seperti
Buat itu. Pakailah http://domainanda.com/anda web.php .
Lalu lakukan
Pertanyaannya secara spesifik menyebutkan TIDAK untuk menggunakan skrip pihak ketiga. Tidak ada jalan lain. Javascript tidak dapat mengetahui IP Anda. Tetapi server lain yang dapat diakses melalui javascript dapat berfungsi dengan baik tanpa masalah.
sumber
Ada dua interpretasi untuk pertanyaan ini. Kebanyakan orang menafsirkan "IP Klien" berarti Alamat IP Publik yang dilihat server Web di luar LAN dan keluar di Internet. Namun, ini bukan alamat IP komputer klien
Saya membutuhkan alamat IP asli dari komputer yang menjalankan browser yang menampung perangkat lunak JavaScript saya (yang hampir selalu merupakan alamat IP lokal pada LAN yang berada di belakang sesuatu yang lapisan NAT).
Mido memposting jawaban FANTASTIS, di atas, yang tampaknya menjadi satu-satunya jawaban yang benar-benar memberikan alamat IP klien.
Terima kasih untuk itu, Mido!
Namun, fungsi yang disajikan berjalan secara tidak sinkron. Saya harus benar-benar MENGGUNAKAN alamat IP dalam kode saya, dan dengan solusi asinkron, saya mungkin mencoba menggunakan alamat IP sebelum diambil / dipelajari / disimpan. Saya harus bisa menunggu hasil sampai tiba sebelum menggunakannya.
Ini adalah versi "Tunggu" dari fungsi Mido. Saya harap ini membantu orang lain:
sumber
Ada pendekatan yang lebih mudah dan gratis yang tidak akan meminta izin pengunjung Anda.
Ini terdiri dari mengirimkan permintaan POST Ajax yang sangat sederhana ke http://freegeoip.net/json . Setelah Anda menerima informasi lokasi Anda, di JSON, Anda bereaksi sesuai dengan memperbarui halaman atau mengarahkan ke yang baru.
Inilah cara Anda mengirimkan permintaan Anda untuk informasi lokasi:
sumber
Yah, saya ngelantur dari pertanyaan, tapi saya punya kebutuhan yang sama hari ini dan meskipun saya tidak dapat menemukan ID dari klien menggunakan Javascript, saya melakukan hal berikut.
Di sisi server: -
Menggunakan Javascript
Saya menggunakan ASP.Net Ajax, tetapi Anda dapat menggunakan getElementById alih-alih $ get ().
Apa yang terjadi adalah, saya punya elemen div tersembunyi di halaman dengan IP pengguna yang diberikan dari server. Daripada di Javascript saya hanya memuat nilai itu.
Ini mungkin bermanfaat bagi beberapa orang dengan persyaratan yang sama seperti milik Anda (seperti saya sementara saya belum memikirkannya).
Bersulang!
sumber
<script>var uip='<%= Request.UserHostAddress %>';</script>
?Dengan menggunakan Smart-IP.net Geo-IP API . Misalnya, dengan menggunakan jQuery:
sumber
Tidak mungkin secara umum kecuali jika Anda menggunakan semacam layanan eksternal.
sumber
Dapatkan IP Anda dengan jQuery
Anda bisa mendapatkan alamat IP publik Anda dengan satu baris JS? Ada layanan gratis yang menawarkan ini untuk Anda dan semua permintaan yang perlu Anda lakukan:
Agar potongan di atas berfungsi, browser Anda harus mendukung CORS (berbagi permintaan lintas-asal). Kalau tidak, pengecualian keamanan akan dilemparkan. Di browser yang lebih lama, Anda dapat menggunakan versi ini, yang menggunakan permintaan JSON-P:
sumber
Anda dapat menggunakan perpustakaan javascript userinfo.io .
Anda juga dapat menggunakan requirejs untuk memuat skrip.
Ini akan memberi Anda alamat IP pengunjung Anda, serta beberapa data tentang lokasinya (negara, kota, dll.). Ini didasarkan pada database geoip maxmind.
Penafian: Saya menulis perpustakaan ini
sumber
Javascript / jQuery mendapatkan Alamat IP & Lokasi Klien (Negara, Kota)
Anda hanya perlu menyematkan tag dengan tautan "src" ke server. Server akan mengembalikan "codehelper_ip" sebagai Object / JSON, dan Anda dapat menggunakannya segera.
Informasi lebih lanjut di Javascript Detect Real IP Address Plus Country
Jika Anda menggunakan jQUery, Anda dapat mencoba:
Ini akan menunjukkan kepada Anda informasi lebih lanjut tentang objek yang dikembalikan.
Jika Anda ingin fungsi panggilan balik, silakan coba ini:
sumber
language
atribut,type="text/javascript"
sebaliknya , gunakan lebih banyak di MDNLayanan panggilan balik Appspot.com tidak tersedia. ipinfo.io tampaknya berfungsi.
Saya melakukan langkah ekstra dan mengambil semua info geo menggunakan AngularJS. (Terima kasih kepada Ricardo) Coba lihat.
Halaman kerja di sini: http://www.orangecountyseomarketing.com/projects/_ip_angularjs.html
sumber
Jika Anda memasukkan file anway, Anda bisa melakukan ajax sederhana:
Dan
ajax.getIp.php
akan seperti ini:sumber
Saya sangat suka
api.ipify.org
karena mendukung HTTP dan HTTPS.Berikut adalah beberapa contoh untuk mendapatkan IP
api.ipify.org
menggunakan jQuery.Format JSON melalui HTTPS
Format JSON melalui HTTP
Format teks lebih dari HTTPS
Jika Anda tidak menginginkannya di JSON, ada juga respons plaintext atas HTTPS
Format teks melalui HTTP
Dan ada juga respons plaintext atas HTTP
sumber
Gunakan ipdata.co .
API juga menyediakan data geolokasi dan memiliki 10 titik akhir global yang masing-masing mampu menangani> 800 juta permintaan sehari!
sumber
Sebenarnya tidak ada cara yang dapat diandalkan untuk mendapatkan alamat IP komputer klien.
Ini melewati beberapa kemungkinan. Kode yang menggunakan Java akan rusak jika pengguna memiliki banyak antarmuka.
http://nanoagent.blogspot.com/2006/09/how-to-find-evaluate-remoteaddrclients.html
Dari melihat jawaban lain di sini, sepertinya Anda mungkin ingin mendapatkan alamat IP publik klien, yang mungkin merupakan alamat router yang mereka gunakan untuk terhubung ke internet. Banyak jawaban lain di sini membicarakannya. Saya akan merekomendasikan membuat dan hosting halaman sisi server Anda sendiri untuk menerima permintaan dan merespons dengan alamat IP alih-alih bergantung pada layanan orang lain yang mungkin atau mungkin tidak terus bekerja.
sumber
Saya akan menawarkan metode yang banyak saya gunakan ketika saya ingin menyimpan informasi di halaman html, dan ingin javascript saya membaca informasi tanpa benar-benar harus meneruskan parameter ke javascript. Ini sangat berguna ketika skrip Anda dirujuk secara eksternal, bukan inline.
Namun, itu tidak memenuhi kriteria "tidak ada skrip sisi server". Tetapi jika Anda dapat memasukkan skrip sisi server dalam html Anda, lakukan ini:
Buat elemen label tersembunyi di bagian bawah halaman html Anda, tepat di atas tag badan akhir.
Label Anda akan terlihat seperti ini:
Pastikan untuk membuat kelas yang dipanggil
hiddenlabel
dan mengaturvisibility:hidden
sehingga tidak ada yang benar-benar melihat label. Anda dapat menyimpan banyak hal dengan cara ini, dalam label tersembunyi.Sekarang, di javascript Anda, untuk mengambil informasi yang disimpan dalam label (dalam hal ini alamat ip klien), Anda dapat melakukan ini:
Sekarang variabel "ip" Anda sama dengan alamat ip. Sekarang Anda dapat meneruskan ip ke permintaan API Anda.
* EDIT 2 TAHUN KEMUDIAN * Dua perbaikan kecil:
Saya rutin menggunakan metode ini, tetapi hubungi label
class="data"
, karena, sebenarnya, ini adalah cara untuk menyimpan data. Nama kelas "hiddenlabel" adalah jenis nama yang bodoh.Modifikasi kedua ada di style sheet, bukannya
visibility:hidden
:... adalah cara yang lebih baik untuk melakukannya.
sumber
sumber
Coba ini: http://httpbin.org/ip (atau https://httpbin.org/ip )
Contoh dengan https:
Sumber: http://httpbin.org/
sumber
Pertama-tama jawaban aktual : Tidak mungkin untuk menggunakan kode yang dieksekusi murni sisi klien untuk mengetahui alamat IP Anda sendiri.
Namun Anda bisa melakukan GET ke arah https://api.muctool.de/whois dan menerima sesuatu seperti mendapatkan alamat IP klien
sumber
Anda bisa melakukan ini sepenuhnya sisi klien dan sebagian besar dalam JavaScript dengan menggunakan objek Flash yang dapat dipanggil js. Flash dapat mengakses alamat IP mesin lokal yang mungkin tidak terlalu berguna.
sumber
data.host
adalah alamat ip. Cukup panggil ini dari browser Anda.http://smart-ip.net/geoip-json?callback=?
[Tanpa tanda kutip] dan dapatkan ip.sumber