Apakah Anda telah menjalankan parser di Wildberries atau Ozon, mengatur proxy, dan setelah satu jam terjebak pada batas dan mendapatkan banyak IP yang diblokir — padahal hanya mengumpulkan beberapa ribu kartu? Masalahnya hampir selalu sama: parameter URL. Filter, pengurutan, paginasi, dan label UTM mengubah satu katalog menjadi puluhan ribu duplikat teknis, dan parser dengan jujur melewati semuanya, alih-alih mengumpulkan data unik.
Apa itu duplikat halaman karena parameter URL
Duplikat halaman adalah URL yang secara teknis berbeda dari yang lain, tetapi kontennya memberikan hal yang sama atau hampir sama. Contoh klasik: katalog gaun di Wildberries dapat diakses di alamat /catalog/zhenshchinam/odezhda/platya, tetapi hasil yang sama, diurutkan berdasarkan harga, sudah berubah menjadi /catalog/zhenshchinam/odezhda/platya?sort=price. Tambahkan filter berdasarkan ukuran, merek, warna, rentang harga — dan Anda akan mendapatkan ratusan kombinasi parameter, masing-masing merupakan URL yang secara formal unik.
Bagi pengguna biasa, ini nyaman: memilih filter — melihat produk yang diinginkan. Tetapi bagi parser, yang melewati tautan berdasarkan pola atau mengikuti paginasi, setiap kombinasi tersebut adalah halaman terpisah yang perlu dimuat, diparsing, dan disimpan. Jika tidak ada aturan yang ditetapkan, robot akan "terjebak" dalam corong filter yang tak berujung: pengurutan berdasarkan harga → filter berdasarkan merek → filter berdasarkan ukuran → pengurutan lagi, tetapi dalam urutan yang berbeda. Jumlah URL unik meningkat secara eksponensial, tetapi data yang berguna di dalamnya tidak bertambah — itu adalah kartu produk yang sama, hanya dalam urutan yang berbeda atau set yang dipangkas.
Kategori terpisah dari duplikat adalah label UTM dan parameter sesi (utm_source, clid, _openstat). Mereka sama sekali tidak mempengaruhi konten halaman, tetapi jika parser mengumpulkan tautan dari halaman lain di situs seperti adanya, ia akan menarik kartu produk yang sama berkali-kali dengan ekor yang berbeda di alamatnya.
Mengapa ini kritis untuk parser
Bagi seorang spesialis SEO, duplikat halaman adalah masalah pengindeksan dan pengaburan bobot. Bagi seseorang yang mem-parsing marketplace untuk memantau harga atau mengumpulkan assortimen, duplikat adalah kehilangan uang dan waktu secara langsung, dan ini terjadi dalam tiga arah sekaligus.
Pertama, setiap pemuatan halaman duplikat adalah permintaan melalui proxy. Jika Anda menggunakan proxy rotasi berbayar (dan untuk melewati perlindungan Wildberries dan Ozon, Anda tidak bisa tanpa mereka), maka Anda membayar trafik bahkan untuk permintaan yang tidak berguna. Dalam skala puluhan ribu kartu, tambahan 30-40% permintaan untuk duplikat secara signifikan meningkatkan pengeluaran.
Kedua, kecepatan pengumpulan turun secara signifikan. Jika parser Anda secara fisik mampu melakukan 10 permintaan per detik, dan sepertiga dari mereka pergi ke halaman dengan data yang sama, maka kecepatan pengumpulan konten unik yang sebenarnya turun menjadi 6-7 kartu per detik. Di katalog besar, ini adalah perbedaan antara pengumpulan dalam satu jam dan setengah hari.
Ketiga, dan ini adalah yang paling menyakitkan — risiko pemblokiran IP meningkat sebanding dengan jumlah permintaan. Sistem anti-bot marketplace menghitung frekuensi permintaan dari satu alamat. Jika Anda membuat tiga kali lebih banyak permintaan daripada yang diperlukan untuk mengumpulkan data yang ditargetkan, Anda akan dengan cepat menghabiskan "kredit kepercayaan" proxy dan terkena CAPTCHA atau pemblokiran.
Contoh nyata: Wildberries, Ozon, Avito
Di Wildberries, katalog yang sama dapat disajikan dengan parameter ?sort=popular, ?sort=rate, ?sort=newly, ditambah filter fbrand, fsize, priceU. Jika parser mengumpulkan tautan "kartu → produk serupa → kartu lagi", ia dengan mudah menghasilkan URL dengan kombinasi semua parameter ini, meskipun set produk di dalamnya tumpang tindih hingga 90%.
Di Ozon, cerita serupa dengan parameter ?sorting= dan filter berdasarkan karakteristik produk — di sana kombinasi lebih banyak, karena setiap kategori memiliki set filter sendiri (bahan, volume, warna, dan seterusnya).
Di Avito, masalah terpisah adalah parameter geolokasi dan radius pencarian (?radius=, ?district=). Iklan yang sama dapat "muncul" dalam hasil dengan kombinasi parameter ini yang berbeda, dan parser yang naif akan menganggap ini sebagai temuan yang berbeda, membengkakkan basis data dengan catatan duplikat.
Bagaimana duplikat menghabiskan anggaran untuk proxy dan waktu
Mari kita hitung dengan contoh hipotetis. Misalkan, kategori memiliki 500 produk unik, tetapi karena 8 opsi pengurutan dan 12 kombinasi filter populer, parser tanpa normalisasi URL mengunjungi bukan 500, tetapi 4000-5000 halaman dengan daftar ditambah kunjungan ulang ke kartu yang sama. Jika satu permintaan melalui proxy residensial bernilai satu unit trafik, maka dengan pendekatan naif Anda menghabiskan 8-10 kali lebih banyak daripada yang diperlukan untuk mendapatkan volume data unik yang sama.
Lebih buruk lagi, permintaan ulang dari satu IP ke URL yang mirip adalah pola khas untuk sistem anti-bot. Semakin tinggi frekuensi dan keseragaman permintaan, semakin cepat perlindungan bekerja. Ini menciptakan lingkaran setan: duplikat meningkatkan jumlah permintaan → beban pada kumpulan proxy meningkat → IP diblokir lebih cepat → harus lebih sering mengganti proxy dan memulai ulang pengumpulan → waktu dan biaya pengambilan data meningkat lebih jauh.
Dalam praktiknya, ini terlihat seperti ini: penjual ingin memantau harga 200 pesaing di Wildberries sekali sehari, tetapi karena URL yang tidak dibersihkan, skripnya membuat 15.000 permintaan alih-alih 2.000, terjebak pada batas kumpulan proxy dan mendapatkan data yang tidak lengkap pada malam hari alih-alih pagi.
Bagaimana mendeteksi duplikat sebelum menjalankan parser
Sebelum memperbesar pengumpulan, sebaiknya luangkan waktu satu jam untuk menganalisis struktur URL situs target. Berikut adalah urutan tindakan praktis:
- Buka katalog target di browser dan secara manual telusuri filter dan pengurutan — catat parameter apa yang muncul di bilah alamat.
- Periksa apakah konten halaman berubah saat menambahkan parameter yang tidak mempengaruhi hasil (misalnya, label UTM) — jika kontennya sama, parameter ini perlu diabaikan saat pengumpulan.
- Lihat
rel="canonical"dalam kode sumber halaman — situs sering memberi tahu URL mana yang dianggap "utama" untuk varian yang duplikat. - Kumpulkan sampel uji kecil dari 100-200 URL dan jalankan melalui deduplikasi sederhana berdasarkan parameter kunci — lihat seberapa banyak daftar akan berkurang.
- Periksa robots.txt — terkadang di sana sudah ada direktif Disallow untuk URL yang diparameter, ini juga petunjuk tentang parameter mana yang dianggap "sampah".
Normalisasi URL: aturan dan contoh
Normalisasi adalah proses membawa URL ke bentuk kanonik tunggal sebelum memutuskan apakah perlu untuk mengunjunginya. Prinsip dasar: soroti parameter "signifikan" (misalnya, nomor halaman paginasi atau kategori) dan buang parameter "tidak signifikan" (pengurutan, UTM, pengenal sesi).
Contoh praktis aturan normalisasi untuk katalog mirip Wildberries:
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)
# hanya menyisakan parameter signifikan, yang lainnya dibuang
filtered = [(k, v) for k, v in query if k not in IGNORED_PARAMS]
filtered.sort() # menyusun urutan parameter ke bentuk yang seragam
new_query = up.urlencode(filtered)
return up.urlunparse(parsed._replace(query=new_query))
Setelah normalisasi, semua varian dari daftar yang sama dengan pengurutan yang berbeda akan menyatu menjadi satu URL. Sebelum mengirim permintaan melalui proxy, parser memeriksa apakah alamat yang dinormalisasi ini sudah pernah ditemui — jika ya, ia akan melewatkannya. Ini adalah cara termurah untuk mengurangi jumlah permintaan tanpa kehilangan kelengkapan data.
Untuk kasus yang tidak rumit, logika yang sama dapat diimplementasikan tanpa kode — melalui pengaturan alat pengambilan data: menentukan "abaikan parameter" dan mencantumkan daftar, atau menetapkan ekspresi reguler untuk memotong ekor URL setelah tanda tanya, jika parameter tidak membawa informasi signifikan untuk tugas Anda.
Pengaturan parser untuk mengabaikan parameter
Sebagian besar solusi siap pakai untuk pengumpulan data dari marketplace dan pembuat parser mendukung aturan pengecualian parameter URL di tingkat pengaturan proyek. Berikut adalah hal-hal yang perlu diperiksa dan disesuaikan terlebih dahulu:
- Daftar parameter yang diabaikan. Masukkan semua yang ditemukan pada tahap analisis pengurutan, label UTM, dan pengenal sesi.
- Deduplikasi berdasarkan hash URL yang dinormalisasi. Banyak parser menyimpan daftar alamat yang sudah dikunjungi — penting agar perbandingan dilakukan berdasarkan versi yang dinormalisasi, bukan berdasarkan string asli.
- Pembatasan kedalaman pengunduhan filter. Jika tugasnya adalah mengumpulkan assortimen kategori, satu "pengunduhan dasar" tanpa pengurutan dan filter sudah cukup, bukan pengunduhan rekursif untuk semua kombinasi.
- Prioritaskan paginasi di atas filter. Jika situs memberikan daftar lengkap produk melalui navigasi halaman, biasanya itu sudah cukup — mengunjungi daftar yang sama dengan filter yang diterapkan adalah berlebihan.
Setelah pengaturan ini, jumlah permintaan biasanya berkurang 3-6 kali tergantung pada seberapa "terparameter" katalog situs sumber.
Peran proxy saat memperbesar pengambilan data
Bahkan setelah normalisasi URL yang sempurna, pengambilan data dari katalog besar Wildberries atau Ozon memerlukan distribusi permintaan di antara banyak alamat IP — jika tidak, perlindungan anti-bot akan dengan cepat mendeteksi aktivitas anomali dari satu sumber. Di sini penting untuk memilih jenis proxy yang tepat untuk tugas tersebut.
Untuk pengumpulan besar kartu produk dan pemantauan harga, di mana volume dan kecepatan penting dengan biaya yang wajar, biasanya cukup menggunakan proxy data center — mereka lebih cepat dan lebih murah daripada proxy residensial, yang sangat penting saat melakukan jutaan permintaan per hari. Tetapi jika perlindungan situs secara agresif memblokir rentang IP dari data center, sebaiknya beralih ke proxy residensial, yang terlihat seperti pengguna biasa dari penyedia nyata dan jarang dicurigai.
Untuk tugas spesifik — misalnya, memeriksa bagaimana harga produk tertentu ditampilkan dari perangkat seluler di wilayah tertentu — proxy mobile akan berguna, yang meniru koneksi melalui operator seluler dan hampir tidak pernah diblokir secara massal.
Penting untuk dipahami: pemilihan proxy yang tepat tidak menggantikan normalisasi URL, tetapi melengkapinya. Tanpa pembersihan dari duplikat, Anda hanya akan lebih cepat membakar bahkan kumpulan IP yang paling berkualitas. Pertama, kurangi jumlah permintaan yang tidak berguna, lalu perbesar yang tersisa melalui rotasi proxy — dalam urutan ini, ini memberikan penghematan maksimum.
Daftar periksa sebelum memulai pengumpulan data
Sebelum menjalankan parser pada skala besar, lakukan pemeriksaan singkat pada daftar periksa:
| Poin pemeriksaan | Mengapa ini perlu |
|---|---|
| Daftar parameter pengurutan dan filter telah diidentifikasi | Memahami URL mana yang dapat dianggap duplikat |
| Aturan normalisasi URL telah diatur | Menggabungkan duplikat menjadi satu alamat kanonik |
| Deduplikasi berdasarkan hash diaktifkan | Menghindari pemuatan ulang data yang sama |
| Jenis proxy dipilih sesuai dengan volume dan agresivitas perlindungan | Mengurangi risiko pemblokiran dan mempercepat pengumpulan |
| Batas permintaan per IP ditetapkan dengan cadangan | Menghindari pemblokiran massal pada kumpulan proxy |
Kesimpulan
Filter, pengurutan, dan parameter layanan dalam URL bukan hanya detail teknis, tetapi salah satu sumber utama trafik yang tidak berguna saat mem-parsing marketplace. Tanpa normalisasi URL, parser dapat membuat 5-10 kali lebih banyak permintaan daripada yang diperlukan untuk mendapatkan data yang sama, yang secara langsung berdampak pada anggaran untuk proxy, kecepatan pengumpulan, dan risiko pemblokiran.
Solusinya sederhana dalam formulasi, tetapi membutuhkan disiplin pada tahap persiapan: analisis struktur URL situs target, tentukan parameter mana yang mempengaruhi konten, dan mana yang tidak, atur deduplikasi berdasarkan alamat yang dinormalisasi, dan hanya setelah itu perbesar pengumpulan melalui rotasi proxy. Jika tugas Anda adalah pemantauan harga dan assortimen yang stabil di Wildberries, Ozon, atau Avito dalam volume besar, sebaiknya mulai dengan proxy residensial — mereka memberikan keseimbangan terbaik antara kepercayaan sistem anti-bot dan fleksibilitas pengaturan untuk tugas tertentu.