23.02.2021

IP adresinden coğrafi konum öğrenme

Sysmon Tools'un sayfasını incelerken basit bir IP adresini coğrafi konuma çeviren servisi öğrendim, hoşuma gitti. Ücretsiz sürüm ayda 10.000 sorguya kadar izin veriyor. Bu sebeple Powershell ile kullanma yoluna gittim.

Herşeyden önce ipstack.com üzerinde ücretsiz bir hesap açıp API access key'ine sahip olmak gerekiyor.

Varsayalım ki elimde $IPAdresi adında bir değişen var ve içeriğinde coğrafi konumunu sorgulamak istediğim bir IP adresi var.

Sorguları göndermek için $IPAdresi değişkenini kullanarak şöyle bir URI oluşturuyoruz.

$uri  = "http://api.ipstack.com/" + $IPAdresi + "?access_key=xxxx-xxx-xxx-xxx"

Daha sonra bu adrese bir Invoke-WebRequest ile istek gönderdim ve sonucu $wr değişkenine kaydettim.

$wr = Invoke-WebRequest -uri $uri -UseBasicParsing

IPStack.com'un cevabı bir JSON nesnesi. Bunu dönüştürebilmek için de şu satırı kullandım:

$json = $wr.content | ConvertFrom-Json

Bu adımdan sonra $json nesnesinin şu alt alanları döndü ki çok işime yaradı.

continent_code: 2 harfli kıta kodu (AF: Afrika, AS: Asya, EU: Avrupa, NA: Kuzey Amerika, OC: Okyanusya, SA: Güney Amerika, AN: Antarktika)

continent_name: Yukarıdakinin tam hali, kıta adı

country_code: 2 harfli ülke kodu (tam liste için Wikipedia sayfasına bakın)

country_name: Yukarıdakinin tam hali, ülke adı

region_code: Bölge kodu. Amerika için eyalet kodları, Türkiye için plaka numaraları.

region_name: Bölge ismi. Amerika için eyalet ismi, Türkiye için şehir ismi.

city: Şehir. Türkye için yukarıdaki ile aynı.

Ayrıntılar için şu sayfaya bakılabilir.

Sonradan aklıma geldi, ama Invoke-WebRequest | ConvertFrom-Json kullanmak yerine tek seferde Invoke-RestMethod kullanılabilir. İkisi de Powershell 3.0 ile gelmiş.

Hiç yorum yok: