16 Ağustos 2026, 23:24
|
#1 |
| | IP/Ülke/Şehir/ISP Sorgulama (/ip 88.88*) Merhaba,
/ip komutuyla çalışan, ipregistry.co API'sini kullanan bir IP sorgulama scripti paylaşıyorum.
Özellikler:
/ip → kendi IP'ni sorgular
/ip 8.8.8.8 → istediğin IP'yi sorgular
IP, Ülke, Bölge (il), Şehir, Posta Kodu, Operatör/ISP, Saat Dilimi bilgilerini ayrı bir pencerede (@IP) gösterir
SSL (443 port) üzerinden çalışır
HTTP durum kodu kontrolü ve bağlantı hatası yönetimi mevcut
Sağlam JSON parse mantığı (iç içe alanlar birbirine karışmıyor)
Kurulum:
Dosyayı indir, mIRC'te Alt+R ile Script Editör'ü aç
File > Load işlemiyle veya içeriği kopyala-yapıştır ile ekle
/ip yaz, dene HTML-Kodu alias ip {
if ($sock(ip)) sockclose ip
sockopen -e ip api.ipregistry.co 443
sockmark ip $iif($1,$1,$null)
echo -a ** ip: sorgulanıyor $iif($1,$1,kendi IP'n) ...
}
on *:sockopen:ip:{
if ($sockerr) {
echo -a ** ip: bağlantı kurulamadı - $sock(ip).wserr
return
}
; her yeni bağlantıda durum değişkenlerini sıfırla
unset %ip.first %ip.inbody %ip.block
var %hedefip = $sock(ip).mark
; fields= parametresi sayesinde yanıt tek seviye iç içe kalır,
; gereksiz alanlar (flag, currency, security vb.) hiç gelmez
var %fields = ip,location.country.name,location.region.name,location.city,location.postal,connection.organization,time_zone.name
var %target = / $+ %hedefip $+ ?key=tryout&fields= $+ %fields
sockwrite -n $sockname GET %target HTTP/1.1
sockwrite -n $sockname Host: api.ipregistry.co
sockwrite -n $sockname User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
sockwrite -n $sockname Accept: application/json
sockwrite -n $sockname Connection: close
sockwrite -n $sockname
}
on *:sockread:ip:{
if ($sockerr) {
echo -a ** ip: okuma hatası - $sock(ip).wserr
return
}
var %data
sockread -f %data
if ($sockbr == 0) { return }
if (!$window(@IP)) { window -ne @IP }
; ilk satır HTTP durum satırıdır (örn. HTTP/1.1 200 OK) - kontrol et
if (%ip.first != $true) {
%ip.first = $true
if ($regex(%data,/^HTTP\/\d\.\d\s+(\d+)/)) {
if ($regml(1) != 200) {
echo @IP ** ip: sunucu hata kodu döndürdü: $regml(1) (tryout anahtarı limiti dolmuş olabilir)
sockclose ip
}
}
return
}
; header/body ayracı: boş satır
if (%ip.inbody != $true) {
if (%data == $null) { %ip.inbody = $true }
return
}
var %line = %data
; --- blok (obje) bağlamı takibi ---
if ($regex(%line,/^\s*"country"\s*:\s*\{/)) { %ip.block = country | return }
if ($regex(%line,/^\s*"region"\s*:\s*\{/)) { %ip.block = region | return }
if ($regex(%line,/^\s*"connection"\s*:\s*\{/)) { %ip.block = connection | return }
if ($regex(%line,/^\s*"time_zone"\s*:\s*\{/)) { %ip.block = timezone | return }
if ($regex(%line,/^\s*\}/)) { %ip.block = $null | return }
; --- alan çıkarımı (bağlama göre) ---
if ($regex(%line,/"ip"\s*:\s*"([^"]+)"/)) {
echo @IP ** IP: $regml(1)
return
}
if (%ip.block == country) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
echo @IP ** Ülke: $regml(1)
return
}
if (%ip.block == region) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
echo @IP ** Bölge (il): $regml(1)
return
}
if ($regex(%line,/"city"\s*:\s*"([^"]+)"/)) {
echo @IP ** Şehir: $regml(1)
return
}
if ($regex(%line,/"postal"\s*:\s*"([^"]+)"/)) {
echo @IP ** Posta Kodu: $regml(1)
return
}
if (%ip.block == connection) && ($regex(%line,/"organization"\s*:\s*"([^"]+)"/)) {
echo @IP ** Operatör/ISP: $regml(1)
return
}
if (%ip.block == timezone) && ($regex(%line,/"name"\s*:\s*"([^"]+)"/)) {
echo @IP ** Saat Dilimi: $regml(1)
echo @IP ----------------------------------------
return
}
}
on *:sockclose:ip:{
if ($sockerr) { echo -a ** ip: bağlantı hata ile kapandı - $sock(ip).wserr }
unset %ip.first %ip.inbody %ip.block
}
________________
"Sevilmenin kıymeti bilinmiyorsa, Uzaklaşmak En güzeli ki üzülen sen olmayasın" |
|
| |