Proxy'ler, gerçek IP adresini gizleyip hedef coğrafi konuma ait bir IP sunarak kullanıcıların Booking.com ve Airbnb gibi platformlarda ülkeye özel fiyatlara erişmesini sağlar. Bu süreç, müşterilerin farklı bölgelerden geziniyormuş gibi davranmasına ve böylece çoğu zaman coğrafi olarak kısıtlanan yerel fiyatları, indirimleri ve müsaitlik bilgilerini görmesine olanak tanır.
Çevrimiçi seyahat platformlarında coğrafi hedefleme
Çevrimiçi seyahat acenteleri (OTA'lar) ve Booking.com ile Airbnb gibi konaklama platformları, kullanıcılara algılanan coğrafi konumlarına göre farklı fiyat ve envanter göstermek için coğrafi hedefleme mekanizmaları kullanır. Bu farklılaşmayı etkileyen birkaç etken vardır:
* Yerel pazar dinamikleri: bölgeye özgü talep, arz ve rekabet ortamı.
* Döviz kurları: fiyatlar genellikle yerel para biriminde gösterilir ve dönüşümler farklılık gösterebilir.
* Vergiler ve ücretler: bölgesel vergiler, hizmet bedelleri ve yasal ücretler nihai fiyatı değiştirebilir.
* Promosyon kampanyaları: hedefli indirimler veya özel teklifler yalnızca belirli ülke ya da bölgelerdeki kullanıcılara sunulabilir.
* Tedarikçi anlaşmaları: mülk sahipleri veya otel zincirleriyle yapılan özel anlaşmalar bölgesel fiyatlandırma stratejilerini belirleyebilir.
* IP tabanlı yönlendirme: kullanıcılar sık sık ülkeye özel alan adlarına yönlendirilir ya da içerik IP adreslerine göre yerelleştirilir.
Bu dağınık verilere erişmek, farklı coğrafi konumlardan gelen istekleri taklit edebilen bir altyapı gerektirir.
Coğrafi fiyat erişimi için proxy türleri
Coğrafi hedefli fiyatlara başarılı ve sürekli erişim için doğru proxy türünü seçmek kritik önemdedir. Her tür; anonimlik, hız ve maliyet açısından farklı avantaj ve dezavantajlar sunar.
Residential proxy'ler
Residential proxy'ler trafiği, internet servis sağlayıcıları (ISP) tarafından ev kullanıcılarına atanan gerçek IP adresleri üzerinden yönlendirir.
* Avantajlar: yüksek anonimlik, meşru kullanıcı trafiği gibi göründüğü için düşük tespit oranı, belirli şehir veya bölgeleri hedefleyebilme.
* Dezavantajlar: genellikle veri merkezi proxy'lerinden daha yavaş, GB veya IP başına daha yüksek maliyet, olası daha düşük eşzamanlı bağlantı sayısı.
* Kullanım senaryosu: sürekli scraping, hesap yönetimi ve yüksek güven ile gerçek kullanıcı davranışının taklidini gerektiren her tür iş için idealdir; özellikle gelişmiş bot önleme önlemleri kullanan Booking.com ve Airbnb gibi hassas platformlarda.
Veri merkezi proxy'leri
Veri merkezi proxy'leri, residential ISP'lerden değil, veri merkezlerinde barındırılan ikincil sunuculardan gelir.
* Avantajlar: yüksek hız, IP başına düşük maliyet, geniş IP havuzları, yüksek eşzamanlılık.
* Dezavantajlar: IP'ler proxy sunucusu olarak kolayca tanınabildiğinden tespit riski yüksektir, IP engelleme olasılığı vardır.
* Kullanım senaryosu: ilk keşif çalışmaları, daha az hassas veri toplama ya da yüksek hacimli isteklerin gerektiği ve hedef sitenin bot önleme savunmasının zayıf olduğu durumlar için uygundur. Yüksek engellenme oranları nedeniyle Booking/Airbnb'ye kalıcı erişim için daha az önerilir.
Mobil proxy'ler
Mobil proxy'ler, mobil operatörlerin mobil cihazlara atadığı IP adreslerini kullanır.
* Avantajlar: son derece yüksek güven ve düşük tespit oranı; mobil IP'ler genellikle çok meşru kabul edilir, operatör havuzu içinde dinamik IP rotasyonu sağlar.
* Dezavantajlar: en yüksek maliyet, residential'a kıyasla daha sınırlı coğrafi ayrıntı düzeyi, mobil ağ gecikmesi nedeniyle daha düşük hız.
* Kullanım senaryosu: azami anonimlik ve güven gerektiren çok hassas operasyonlar için ya da residential proxy'lerin yetersiz kaldığı durumlar için en iyisidir.
ISP proxy'ler
ISP proxy'ler, ISP'ler tarafından residential olarak sınıflandırılan veri merkezi IP'leridir. Veri merkezi proxy'lerinin hızını, residential IP'lerin algılanan meşruluğuyla birleştirirler.
* Avantajlar: yüksek hız, iyi anonimlik (çoğunlukla residential olarak değerlendirilir), kararlı IP adresleri.
* Dezavantajlar: standart veri merkezi proxy'lerinden daha pahalı olabilir, coğrafi hedefleme seçenekleri sınırlı olabilir.
* Kullanım senaryosu: orta düzeyde bot önleme önlemi olan platformlarda genel scraping görevleri için dengeli bir seçenektir.
Proxy türlerinin karşılaştırması
| Özellik | Residential proxy'ler | Veri merkezi proxy'leri | Mobil proxy'ler | ISP proxy'ler |
|---|---|---|---|---|
| IP kaynağı | Gerçek residential ISP'ler | Veri merkezleri | Mobil operatörler (3G/4G/5G) | Veri merkezleri (ISP olarak sınıflanır) |
| Anonimlik | Yüksek | Düşük–orta | Çok yüksek | Yüksek |
| Tespit riski | Düşük | Yüksek | Çok düşük | Orta–düşük |
| Hız | Orta | Yüksek | Orta (ağa bağlı) | Yüksek |
| Maliyet | Yüksek (GB/IP başına) | Düşük (IP başına) | Çok yüksek (GB/IP başına) | Orta–yüksek (IP başına) |
| Coğrafi hedefleme | Belirli bölge/şehirler | Daha geniş bölge/ülkeler | Daha geniş bölge/ülkeler | Belirli bölge/şehirler |
| En uygun kullanım | Yüksek güvenli scraping, hesap yönetimi | Yüksek hacim, az hassas siteler | Ultra hassas, yüksek güvenli görevler | Dengeli güven/hız |
Fiyat çekmek için teknik uygulama
Coğrafi olarak farklılaşan fiyatlara programatik erişim; proxy ayarlarının, HTTP başlıklarının ve oturum yönetiminin dikkatle yapılandırılmasını gerektirir.
Proxy yapılandırması
Proxy'ler genellikle protocol://user:password@host:port URL biçiminde belirtilir.
import requests
# Proxy bilgileri
proxy_host = "your_proxy_host"
proxy_port = "your_proxy_port"
proxy_user = "your_proxy_username"
proxy_pass = "your_proxy_password"
proxies = {
"http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
"https": f"https://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
}
target_url = "https://www.booking.com/search.html?country=us&city=new-york" # Örnek URL
try:
response = requests.get(target_url, proxies=proxies, timeout=10)
response.raise_for_status() # HTTP hatalarında istisna fırlatır
print(f"Status Code: {response.status_code}")
# response.text üzerinde ileri işlemler
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
Coğrafi hedeflemede, seçilen proxy'nin IP adresi algılanan kaynağı belirler. Proxy sağlayıcınızın istediğiniz hedef ülkelerde IP sunduğundan emin olun.
HTTP başlıkları ve oturum yönetimi
Meşru tarayıcı davranışını taklit etmek ve tespitten kaçınmak için belirli HTTP başlıkları yapılandırılmalıdır.
* User-Agent: yaygın bir tarayıcıyı taklit edin (örneğin Windows üzerinde Chrome). Bunu düzenli olarak değiştirin.
* Accept-Language: hedef ülkeye karşılık gelen dile ayarlayın (örneğin ABD için en-US,en;q=0.9, İspanya için es-ES,es;q=0.9).
* Referer: makul bir yönlendiren URL ekleyin.
* Cookie: oturum durumunu korumak için çerezleri yönetin; bu, fiyatlandırmayı etkileyebilir veya CAPTCHA'ları önleyebilir. Kalıcı çerez yönetimi için requests.Session() nesnesini kullanın.
import requests
import random
def get_random_user_agent():
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/120.0.0.0 Safari/537.36",
# Daha fazla User-Agent ekleyin
]
return random.choice(user_agents)
# İspanya (ES) için örnek
target_url_es = "https://www.booking.com/search.html?country=es&city=madrid"
headers_es = {
"User-Agent": get_random_user_agent(),
"Accept-Language": "es-ES,es;q=0.9",
"Referer": "https://www.booking.com/",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
}
with requests.Session() as session:
session.proxies = proxies # Yukarıda tanımlanan proxy'leri kullanır
session.headers.update(headers_es)
try:
response_es = session.get(target_url_es, timeout=15)
response_es.raise_for_status()
print(f"Spain (ES) Status Code: {response_es.status_code}")
# Fiyatlar için response_es.text içeriğini işleyin
except requests.exceptions.RequestException as e:
print(f"Spain (ES) request failed: {e}")
Dinamik içerik ve bot önleme önlemleriyle başa çıkma
Booking.com ve Airbnb, içeriği oluşturmak için JavaScript'i yoğun biçimde kullanır ve gelişmiş bot tespit sistemleri uygular.
* JavaScript render'ı: büyük ölçüde JavaScript'e dayanan sayfalarda çoğunlukla proxy'lerle birlikte headless tarayıcı otomasyon çerçevesi (örneğin Selenium, Playwright) gerekir. Bu, tam bir tarayıcı ortamını simüle ederek JavaScript'i gerçek bir kullanıcı gibi çalıştırır.
* CAPTCHA'lar: CAPTCHA ile karşılaşmak tespit edildiğinizi gösterir. Stratejiler arasında proxy rotasyonu, IP kalitesinin artırılması, istek hızının sınırlanması veya CAPTCHA çözüm servisleriyle entegrasyon vardır.
* Hız sınırlama: insan gezinme örüntülerini taklit etmek ve hız sınırlarını tetiklememek için istekler arasına gecikmeler koyun. Gecikme sürelerini rastgeleleştirmek (time.sleep(random.uniform(2, 5))) sabit gecikmelerden daha etkilidir.
* IP kara listesi: bir IP engellenirse havuzdan engellenmemiş yeni bir IP'ye geçin. Yüksek kaliteli residential veya mobil IP'lerden oluşan geniş bir havuz tutun.
* Tarayıcı parmak izi: siteler, benzersiz kullanıcıları veya botları tanımlamak için çeşitli tarayıcı parametrelerini (eklentiler, ekran çözünürlüğü, canvas verileri) analiz eder. Headless tarayıcılar tutarlı ve yaygın parmak izleri sunacak şekilde yapılandırılabilir.
Proxy kullanımında en iyi uygulamalar
Coğrafi hedefli fiyatlara erişirken başarıyı en üst düzeye çıkarmak ve tespiti en aza indirmek için:
* Proxy rotasyonu: sağlam bir proxy rotasyon stratejisi uygulayın. Yüksek hacimli scraping'de IP'leri sık değiştirin (örneğin birkaç istekte bir veya her oturumda). Kalıcı oturumlarda daha seyrek değiştirin, ancak bir IP ele geçtiğinde geçiş yapmaya hazır olun.
* Coğrafi özgüllük: proxy sağlayıcınızın, istenen ülke veya şehirle tam olarak eşleşecek ayrıntılı coğrafi hedefleme seçenekleri sunduğundan emin olun.
* İnsan davranışını taklit edin: istekler arasına rastgele gecikmeler ekleyin, gezinme yollarını çeşitlendirin ve IP başına oturum başına istek sayısını sınırlayın. Öngörülebilir istek örüntülerinden kaçının.
* Çerez ve oturum yönetimi: çerezleri yönetmek için kalıcı oturumları (requests.Session() veya headless tarayıcı profilleri) kullanın. Bu, durumu korumaya yardımcı olur ve çoğu zaman ilk tespit kontrollerini aşar.
* User-Agent çeşitliliği: User-Agent dizelerini, meşru tarayıcı ve işletim sistemi kombinasyonlarından oluşan çeşitli bir listeden döndürün.
* Proxy sağlığını izleyin: proxy IP'lerinizin bağlantısını ve anonimliğini düzenli olarak kontrol edin. Başarısız istekler için farklı proxy'lerle yeniden deneme mantığı uygulayın.
* Hata yönetimi: tespit veya servis kısıtlamalarına uygun tepki verebilmek için HTTP durum kodları (örneğin 403 Forbidden, 429 Too Many Requests) ve ağ sorunları için kapsamlı hata yönetimi uygulayın.
* Headless tarayıcı entegrasyonu: karmaşık, JavaScript ağırlıklı sitelerde istemci tarafı kodu çalıştırmak ve dinamik içerik render'ını yönetmek için proxy'leri headless tarayıcılarla (örneğin Playwright veya Selenium) entegre edin.
