Google Maps API — adreslerin geocoding'i, organizasyonların aranması ve yerel işletmeler hakkında veri toplamak için güçlü bir araçtır. Ancak, endüstriyel ölçekte çalışmaya başladığınızda, anahtar engellemeleri, limit aşımı ve şüpheli talepler ortaya çıkmaktadır. Bu makalede, bunun neden olduğunu ve anahtarların yanmaması ve verilerin istikrarlı bir şekilde toplanması için proxy'yi nasıl ayarlayacağınızı inceleyeceğiz.
Google Maps API neden anahtarları ve talepleri engelliyor
Bir IP adresinden veya bir anahtardan yüzlerce veya binlerce talep gönderdiğinizde, Google bunu anormal bir aktivite olarak algılar. Koruma sistemi, aynı anda birkaç kritere göre çalışır: talep sıklığı, IP coğrafyası, davranış kalıpları ve anahtarın geçmişi.
İşte anahtarların kısıtlamalar veya tamamen yasaklanmasının başlıca nedenleri:
- Günlük talep limitinin aşılması — her anahtarın bir kotası vardır ve bu kota dolduğunda API
OVER_QUERY_LIMIThatası döner. - Bir IP'den yüksek talep sıklığı — limitler içinde bile Google, çok hızlı ardışık talepleri otomasyon olarak kaydeder.
- Bir IP için birden fazla anahtar — anahtarları döndürseniz bile IP'yi döndürmüyorsanız, Google bunları tek bir oturumda birleştirir.
- IP ve anahtarın coğrafi uyumsuzluğu — anahtar bir ülkede kaydedilmişken, talepler başka bir ülkeden geliyorsa bu şüphe uyandırır.
- Talepler arasında gecikme olmaması — makine kalıpları duraksama olmadan hemen tespit edilir.
- Maskeleme olmadan veri merkezi IP'lerinin kullanılması — Google, bulut sağlayıcılarının (AWS, GCP, Azure) IP aralıklarını iyi bilir ve bunlar için kontrol seviyesini artırır.
Önemli olan şu: Google Maps API, ücretli bir üründür ve Google bunu yalnızca kötüye kullanımlara karşı değil, aynı zamanda faturalandırmayı aşmaya karşı da korur. Bu nedenle, burada tespit sistemi, örneğin, normal web aramalarına göre çok daha serttir. Bir anahtarın engellenmesi, verilere erişimin kaybı ve yeni bir Google Cloud hesabı oluşturma gerekliliği anlamına gelir — bu da başlı başına zaman alıcıdır.
Bilmeniz gerekenler
Google yalnızca IP adresini değil, aynı zamanda User-Agent'ı, talep başlıklarını, talepler arasındaki süreyi ve kullanılan uç noktaların kalıbını da izler. Proxy, anahtarları korumak için gerekli ama tek başına yeterli bir unsurdur.
Kimler ve neden Google Maps API'yi işte kullanıyor
Teknik detaylara geçmeden önce, gerçek kullanım senaryolarını inceleyelim. Bu, belirli bir görev için doğru proxy türünü ve döngü stratejisini seçmeye yardımcı olacaktır.
Toplu adres geocoding'i
Lojistik şirketleri, emlak toplayıcıları ve teslimat pazar yerleri düzenli olarak binlerce metin adresini koordinatlara dönüştürmektedir. Örneğin, rotalar oluşturmak için 50.000 müşteri adresinin yüklendiği bir veritabanında. Geocoding API bunu otomatikleştirmeye olanak tanır, ancak kısa bir süre içinde bir anahtardan 50.000 talep — engellemeye giden doğrudan bir yoldur.
Yerel işletmeler hakkında veri toplama (Places API)
Pazarlama ajansları, lead üreticileri ve şirket veri tabanları, organizasyonlar hakkında bilgi toplamak için Places API'yi kullanır: isimler, telefonlar, web siteleri, puanlar, çalışma saatleri, yorumlar. Tipik bir görev — birkaç şehirdeki tüm restoranları, diş kliniklerini veya otomobil servislerini toplamak ve ardından arama veya e-posta göndermektir.
Rakiplerin izlenmesi ve coğrafi analiz
Perakendeciler, kendi bölgelerinde rakiplerin yeni noktalarını takip eder. Franchise zincirleri, yeni mağazalar için potansiyel lokasyonları analiz eder. Reklam ajansları, coğrafi hedeflemenin nasıl göründüğünü kontrol eder — belirli bir şehir veya bölgede sonuçların nasıl olduğunu.
CRM verilerini zenginleştirme
SaaS ürünleri ve B2B hizmetleri, CRM'deki şirket kartlarını otomatik olarak zenginleştirir: koordinatları ekler, adreslerin geçerliliğini kontrol eder, Google Business Profile'dan verileri çeker. Bu, otomatik modda API'ye düzenli arka plan talepleri gerektirir.
Tüm bu senaryoları birleştiren şey: yüksek talep sıklığı, bu olmadan engellemeler kaçınılmazdır. Çözüm yaklaşımı ise göreve bağlı olarak değişir.
Google Maps API ile çalışmak için hangi proxy'ler uygundur
Proxy türünün seçimi, çalışma istikrarını ve engellenme olasılığını doğrudan etkiler. Google Maps API görevlerine uygun üç ana seçeneği inceleyelim.
| Proxy Türü | Güvenilirlik | Hız | Fiyat | En iyi için |
|---|---|---|---|---|
| Konut Proxy'leri | ★★★★★ | ★★★☆☆ | Yüksek | Places API'den veri toplama, hassas bölgelerde geocoding |
| Mobil Proxy'ler | ★★★★★ | ★★★★☆ | Yüksek | Maksimum güvenilirlik, uzun vadeli görevler |
| Veri Merkezi Proxy'leri | ★★★☆☆ | ★★★★★ | Düşük | Düşük hassasiyetle toplu geocoding |
Konut Proxy'leri — çoğu görev için en iyi seçim
Konut proxy'leri, gerçek ev kullanıcılarının IP adreslerini kullanır. Google için, bunlar tarayıcıda haritaları açan sıradan insanlar gibi görünür. Bu, onları Places API ile yüksek talep sıklığıyla çalışmak için en güvenli seçenek haline getirir. Büyük bir IP havuzu, her talep veya birkaç talep başına döngü yapmayı mümkün kılar — Google bunları tek bir oturumda birleştiremez.
Mobil Proxy'ler — maksimum güvenilirlik gerektiğinde
Mobil IP'ler, hücresel operatörlerden gelen özel bir durumdur. Bir mobil IP, NAT üzerinden birçok cihaz tarafından gerçekten kullanılır, bu nedenle Google, yüksek aktivite durumunda bile bu adresleri çok nadir engeller. Göreviniz kritik öneme sahipse ve kesinti olmaması gerekiyorsa — mobil proxy'ler maksimum istikrar sağlar. Dezavantajı — daha yüksek fiyat ve daha küçük bir adres havuzudur.
Veri Merkezi Proxy'leri — yalnızca hassas olmayan görevler için
Sunucu proxy'leri hızlı ve ucuzdur, ancak Google Maps API bunlara yüksek şüpheyle yaklaşır. Eğer bunları, orta sıklıkta ve iyi bir döngü ile büyük miktarda adresin geocoding'i için kullanıyorsanız — çalışabilirler. Ancak Places API'den veri toplama veya sert kısıtlamaların olduğu bölgelerde çalışma için anahtarın engellenme riski önemli ölçüde daha yüksektir.
Geocoding için proxy ayarlama: adım adım kılavuz
Geocoding API örneği üzerinden pratik ayarlamayı inceleyelim — en yaygın senaryo. Görev: 10.000 adres listesini anahtar engellenmeden koordinatlara dönüştürmek.
Adım 1. Altyapıyı hazırlayın
Öncelikle anahtar ve proxy sayısını belirleyin. Temel kural: bir anahtar — bir IP havuzu. Farklı anahtarlar için aynı proxy havuzunu kullanmayın — Google bunları davranış kalıplarına göre birleştirebilir. 10.000 adresli bir görev için en az 2-3 Google Cloud anahtarı ve 50'den fazla konut IP havuzuna sahip olmanız önerilir.
Adım 2. IP döngüsünü ayarlayın
Geocoding için en iyi strateji, her 10-20 talepte bir IP değiştirmektir, her talepte değil. Çok sık IP değiştirmek de şüpheli görünebilir. Çoğu konut proxy sağlayıcısı, belirli bir aralıkta otomatik olarak IP değiştiren bir dönen uç nokta sağlar — bunu kullanın, manuel geçiş yapmayın.
Python — proxy üzerinden talep için temel örnek
import requests
GOOGLE_API_KEY = "ANAHTARINIZ"
PROXY_HOST = "rotating.proxyprovider.com"
PROXY_PORT = "8080"
PROXY_USER = "kullanıcı_adı"
PROXY_PASS = "şifre"
proxies = {
"http": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}",
"https": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
}
def geocode_address(address):
url = "https://maps.googleapis.com/maps/api/geocode/json"
params = {
"address": address,
"key": GOOGLE_API_KEY,
"language": "tr"
}
response = requests.get(url, params=params, proxies=proxies, timeout=10)
return response.json()
# Kullanım örneği
result = geocode_address("Moskova, Tverskaya Caddesi, 1")
print(result["results"][0]["geometry"]["location"])
Adım 3. Talepler arasında gecikmeler ekleyin
Asla talepleri "mümkün olduğunca hızlı" modda göndermeyin. Talepler arasında 0.5 ile 2 saniye arasında rastgele bir gecikme ekleyin. Rastgelelik önemlidir — sabit bir aralık (örneğin, tam 1 saniye) de makine kalıbı gibi görünür. Python'da bu, time.sleep(random.uniform(0.5, 2.0)) ile gerçekleştirilir.
Adım 4. Talep başlıklarını doğru ayarlayın
Google Maps API talepleri, gerçekçi bir User-Agent içermelidir. Teknik olarak API, tarayıcı User-Agent'ı gerektirmese de, bunun olmaması veya standart Python User-Agent'ı, tespit olasılığını artırır. Gerçek bir tarayıcıyı taklit eden User-Agent kullanın ve bunu bir oturum içinde çok sık değiştirmeyin.
Adım 5. Hataları ve yeniden denemeleri işleyin
Yanıt durumlarının doğru bir şekilde işlenmesini uygulayın. OVER_QUERY_LIMIT hatası alırsanız — 60 saniye bekleyin ve IP'yi değiştirin. REQUEST_DENIED hatası alırsanız — anahtar engellenmiştir, yedek anahtara geçin. ZERO_RESULTS hatası alırsanız — sorun adresle ilgilidir, proxy ile değil.
Places API ile proxy üzerinden işletme verilerini toplama
Places API, Geocoding API'den çok daha hassas bir uç noktadır. Google, ona yapılan toplu taleplerin ana amacının ticari verilerin toplanması olduğunu anlıyor, bu nedenle koruma burada daha sıkıdır. Onunla çalışmanın doğru yaklaşımını inceleyelim.
Places API üzerinden veri toplama stratejisi
Places API, iki ana yöntemle çalışır: Nearby Search (koordinatlara ve yarıçapa göre arama) ve Text Search (metin sorgusuna göre arama). Büyük bir alanı kapsamak için, bölgeyi üst üste binen hücrelere ayırarak ve her hücreyi sırayla gezerek bir ızgara yöntemi kullanılır.
Anahtar bir özellik: Places API, bir arama başına maksimum 60 sonuç döner (20 sonuçtan 3 sayfa). Eğer alanda 60'tan fazla nesne varsa — arama yarıçapını azaltmak ve ızgara yoğunluğunu artırmak gerekir. Bu otomatik olarak talep sayısını artırır, bu da proxy döngüsünü kritik hale getirir.
Python — proxy üzerinden Places API'ye sayfalama ile talep
import requests
import time
import random
def search_places_nearby(lat, lng, radius, place_type, api_key, proxies):
results = []
url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json"
params = {
"location": f"{lat},{lng}",
"radius": radius,
"type": place_type,
"key": api_key,
"language": "tr"
}
while True:
response = requests.get(url, params=params, proxies=proxies, timeout=15)
data = response.json()
if data.get("status") == "OVER_QUERY_LIMIT":
print("Talep limiti — 60 saniye bekleyin")
time.sleep(60)
continue
results.extend(data.get("results", []))
# Sonraki sayfa için token
next_token = data.get("next_page_token")
if not next_token:
break
# Sonraki sayfa için zorunlu bekleme (Google'ın gereksinimi)
time.sleep(random.uniform(2.0, 3.5))
params = {"pagetoken": next_token, "key": api_key}
return results
Detaylı verileri Place Details ile alma
Nearby Search veya Text Search ile place_id listesini aldıktan sonra, her yer için telefon, web sitesi, çalışma saatleri ve yorumları almak için ayrı bir Place Details talebi yapmanız gerekir. Bu, talep sayısını iki katına çıkarır. Burada IP döngüsü özellikle önemlidir — her Place Details talebini havuzdan yeni bir adresle yapmak daha iyidir.
Yalnızca gerekli alanları fields parametresi ile talep edin. Bu, talep maliyetini düşürür ve iletilen veri miktarını azaltır, bu da talep kalıplarını trafik hacmi açısından daha az şüpheli hale getirir.
Anahtar ve IP döngüsü: istikrarlı çalışma nasıl sağlanır
Google Maps API ile profesyonel çalışma, yalnızca proxy değil, aynı zamanda anahtarlar ve IP'lerin yönetimi için sistematik bir yaklaşım gerektirir. İşte doğru bir şekilde yapılandırılmış bir altyapının görünümü.
Google Cloud anahtar havuzu
Google Cloud Console'da birkaç proje oluşturun — ciddi görevler için en az 3-5. Her proje kendi API anahtarını alır. Anahtarlar arasında yükü eşit şekilde dağıtın: günde 10.000 talebiniz varsa ve 5 anahtarınız varsa, her anahtar 2.000 talep yapar — bu, şüphe eşiğinin çok altında.
Önemli bir kural: Her anahtarı, proxy havuzunuzdan ayrı bir IP aralığına bağlayın. Anahtar №1 yalnızca A aralığındaki IP'ler üzerinden çalışır, anahtar №2 ise B aralığı üzerinden. Anahtarları ve IP'leri karıştırmak, kitlesel engellemelere yol açan en büyük hatalardan biridir.
Talep programı
Tüm talepleri gece veya mesai saatleri dışında başlatmayın — bu, "normal kullanıcı" için tipik bir kalıp değildir. Görevleri çalışma günü boyunca dağıtın, doğal aktiviteyi taklit edin. Görev birkaç gün sürebiliyorsa — bunu 3-5 gün boyunca ılımlı bir yükle yaymak, her şeyi bir gecede yapmaktan daha iyidir.
Anahtar durumunu izleme
API yanıt durumlarının otomatik izlenmesini uygulayın. Kısıtlamaların ilk belirtilerinde (OVER_QUERY_LIMIT hatalarının artması) bu anahtar için talep sıklığını hemen azaltın ve birkaç saat "dinlenmesine" izin verin. Tam bir engellemeyi beklemeyin — tedavi etmek, önlemekten çok daha zordur.
Mimari önerisi
Places API'den veri toplama için ciddi görevler için, talep sıklığını işçi seviyesinde kontrol eden bir görev kuyruğu (Redis + Celery veya benzeri) kullanmanızı öneririz. Bu, her anahtar için RPS'yi (saniyedeki talepler) tam olarak kontrol etmenizi sağlar ve sorunlar olduğunda otomatik olarak yedek anahtara geçmenizi sağlar.
Google Maps API limitleri ve bunları nasıl aşacağınız
Google Maps API limitlerini anlamak, altyapının planlanması için kritik öneme sahiptir. Limitler iki türdendir: kota limitleri (günde/ayda kaç talep) ve hız limitleri (saniyede kaç talep). Proxy'ler, doğru kullanıldığında her iki türle de yardımcı olur.
| API | Ücretsiz kota | Hız Limiti | Limit aşım fiyatı |
|---|---|---|---|
| Geocoding API | $200/ay (~40.000 talep) | 50 QPS | $5 için 1.000 |
| Places API (Nearby Search) | $200/ay (~6.600 talep) | 100 QPS | $32 için 1.000 |
| Places API (Place Details) | $200/ay (~3.400 talep) | 100 QPS | $17–$32 için 1.000 |
| Distance Matrix API | $200/ay (~40.000 öğe) | 1.000 QPM | $5 için 1.000 |
Dikkat: limitler anahtara bağlıdır, IP'ye değil. Bu nedenle, anahtar döngüsü ile IP döngüsü birlikte çalışmak, API maliyetlerini artırmadan işlerinizi ölçeklendirmenin tek yoludur. Birkaç anahtar, her biri $200 ücretsiz kota ile, toplam ücretsiz talep hacmini önemli ölçüde artırır.
Proxy'ler hız limitleri ile nasıl yardımcı olur
Geocoding API için 50 QPS hız limiti, bir anahtardan saniyede 50'den fazla talep edilmemesi gerektiği anlamına gelir. Proxy'ler bu limiti aşmanıza yardımcı olmaz — bu, anahtara bağlıdır. Ancak, yükü anahtarlar arasında dağıtmaya yardımcı olurlar, böylece her anahtar güvenli bir bölgede kalır (önerilen maksimum hız limitinin %70-80'ini aşmamaktır).
Sık yapılan hatalar ve bunlardan nasıl kaçınılır
Google Maps API ile yıllar içinde, anahtar kaybına yol açan tipik hataların bir listesi oluşmaktadır. Her birini inceleyelim ve somut bir çözüm sunalım.
Hata 1: Bir IP'yi birden fazla anahtar için kullanma
Bu en yaygın hatadır. Anahtarları döndürseniz bile, tüm talepler tek bir proxy veya küçük bir IP havuzundan geliyorsa — Google, farklı anahtarların aynı adresten kullanıldığını görür ve bunları tek bir oturumda birleştirir. Bir anahtar engellendiğinde, diğer tüm anahtarlar da tehlikeye girer.
Çözüm: IP havuzlarını anahtarlar arasında kesinlikle ayırın. Her anahtar yalnızca kendi ayrılmış adres aralığı üzerinden çalışır.
Hata 2: Places API'de sayfalar arasında zorunlu beklemeyi göz ardı etme
Places API, bir sonraki sayfa için pagetoken kullanarak en az 2 saniye beklemeyi gerektirir. Eğer bir sonraki sayfayı hemen talep ederseniz — API boş bir sonuç veya hata döner. Birçok geliştirici bu gereksinimi göz ardı eder ve hatalı veriler alır.
Çözüm: Her zaman bir sonraki sayfa talebinden önce 2-3 saniye bekleme ekleyin. Bu, Google'ın belgelenmiş bir gereksinimidir, isteğe bağlı bir öneri değildir.
Hata 3: Kod içinde korunmasız anahtarlar
Google Maps API anahtarları, GitHub'daki kamuya açık depolara düştüğünde, otomatik olarak botlar tarafından taranır ve kötü niyetli kişiler tarafından kullanılır. Google, anahtar sızıntılarını otomatik olarak tespit eder ve bildirim gönderir, ancak zarar daha önce verilebilir.
Çözüm: Anahtarları çevresel değişkenlerde veya gizli yönetim sistemlerinde (Vault, AWS Secrets Manager) saklayın. Anahtarları asla kaynak koduna hardcode etmeyin. Google Cloud Console'da IP kısıtlamaları ayarlayın — anahtar yalnızca proxy adreslerinizden çalışmalıdır.
Hata 4: Place Details'de tüm alanları talep etme
Varsayılan olarak, Place Details tüm mevcut alanları döner, bunlar arasında maliyetli olanlar (atmosfer, yorumlar) da vardır. Bu, her talebin maliyetini 2-4 kat artırır. Ayrıca, büyük bir yanıt hacmi işleme süresini yavaşlatır.
Çözüm: Her zaman fields parametresini kullanın ve yalnızca gerekli verileri talep edin. Örneğin: fields=name,formatted_phone_number,website,opening_hours,rating.
Hata 5: Ücretsiz veya kamuya açık proxy kullanma
Kamuya açık listelerden alınan ücretsiz proxy'ler, anahtar kaybetmenin kesin yoludur. Bu tür IP'ler, binlerce diğer kullanıcı tarafından zaten kullanılmaktadır ve bunların çoğu, Google'ın koruduğu şeyle tam olarak ilgilenmektedir. Bu tür IP'lerin itibarı son derece düşüktür ve Google bunları önceden engeller.
Çözüm: Yalnızca temiz IP adresleri ve kullanımda özel garanti sunan güvenilir sağlayıcılardan ücretli proxy'ler kullanın.
Başlatmadan önce kontrol listesi
- ✅ Her anahtar ayrı bir IP havuzuna bağlı
- ✅ Anahtarlar Google Cloud Console'da IP ile sınırlıdır
- ✅ Talepler arasında rastgele gecikmeler vardır (0.5–2 saniye)
- ✅ API hata durumlarının tümü için işleme uygulanmıştır
- ✅ Anahtarlar çevresel değişkenlerde, kodda değil saklanır
- ✅ Google Cloud Console'da kota izleme ayarlanmıştır
- ✅ Taleplerde yalnızca gerekli alanlar kullanılır
Sonuç
Google Maps API ile endüstriyel ölçekte çalışmak, veri toplama hızı ile anahtar güvenliği arasında her zaman bir denge gerektirir. Proxy'ler, IP engellemeleri sorununu çözer, ancak doğru mimariyi (anahtar döngüsü, talep sıklığı kontrolü, hata işleme ve IP havuzlarının görevler arasında ayrılması) değiştirmez.
Makalenin ana çıkarımları: konut proxy'leri döngüsü, Places API ve geocoding ile çoğu görev için uygundur; her anahtar, kendi izole edilmiş adres havuzundan çalışmalıdır; talepler arasında gecikmeler zorunludur; anahtar durumunun izlenmesi otomatikleştirilmelidir.
Google Maps API ile düzenli olarak çalışmayı planlıyorsanız — adresleri geocode etmek, işletme verilerini toplamak veya rakipleri izlemek — konut proxy'lerine dikkat etmenizi öneririz. Bunlar, Google tarafından yüksek bir güven düzeyi sağlar ve doğru bir IP döngüsü ayarlandığında anahtarların engellenme riskini en aza indirir. Kesintisiz maksimum güvenilirlik gerektiren görevler için mobil proxy'leri düşünmelisiniz — bu IP'ler, yüksek aktivite durumunda bile neredeyse hiç engellenmez.