Wildberries veya Ozon'da bir tarayıcı başlattınız, proxy ayarladınız ve bir saat içinde limitlere takıldınız ve birkaç bin ürün topladığınız halde birçok IP'niz yasaklandı mı? Sorun neredeyse her zaman aynıdır: URL parametreleri. Filtreler, sıralamalar, sayfalama ve UTM etiketleri, bir katalogu on binlerce teknik kopyaya dönüştürür ve tarayıcı bunların hepsini dolaşmak zorunda kalır, oysa benzersiz verileri toplamak yerine.
URL parametreleri nedeniyle sayfa kopyası nedir
Sayfa kopyası, teknik olarak başka birinden farklı olan ancak içeriği aynı veya neredeyse aynı olan bir URL'dir. Klasik bir örnek: Wildberries'teki elbise kataloğu /catalog/zhenshchinam/odezhda/platya adresinde mevcuttur, ancak fiyatına göre sıralandığında /catalog/zhenshchinam/odezhda/platya?sort=price haline gelir. Boyut, marka, renk, fiyat aralığı gibi filtreler ekleyin ve sonuçta her biri teknik olarak benzersiz bir URL olan yüzlerce parametre kombinasyonu elde edersiniz.
Canlı bir kullanıcı için bu kullanışlıdır: filtreyi seçti — istediği ürünü gördü. Ancak, bağlantıları bir maske ile dolaşan veya sayfalama izleyen bir tarayıcı için, her bir kombinasyon ayrı bir sayfa olarak yüklenmesi, ayrıştırılması ve kaydedilmesi gereken bir sayfadır. Eğer kurallar belirlenmezse, robot sonsuz bir filtre çukuruna "düşer": fiyat sıralaması → marka filtresi → boyut filtresi → tekrar sıralama, ancak bu sefer farklı bir sırayla. Benzersiz URL sayısı üssel olarak artar, ancak içlerinde yararlı veri artmaz — bunlar aynı ürün kartlarıdır, sadece farklı bir sırada veya kısıtlı bir setle.
Ayrı bir kopya kategorisi — UTM etiketleri ve oturum parametreleri (utm_source, clid, _openstat). Bunlar sayfanın içeriğini etkilemez, ancak tarayıcı, diğer sayfalardan bağlantıları olduğu gibi topluyorsa, aynı ürün kartını adresin sonundaki farklı eklerle onlarca kez çeker.
Bu durumun tarayıcı için neden kritik olduğu
SEO uzmanı için sayfa kopyaları, indeksleme ve ağırlığın dağılması sorunudur. Pazar yerini fiyat izleme veya ürün yelpazesi toplama amacıyla tarayan biri için, kopyalar doğrudan para ve zaman kaybıdır ve bu üç yönde birden gerçekleşir.
İlk olarak, her kopya sayfasının yüklenmesi bir proxy üzerinden bir istektir. Ücretli döner proxy kullanıyorsanız (ve Wildberries ve Ozon'un korumasını aşmak için bunlar olmadan yapamazsınız), o zaman gereksiz isteklere de trafik ödemek zorundasınız. On binlerce ürün kartı ölçeğinde, gereksiz kopyalar için fazladan %30-40'lık istekler, harcamayı önemli ölçüde artırır.
İkincisi, toplama hızı katlanarak düşer. Eğer tarayıcınız fiziksel olarak saniyede 10 istek yapabiliyorsa ve bunların üçte biri aynı verilerle sayfalara gidiyorsa, o zaman benzersiz içerik toplama hızı saniyede 6-7 kartına düşer. Büyük kataloglarda bu, bir saatte toplama ile yarım günde toplama arasındaki farktır.
Üçüncüsü ve en acı verici olanı — IP yasaklama riski, istek sayısıyla orantılı olarak artar. Pazar yerlerinin anti-bot sistemleri, bir adresten gelen isteklerin sıklığını dikkate alır. Eğer hedef verileri toplamak için gerekenin üç katı kadar istek yapıyorsanız, proxy'nin "güven kredisi"ni üç kat daha hızlı tüketirsiniz ve CAPTCHA veya yasaklama ile karşılaşırsınız.
Gerçek örnekler: Wildberries, Ozon, Avito
Wildberries'te aynı katalog, ?sort=popular, ?sort=rate, ?sort=newly gibi parametrelerle sunulabilir, artı fbrand, fsize, priceU filtreleri. Eğer tarayıcı bağlantıları "ürün kartı → benzer ürünler → tekrar ürün kartı" şeklinde topluyorsa, tüm bu parametrelerin kombinasyonları ile URL'ler kolayca oluşturulabilir, oysa içindeki ürün seti %90 oranında örtüşmektedir.
Ozon'da benzer bir hikaye, ?sorting= parametresi ve ürün özelliklerine göre filtreler ile geçerlidir — burada kombinasyonlar daha fazladır çünkü her kategorinin kendi filtre seti vardır (malzeme, hacim, renk vb.).
Avito'da ayrı bir sorun — coğrafi konum ve arama yarıçapı parametreleri (?radius=, ?district=). Aynı ilan, bu parametrelerin farklı kombinasyonları ile sonuçlarda "belirebilir" ve naif bir tarayıcı bunu farklı bulgular olarak değerlendirecek ve kopyalanmış kayıtlarla veritabanını şişirecektir.
Kopyaların proxy bütçesini ve zamanı nasıl yediği
Şartlı bir örnek üzerinden hesaplayalım. Diyelim ki bir kategoride 500 benzersiz ürün var, ancak 8 sıralama seçeneği ve 12 popüler filtre kombinasyonu nedeniyle tarayıcı URL normalizasyonu olmadan 500 değil, 4000-5000 sayfayı dolaşıyor ve aynı ürün kartlarına tekrar tekrar giriyor. Eğer bir istek, yerleşik bir proxy üzerinden bir birim trafik tutuyorsa, naif bir dolaşımda, aynı miktarda benzersiz veri almak için gerekenin 8-10 katı kadar harcama yapıyorsunuz.
Daha da kötüsü, aynı IP'den benzer URL'lere yapılan tekrar eden istekler — anti-bot sistemleri için karakteristik bir modeldir. İsteklerin sıklığı ve benzerliği arttıkça, koruma daha hızlı devreye girer. Sonuç olarak kapalı bir döngü oluşur: kopyalar istek sayısını artırır → proxy havuzuna yük artar → IP'ler daha hızlı yasaklanır → daha sık proxy değiştirmek ve toplama işlemini yeniden başlatmak zorunda kalırsınız → nihai zaman ve tarama maliyeti daha da artar.
Pratikte bu şöyle görünür: bir satıcı, Wildberries'teki 200 rakibinin fiyatlarını günde bir kez izlemek istiyor, ancak temizlenmemiş URL'ler nedeniyle scripti 15.000 istek yapıyor, proxy havuzunun limitlerine takılıyor ve akşam yerine sabah eksik veriler alıyor.
Tarayıcıyı başlatmadan önce kopyaları nasıl tespit edersiniz
Toplamayı ölçeklendirmeden önce, hedef sitenin URL yapısını analiz etmek için bir saat harcamak iyi bir fikirdir. İşte pratik bir eylem sırası:
- Hedef kataloğu tarayıcıda açın ve filtreleri ve sıralamaları manuel olarak gözden geçirin — adres çubuğunda hangi parametrelerin göründüğünü kaydedin.
- Sayfaya eklenen, sonuçları etkilemeyen bir parametre (örneğin, UTM etiketi) ile içeriğin değişip değişmediğini kontrol edin — içerik aynıysa, bu parametre toplama sırasında yok sayılmalıdır.
- Sayfanın kaynak kodunda
rel="canonical"etiketine bakın — siteler genellikle hangi URL'nin kopya seçenekler için "ana" olarak kabul edildiğini belirtir. - 100-200 URL'den oluşan küçük bir test örneği toplayın ve bunu anahtar parametreler üzerinden basit bir deduplikasyondan geçirin — listenin ne kadar kısaldığına bakın.
- robots.txt dosyasını kontrol edin — bazen burada parametreli URL'ler için Disallow direktifleri zaten tanımlanmıştır, bu da hangi parametrelerin "gereksiz" olarak kabul edildiğine dair bir ipucu verir.
URL normalizasyonu: kurallar ve örnekler
Normalizasyon, URL'yi dolaşmadan önce tek bir kanonik forma getirmektir. Temel ilke: "önemli" parametreleri (örneğin, sayfa numarası veya kategori) ayırmak ve "önemsiz" olanları (sıralama, UTM, oturum kimlikleri) atmak.
Wildberries benzeri bir katalog için normalizasyon kuralının pratik bir örneği:
import urllib.parse as up
IGNORED_PARAMS = {"sort", "utm_source", "utm_medium", "utm_campaign", "clid", "_openstat"}
def normalize_url(url: str) -> str:
parsed = up.urlparse(url)
query = up.parse_qsl(parsed.query)
# sadece önemli parametreleri bırakıyoruz, diğerlerini atıyoruz
filtered = [(k, v) for k, v in query if k not in IGNORED_PARAMS]
filtered.sort() # parametrelerin sırasını tek bir forma getiriyoruz
new_query = up.urlencode(filtered)
return up.urlunparse(parsed._replace(query=new_query))
Normalizasyondan sonra, aynı listeleme için farklı sıralama seçenekleriyle tüm varyantlar tek bir URL'de toplanır. Proxy üzerinden istek göndermeden önce, tarayıcı bu normalleştirilmiş adresin daha önce karşılaşıp karşılaşmadığını kontrol eder — eğer evet ise, onu atlar. Bu, veri bütünlüğünden ödün vermeden istek sayısını azaltmanın en ucuz yoludur.
Basit durumlar için bu mantığı kod olmadan da uygulamak mümkündür — tarama aracının ayarları üzerinden: "parametreleri yok say" seçeneğini belirleyip bir liste belirtmek veya URL'nin sonundaki soru işaretinden sonra kesmek için bir düzenli ifade tanımlamak.
Parametreleri yok saymak için tarayıcı ayarları
Pazar yerlerinden veri toplama ve tarayıcı oluşturucuları için mevcut çözümlerin çoğu, proje ayarları düzeyinde URL parametreleri hariç tutma kurallarını destekler. İlk olarak kontrol edilmesi ve ayarlanması gerekenler:
- Yok sayılan parametreler listesi. Analiz aşamasında bulunan tüm sıralama, UTM etiketleri ve oturum kimliklerini buraya ekleyin.
- Normalleştirilmiş URL'nin hash'ine göre deduplikasyon. Birçok tarayıcı, daha önce ziyaret edilen adreslerin listesini saklar — karşılaştırmanın normalleştirilmiş versiyon üzerinden yapılması önemlidir, orijinal dize üzerinden değil.
- Filtrelerin dolaşım derinliği sınırı. Görev, kategori yelpazesini toplamaksa, sıralama ve filtre olmadan bir "temel" geçiş yeterlidir, tüm kombinasyonları rekürsif olarak dolaşmak gereksizdir.
- Filtrelerden ziyade sayfalama önceliği. Eğer site, sayfa başına tam ürün listesini veriyorsa, bu genellikle yeterlidir — aynı listeyi filtrelerle ayrı olarak dolaşmak aşırı olur.
Bu tür bir ayarlamadan sonra, istek sayısı genellikle, kaynak sitenin "parametreli" olma derecesine bağlı olarak 3-6 kat azalır.
Taramanın ölçeklenmesinde proxy'nin rolü
URL'nin mükemmel normalizasyonundan sonra, Wildberries veya Ozon'un büyük kataloglarını taramak, istekleri birçok IP adresi arasında dağıtmayı gerektirir — aksi takdirde anti-bot koruması, bir kaynaktan gelen anormal aktiviteyi hızla tespit eder. Burada, göreve uygun proxy türünü doğru bir şekilde seçmek önemlidir.
Ürün kartlarını toplamak ve fiyat izlemek için ölçekli bir toplama, makul maliyetle hacim ve hızın önemli olduğu durumlarda genellikle veri merkezi proxy'leri yeterlidir — bunlar, günlük milyonlarca istekte kritik olan, yerleşik olanlardan daha hızlı ve daha ucuzdur. Ancak, eğer sitenin koruması agresif bir şekilde veri merkezi IP aralıklarını yasaklıyorsa, yerleşik proxy'lere geçmek, gerçek sağlayıcılardan gelen normal kullanıcılar gibi görünerek daha az şüphe çekmek için faydalıdır.
Noktasal görevler için — örneğin, belirli bir ürünün fiyatının belirli bir bölgede mobil cihazdan nasıl göründüğünü kontrol etmek için — mobil proxy'ler faydalı olacaktır, bunlar cep telefonu operatörü üzerinden bağlantıyı taklit eder ve neredeyse hiç topluca yasaklanmaz.
Önemli olan: doğru proxy seçimi, URL normalizasyonunu değiştirmez, onu tamamlar. Kopyalardan arındırılmadan, en kaliteli IP havuzunu bile daha hızlı yakarsınız. Önce gereksiz istek sayısını azaltır, sonra kalanları proxy rotasyonu ile ölçeklendirirsiniz — bu sırada maksimum tasarrufu sağlar.
Veri toplama öncesi kontrol listesi
Tarayıcıyı gerçek ölçekle başlatmadan önce, kısa bir kontrol listesi üzerinden geçin:
| Kontrol Maddesi | Neden gerekli |
|---|---|
| Sıralama ve filtre parametreleri listesi belirlendi | Hangi URL'lerin kopya olarak kabul edileceğini anlamak için |
| URL normalizasyon kuralı ayarlandı | Kopyaları tek bir kanonik adrese toplamak için |
| Hash'e göre deduplikasyon etkinleştirildi | Aynı verilerin tekrar yüklenmesini önlemek için |
| Proxy türü hacim ve korumanın agresifliğine göre belirlendi | Yasaklama riskini azaltmak ve toplama hızını artırmak için |
| IP başına istek limitleri yeterli bir pay ile belirlendi | Proxy havuzunun toplu yasaklanmasını önlemek için |
Sonuç
URL'deki filtreler, sıralamalar ve yardımcı parametreler, pazar yerlerini tararken gereksiz trafik kaynaklarından biri değil, en önemli kaynaklardan biridir. URL normalizasyonu olmadan, tarayıcı, aynı verileri almak için gerekenin 5-10 katı kadar istek yapabilir, bu da doğrudan proxy bütçesine, toplama hızına ve yasaklama riskine etki eder.
Çözüm, formülasyon açısından basit, ancak hazırlık aşamasında disiplin gerektirir: hedef sitenin URL yapısını analiz edin, hangi parametrelerin içeriği etkilediğini ve hangilerinin etkilemediğini belirleyin, normalleştirilmiş adres üzerinden deduplikasyonu ayarlayın ve yalnızca bundan sonra proxy rotasyonu ile toplama işlemini ölçeklendirin. Eğer amacınız, Wildberries, Ozon veya Avito'da büyük ölçekte fiyat ve ürün yelpazesi izlemekse, yerleşik proxy'lerle başlamak en iyisidir — bunlar, anti-bot sistemleriyle güvenilirlik ve belirli bir göreve uyum sağlama arasında en iyi dengeyi sunar.