Bloga dön

Teknoloji Yığınınızda Hızlı IP’den Ülke Tespiti Kurmak

coğrafi konummühendislikapi

Bir web uygulamasına ülke tespitini pratik şekilde ekleme rehberi: nerede çağırmalı, nasıl cache’lemeli ve kritik akışın dışında nasıl tutmalı?

# Teknoloji Yığınınızda Hızlı IP’den Ülke Tespiti Kurmak

Ülke tespiti, bir isteğe yalnızca tek haneli milisaniyeler eklemeli. Bunu nasıl koruyabileceğinizi adım adım ele alalım.

Önce istemci IP’sini doğru alın

Bir proxy veya CDN arkasındaysanız soket adresi, kullanıcının değil sizin edge katmanınızın adresidir. Bu yüzden altyapınızın gerçekten set ettiği header’ı okuyun ve yalnızca kendi ağınızdan geldiğinde güvenin:

  • Cloudflare: CF-Connecting-IP
  • Çoğu load balancer: X-Forwarded-For içindeki en soldaki güvenilmeyen kayıt
  • Doğrudan bağlantı: soketin karşı uç adresi

X-Forwarded-For değerini körlemesine parse etmek bir spoofing açığı yaratır; çünkü istemci bu listenin başına istediği değeri ekleyebilir.

Her istekte değil, oturum başına bir kez çağırın

Çözümlemeyi oturum oluşturulurken yapın; ülke bilgisini ve sınıflandırmayı session içine ya da imzalı bir cookie’ye koyup tekrar kullanın. IP değiştiğinde yeniden çözümleyin. Böylece binlerce lookup, tek bir işleme iner.

Makul bir TTL ile cache kullanın

Belirli bir /24 için geolocation bilgisi çoğu zaman saatler boyunca sabit kalır. IP bazlı, bir saatlik in-memory cache tekrar eden trafiğin büyük bölümünü ortadan kaldırır. Negatif sonuçları da daha kısa bir TTL ile cache’leyin; böylece olası bir kesinti lookup fırtınasına dönüşmez.

Render sürecini asla buna bağlamayın

Lookup için birkaç yüz milisaniyelik net bir timeout belirleyin ve tanımlı bir fallback kullanın:

ts const geo = await Promise.race([ lookup(ip), timeout(300).then(() => null), ]); const country = geo?.country ?? defaultCountry;

Yanlış para birimiyle açılan bir sayfa küçük bir can sıkıntısıdır. Hiç açılmayan bir sayfa ise doğrudan gelir kaybıdır.

Mümkünse edge’de yapın

Uygulamanız bir edge runtime üzerinde çalışıyorsa lookup kullanıcıya coğrafi olarak yakın bir noktada gerçekleşir ve ek gecikme ihmal edilebilir düzeyde kalır. Çözümlemeyi orada yapın, sonucu request context’e ekleyin ve uygulamanın bunu sıradan bir veri gibi okumasını sağlayın.

Veriyi değil, kararı saklayın

Ham lokasyon kaydını tutmak yerine işinizin gerçekten ihtiyaç duyduğu sonucu saklayın: gösterilen para birimi, uygulanan kural gibi. Bu yaklaşım daha ekonomiktir, gizlilik değerlendirmelerinde açıklaması daha kolaydır ve ileride gerçekten sorgulayacağınız bilgi de zaten budur.

Bağlantınız