Pazartesi, Kasım 4, 2024

Cloudflare Workers ile IP Geolocation API Nasıl Yapılır?

yüksek çözünürlüklü cloudflare logosu, full hd cloudflare workers logo

Cloudflare workers kullanarak bir ziyaretçinin IP bilgisi üzerinden konum bilgisini alabiliriz zaman zaman bu bilgiye ihtiyacımız olur. Bu işi yapan pek çok servis var ancak fiyatları oldukça yüksek. Gelin Cloudflare ile ücretsiz bir şekilde kendi servisimizi oluşturalım, 100k isteği geçiyorsanız aylık 5$ ödeyerek kullandığınız paketi de yükseltebilirsiniz diğer servislerin ücretlendirmesine baktığımız zaman oldukça uyguna gelecek.

Cloudflare Workers’da Servis Nasıl Oluşturulur?

Cloudflare hesabınıza giriş yapıktan hemen sonra sol menüde yer alan “Workers” > “Overview” > “Create a Service” diyoruz.

cloudflare workers create services, cloudflare create api

Oluşturacağımız servisin adını giriyoruz daha sonra tipini seçiyoruz, bu örnekte “HTTP handler” seçin ve “Create service” tuşuna basın.

cloudflare worker servis oluşturma

Worker Nasıl Düzenlenir?

Başarılı bir şekilde servisimizi oluşturduk, şimdi direk olarak sağda yer alan “Quick Edit” tıklayın.

cloudflare workers quick edit, cloudflare worker services edit, cloudflare services

Solda kod düzenleme, ortada istek atabileceğiniz bir alan ve sağda ön izleme alanı sizi karşılayacak. Sol taraftaki alana kodumuzu ekliyoruz. “Save and deploy” dediğimiz andan itibaren web sitemiz erişilebilir hale geliyor.

cloudflare workers edit code, cloudflare http handler example

Kullanacağımız javascript kodumuz çok basit bir şekilde IP adresinin geolocation bilgilerini verecek ve şu şekilde olacak daha fazla sonuç almak isterseniz resmi cloudflare worker belgelendirmesine göz atabilirsiniz, kullanabileceğiniz oldukça fazla değer bulunuyor.

{
  "asn": 47524,
  "as_organization": "Turksat",
  "city": "Ankara",
  "country": "TR",
  "timezone": "Europe/Istanbul",
  "ip_address": "94.46.141.209"
}

Kullanacağımız kodumuz ise şu şekilde

addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request));
})

async function handleRequest(request) {
    const data = JSON.stringify({
        asn: request.cf.asn,
        as_organization: request.cf.asOrganization,
        city: request.cf.city,
        country: request.cf.country,
        timezone: request.cf.timezone,
        ip_address: request.headers.get("CF-Connecting-IP")
    }, null, 2);

    return new Response(data, {
        headers: {
            "Access-Control-Allow-Origin": "*",
            "Content-Type": "application/json;charset=UTF-8"
        }
    })
}

Sonuç olarak belirli bir isteğe kadar kullanabileceğimiz Geolocation servisimiz hazır hale geliyor. Servisimizden bir örnek https://geolocation.mertcan.workers.dev/ adresini ziyaret edebilirsiniz.

Ayrıca servis işlemlerinde cronjob çalıştırabilirsiniz CloudFlare Workers Kullanarak Harici Cronjob İşlerinin Yapılması ile detaylarını öğrenebilirsiniz.