Proxy'ler, IP adreslerini gizleyerek, istekleri dağıtarak ve hız sınırlarını veya coğrafi kısıtlamaları aşarak güvenilir Ozon scraping ve otomasyonu için gereklidir; böylece ürün verilerine, fiyatlara ve satıcı bilgilerine tutarlı erişim sağlanır.
Ozon scraping ve otomasyonunda proxy'ler neden gerekli
Ozon da birçok büyük e-ticaret platformu gibi, altyapısını aşırı yükten, veri hırsızlığından ve yetkisiz erişimden korumak için çeşitli anti-bot önlemleri uygular. Tek bir IP adresinden yapılan doğrudan, proxy'siz scraping denemeleri hızla tespit edilip engellenir.
Ozon'un anti-bot mekanizmaları
Ozon, otomatik erişimi tespit etmek ve engellemek için birkaç teknik kullanır:
* IP tabanlı engelleme: kısa bir süre içinde aynı IP adresinden gelen tekrarlı istekler geçici veya kalıcı engellemeleri tetikler.
* Hız sınırlama (rate limiting): bir IP'nin dakika veya saat başına yapabileceği istek sayısını sınırlar. Bu sınırın aşılması HTTP 429 Too Many Requests hatalarıyla sonuçlanır.
* User-Agent dizesi analizi: olağan dışı veya eksik User-Agent başlıkları ya da bilinen botlarla ilişkilendirilenler işaretlenmeye yol açabilir.
* CAPTCHA doğrulamaları: davranış analizi, insan etkileşimini doğrulamak için CAPTCHA tetikleyebilir.
* Referer başlığı kontrolleri: tutarsız veya eksik referer başlıkları tarayıcı kaynaklı olmayan etkinliğe işaret edebilir.
* JavaScript render gereksinimleri: bazı içerikler JavaScript ile dinamik olarak yüklenebilir ve headless tarayıcı çözümleri gerektirir.
Coğrafi kısıtlamalar ve yerelleştirilmiş içerik
Ozon esas olarak Rusya'da ve diğer BDT ülkelerinde faaliyet gösterir. Belirli yerelleştirilmiş içeriğe erişmek veya bölgesel fiyat yapılarını izlemek, bu coğrafi bölgelerde bulunan proxy'ler gerektirebilir. Bölgeye özgü verilere dış bir IP'den erişmeye çalışmak yönlendirmelere, eksik verilere veya erişimin reddedilmesine yol açabilir.
Ozon için proxy türleri
Proxy türü seçimi, scraping başarı oranlarını, maliyeti ve veri kalitesini önemli ölçüde etkiler.
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.
* Artıları: yüksek anonimlik, meşru kökenleri nedeniyle anti-bot sistemleri tarafından tespit edilmesi zor, belirli bölgeleri (örneğin Ozon için Rus şehirleri) hedeflemek açısından mükemmel. Sürekli scraping'de yüksek başarı oranları.
* Eksileri: GB veya IP başına daha yüksek maliyet, gerçek kullanıcı bağlantıları üzerinden yönlendirme nedeniyle veri merkezi proxy'lerine kıyasla potansiyel olarak daha yavaş yanıt süreleri.
* Kullanım senaryosu: maksimum anonimlik ve gelişmiş anti-bot önlemlerine karşı dayanıklılık gerektiren yüksek hacimli, uzun vadeli scraping projeleri için veya belirli coğrafi konumların kritik olduğu durumlar için idealdir.
Veri merkezi proxy'leri
Veri merkezi proxy'leri ticari veri merkezlerinden gelir ve ISP'lerle ilişkili değildir.
* Artıları: yüksek hız, daha düşük maliyet, yüksek erişilebilirlik. İlk veri toplama veya daha az agresif scraping için uygundur.
* Eksileri: veri merkezlerinden geldikleri bilindiği için anti-bot sistemleri tarafından daha kolay tespit edilir. Agresif veya sürekli scraping'de daha yüksek ban oranları. Residential'a kıyasla sınırlı coğrafi hedefleme yetenekleri.
* Kullanım senaryosu: ilk veri keşfi, herkese açık veri noktaları veya hızın öncelikli olduğu ve hedef sayfaların anti-bot korumasının zayıf olduğu senaryolar için uygundur. Sürekli Ozon scraping'i için daha az önerilir.
Mobil proxy'ler
Mobil proxy'ler, trafiği mobil operatörlerin hücresel cihazlara atadığı IP adresleri üzerinden yönlendirir.
* Artıları: gerçek mobil kullanıcılarla ilişkilendirildikleri için web sitelerinden en yüksek güven puanını alır. IP'ler genellikle dinamiktir ve birçok kullanıcı arasında paylaşılır, bu da tespiti zorlaştırır.
* Eksileri: en yüksek maliyet, sınırlı erişilebilirlik, veri merkezi proxy'lerine göre potansiyel olarak daha yavaş ve daha az kararlı.
* Kullanım senaryosu: son derece hassas scraping görevleri, en agresif anti-bot sistemlerini aşmak veya mobil kullanıcı davranışını taklit etmenin kritik olduğu durumlar için en iyisidir. Aşırı direnç yaşanmadıkça çoğu standart Ozon scraping görevi için gereğinden fazladır.
| Özellik | Residential proxy'ler | Veri merkezi proxy'leri | Mobil proxy'ler |
|---|---|---|---|
| Köken | Gerçek ISP'ler, ev kullanıcıları | Ticari veri merkezleri | Mobil operatörler, hücresel cihazlar |
| Anonimlik | Yüksek | Orta (tespiti daha kolay) | Çok yüksek |
| Tespit riski | Düşük | Yüksek | Çok düşük |
| Hız | Orta | Yüksek | Orta |
| Maliyet | Yüksek | Düşük | Çok yüksek |
| Coğrafi hedefleme | Mükemmel (şehir, bölge düzeyi) | Sınırlı (ülke, büyük bölgeler) | İyi (ülke, operatör düzeyi) |
| Ozon uygunluğu | Sürekli scraping için mükemmel | Sınırlı, yüksek ban riski | Kritik görevler için mükemmel |
Ozon otomasyonu için proxy uygulaması
Etkili proxy entegrasyonu dikkatli yapılandırma ve stratejik rotasyon gerektirir.
Kodda proxy entegrasyonu
Python requests örneği
Basit HTTP istekleri için Python'daki requests kütüphanesi doğrudan proxy'lerle yapılandırılabilir.
import requests
# Proxy yapılandırması
proxies = {
'http': 'http://user:password@proxy_ip:proxy_port',
'https': 'http://user:password@proxy_ip:proxy_port'
}
# Örnek Ozon URL'si
ozon_url = 'https://www.ozon.ru/category/smartfony-15502/'
try:
response = requests.get(ozon_url, proxies=proxies, timeout=10)
response.raise_for_status() # Hatalı yanıtlar (4xx veya 5xx) için HTTPError fırlatır
print(f"Status Code: {response.status_code}")
# print(response.text[:500]) # Yanıtın ilk 500 karakterini yazdırır
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
Selenium/Playwright örneği
Dinamik içerik veya JavaScript yürütmesi gerektiren sayfalar için Selenium ya da Playwright gibi headless tarayıcılar gereklidir.
Proxy ile Selenium:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
proxy_ip_port = "proxy_ip:proxy_port"
proxy_user = "user"
proxy_pass = "password"
chrome_options = Options()
# Kimlik doğrulamalı proxy'ler için
chrome_options.add_argument(f'--proxy-server=http://{proxy_ip_port}')
# Kimlik doğrulama gerekiyorsa, doğrudan proxy kimlik doğrulaması için bir tarayıcı eklentisine ya da
# `selenium-wire` veya `undetected-chromedriver` gibi daha karmaşık bir çözüme ihtiyacınız olabilir.
# Bu örnekte proxy'nin kimlik doğrulamayı hallettiği ya da kimlik doğrulamasız olduğu varsayılıyor.
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.ozon.ru/category/smartfony-15502/")
print(driver.title)
driver.quit()
Proxy ile Playwright:
from playwright.sync_api import sync_playwright
proxy_server = "http://proxy_ip:proxy_port"
proxy_username = "user"
proxy_password = "password"
with sync_playwright() as p:
browser = p.chromium.launch(
proxy={"server": proxy_server, "username": proxy_username, "password": proxy_password}
)
page = browser.new_page()
page.goto("https://www.ozon.ru/category/smartfony-15502/")
print(page.title())
browser.close()
Proxy rotasyon stratejileri
Scraping verimliliğini en üst düzeye çıkarmak ve engellemeleri en aza indirmek için sağlam bir proxy rotasyonu uygulayın.
* Zamanlı rotasyon: sabit sayıda istekten veya belirli bir zaman aralığından sonra yeni bir proxy'ye geçin.
* Hata tabanlı rotasyon: belirli HTTP durum kodlarıyla (örneğin 403 Forbidden, 429 Too Many Requests, 503 Service Unavailable) veya bağlantı hatalarıyla karşılaşıldığında proxy'leri hemen değiştirin.
* Oturum yönetimi: oturumun korunmasını gerektiren görevlerde (örneğin sepete ürün ekleme), o oturumdaki tüm isteklerin oturum tamamlanana kadar aynı proxy IP'sini kullandığından emin olun.
* Proxy havuzu yönetimi: aktif proxy'lerden oluşan bir havuz tutun, başarısız olan proxy'leri geçici olarak kullanılamaz şeklinde işaretleyin ve başarısız istekler için yeni bir proxy ile yeniden deneme mekanizması uygulayın.
Ozon'un anti-bot önlemleriyle başa çıkma
- User-Agent dizeleri: farklı tarayıcıları ve işletim sistemlerini taklit etmek için User-Agent dizelerini rotasyona sokun. Yaygın ve meşru User-Agent dizeleri kullanın.
python headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9,ru;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', '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.9', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', } response = requests.get(ozon_url, proxies=proxies, headers=headers) - İstek başlıkları:
Accept,Accept-Language,Accept-EncodingveReferergibi diğer gerçekçi HTTP başlıklarını da ekleyin. - Referer başlıkları: site içi gezinme için, Ozon'da makul bir önceki sayfaya işaret eden bir
Refererbaşlığı ekleyin. - Headless tarayıcılar: sayfalar içerik render'ı için büyük ölçüde JavaScript'e dayandığında veya karmaşık etkileşimler (örneğin sonsuz kaydırma, öğelere tıklama) gerektirdiğinde Playwright ya da Selenium kullanın. Bu araçlar JavaScript'i çalıştırır ve sayfaları gerçek bir tarayıcıya benzer şekilde render eder.
- CAPTCHA çözüm servisleri: CAPTCHA'lar sık karşılaşılan bir engele dönüşürse üçüncü taraf CAPTCHA çözüm servisleriyle entegrasyon kurun. Bu, maliyet ve karmaşıklık ekler ancak kalıcı erişim için gerekli olabilir.
Proxy ile Ozon scraping için en iyi uygulamalar
En iyi uygulamalara uymak veri güvenilirliğini artırır ve engellenme olasılığını azaltır.
-
İstek kısıtlama (throttling): insan gezinme davranışını taklit etmek için istekler arasına gecikmeler ekleyin. Öngörülebilir kalıplardan kaçınmak için bu gecikmeleri rastgeleleştirin.
```python
import time
import randomtime.sleep(random.uniform(2, 5)) # 2 ile 5 saniye arasında duraklama
`` * **Hata yönetimi ve yeniden deneme mantığı:** ağ sorunları, proxy arızaları ve HTTP durum kodları (4xx, 5xx) için sağlam bir hata yönetimi uygulayın. Başarısız istekleri bir gecikmenin ardından farklı bir proxy ile yeniden deneyin. * **Proxy performansını izleme:** proxy havuzunuzun başarı oranını, yanıt sürelerini ve bant genişliği kullanımını düzenli olarak izleyin. Yetersiz performans gösteren proxy'leri kaldırın veya değiştirin. * **robots.txtdosyasına saygı gösterme:** proxy'ler IP engellerini aşmaya yardımcı olsa da,www.ozon.rusitesininrobots.txt` dosyasına saygı göstermek etik bir husustur ve hukuki sorunlardan kaçınmaya yardımcı olabilir.
* User-Agent rotasyonu: çeşitli ve güncel User-Agent dizelerinden oluşan bir liste tutun ve bunları her istekte ya da istek serisinde değiştirin.
* Oturum yönetimi: durum gerektiren işlemlerde (örneğin sepete ekleme, oturum açma), o mantıksal oturumdaki tüm isteklerin aynı proxy IP'sini kullandığından emin olun. Oturumun ortasında proxy değiştirmek büyük olasılıkla oturumu bozar.
* IP ısıtma: yeni proxy IP'lerinde hemen agresif scraping yapmaktan kaçının. Düşük bir istek oranıyla başlayın ve güven oluşturmak için oranı kademeli olarak artırın.
