Fatih BAŞ - What Is My IP

API

Kimlik doğrulama gerekmez. Tüm uçlar GET ve HEAD kabul eder, CORS açıktır ve yanıtlar önbelleklenmez.

Uçlar

YolAçıklama
/ Tarayıcıda HTML sayfa, curl/wget ile düz metin IP.
/json Tüm veri (JSON). Konum, ASN, bağlantı ve istemci bilgileri.
/ip Sadece IP adresi + satır sonu. Betiklerde en kullanışlısı.
/text, /raw, /plain /ip ile aynı — düz metin IP.
/xml Tüm veri (XML).
/csv Tüm veri, "anahtar,değer" biçiminde CSV.
/geo Yalnızca coğrafi alanlar (JSON).
/asn Yalnızca ASN ve ISP bilgisi.
/country Yalnızca ISO ülke kodu (TR, DE, US ...).
/city Yalnızca şehir adı.
/hostname Yalnızca ters DNS (PTR) kaydı.
/headers İstek başlıkları (JSON).
/lookup/{ip} Belirtilen IP adresini sorgular. ?ip= parametresi de çalışır.
/health Servis ve veritabanı durumu — izleme (monitoring) için.
/docs Bu sayfa.

Parametreler

ParametreAçıklama
format=json|text|xml|csv|htmlÇıktı biçimini zorlar. Kısa yazımı: f=
ip=8.8.8.8Başka bir adresi sorgular (/lookup/8.8.8.8 ile aynı).
callback=fnJSONP çıktısı üretir.
rawDüz metin çıktı (format=text kısayolu).
headers=1/json çıktısına istek başlıklarını ekler.

Örnekler

# Sadece IP
curl -s https://ip.fatihbas.com

# Kabuk değişkenine al
MYIP=$(curl -s https://ip.fatihbas.com/ip)

# Ülke kodu (betiklerde koşul için)
curl -s https://ip.fatihbas.com/country

# Tüm veri, jq ile süz
curl -s https://ip.fatihbas.com/json | jq '.country.code, .asn.organization'

# Başka bir adresi sorgula
curl -s https://ip.fatihbas.com/lookup/8.8.8.8 | jq .

# IPv4 / IPv6 ayrı ayrı zorla
curl -s4 https://ip.fatihbas.com/ip
curl -s6 https://ip.fatihbas.com/ip

# İzleme
curl -s https://ip.fatihbas.com/health | jq .status

Yanıt şeması (/json)

{
  "ip": "88.230.10.5",
  "ip_version": 4,
  "scope": "public",
  "hostname": "host.example.net",
  "network": "88.230.0.0/16",
  "continent":   { "code": "AS", "name": "Asya" },
  "country":     { "code": "TR", "name": "Türkiye", "name_en": "Turkey",
                   "flag": "\u{1F1F9}\u{1F1F7}", "is_in_european_union": false },
  "region":      { "code": "34", "name": "Istanbul" },
  "regions":     [ { "code": "34", "name": "Istanbul" } ],
  "city":        "Istanbul",
  "postal_code": "34000",
  "location":    { "latitude": 41.0138, "longitude": 28.9497,
                   "accuracy_radius_km": 20, "time_zone": "Europe/Istanbul",
                   "local_time": "2026-01-01 12:00:00 +03:00",
                   "map_url": "https://www.openstreetmap.org/?mlat=..." },
  "asn":         { "number": 15897, "organization": "Vodafone Turkey",
                   "network": "88.230.0.0/16" },
  "isp": null, "organization": null, "connection_type": null, "domain": null,
  "privacy": null,
  "connection":  { "scheme": "https", "tls": true, "protocol": "HTTP/1.1", "port": 51234 },
  "client":      { "user_agent": "...", "preferred_language": "tr-TR", "do_not_track": false },
  "proxy":       { "behind_trusted_proxy": true, "detected_via": "X-Forwarded-For",
                   "remote_addr": "10.0.0.1", "forwarded_chain": ["88.230.10.5", "10.0.0.1"] },
  "meta":        { "source": "mmdb", "generated_at": "2026-01-01T09:00:00+00:00",
                   "query_time_ms": 1.4, "version": "1.0.4" }
}

isp, organization, connection_type, domain ve privacy alanları yalnızca ilgili ticari GeoIP2 veritabanları kuruluysa dolar.

GeoIP veritabanı

Ülke, şehir ve ASN alanları MaxMind GeoLite2 veritabanlarından okunur. Ücretsizdir, ancak indirmek için bir hesap ve lisans anahtarı gerekir:

# 1) maxmind.com/en/geolite2/signup adresinden ücretsiz hesap açın
# 2) Hesap panelinden bir lisans anahtarı üretin
# 3) Veritabanlarını indirin:

php bin/geoip-update --key=LISANS_ANAHTARINIZ

# 4) Haftalık güncelleme için cron:
0 4 * * 3 /usr/bin/php /var/www/whatismyip/bin/geoip-update --key=ANAHTAR --quiet

Veriler yereldeki .mmdb dosyalarından okunur; hiçbir ziyaretçi IP'si dışarıya gönderilmez.

Hata kodları

KodAnlamı
400invalid_ip — sorgulanan değer geçerli bir IP değil.
403lookup_disabled — yapılandırmada kapatılmış.
405GET/HEAD dışında bir yöntem kullanıldı.
429rate_limitedRetry-After başlığına bakın.
503/health: GeoIP veritabanı yok.