Saya ingin membaca alamat ip saya dari halaman berikut (http://l2.io/ip atau lainnya) menggunakan javascript untuk menyimpannya di variabel saya "myIp".
function getMyIP() {
var myIp;
...
return myIp;
}
Bagaimana Anda bisa melakukannya?
Memeriksa situs tertaut, Anda dapat menyertakan tag skrip yang melewatkan parameter ?var=desiredVarName
yang akan ditetapkan sebagai variabel global yang berisi alamat IP:
<script type="text/javascript" src="http://l2.io/ip.js?var=myip"></script>
<!-- ^^^^ -->
<script>alert(myip);</script>
[Demo][2]
Saya yakin saya tidak perlu mengatakan bahwa hal ini dapat dengan mudah di-spoof (baik melalui penggunaan proxy atau header permintaan yang di-spoof), tetapi perlu dicatat dalam hal apa pun.
Jika halaman Anda disajikan menggunakan protokol https
, kebanyakan browser akan memblokir konten di halaman yang sama yang disajikan menggunakan protokol http
(yang mencakup skrip dan gambar), sehingga pilihannya agak terbatas. Jika Anda memiliki < 5k hits/hari, Smart IP API dapat digunakan. Sebagai contoh:
<script>
var myip;
function ip_callback(o) {
myip = o.host;
}
</script>
<script src="https://smart-ip.net/geoip-json?callback=ip_callback"></script>
<script>alert(myip);</script>
[Demo][4]
Edit: Rupanya, sertifikat layanan https
ini telah kedaluwarsa sehingga pengguna harus menambahkan pengecualian secara manual. Buka API-nya secara langsung untuk memeriksa status sertifikat: https://smart-ip.net/geoip-json
Cara yang paling tangguh dan sederhana, jika Anda memiliki logika server back-end, adalah dengan hanya mengeluarkan IP pemohon di dalam tag <script>
, dengan cara ini Anda tidak perlu bergantung pada sumber daya eksternal. Sebagai contoh:
PHP:
<script>var myip = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';</script>
Ada juga solusi PHP yang lebih kokoh (memperhitungkan header yang terkadang diatur oleh proxy) dalam jawaban terkait ini.
C#:
<script>var myip = '<%= Request.UserHostAddress %>';</script>