Pengumpulan data dari forum dan papan iklan adalah tugas yang sangat penting bagi pemasar, analis pasar, dan pemilik bisnis. Parsing Avito untuk memantau harga pesaing, mengumpulkan kontak dari forum industri, menganalisis ulasan di platform khusus — semua tugas ini terhambat oleh satu masalah: situs web secara aktif memblokir pengumpulan data otomatis. Dalam artikel ini, kita akan membahas cara mengatur parsing yang stabil melalui proxy dan menghindari pemblokiran.
Mengapa forum dan papan iklan memblokir parsing
Pemilik platform melindungi data mereka karena beberapa alasan. Pertama, parsing massal menciptakan beban pada server — satu parser dapat menghasilkan ribuan permintaan per jam, yang setara dengan kunjungan situs oleh ratusan pengguna secara bersamaan. Kedua, data yang dikumpulkan sering digunakan oleh pesaing: harga dari Avito masuk ke dalam sistem pemantauan, kontak dari forum — ke dalam basis untuk penjualan dingin.
Sistem perlindungan modern menganalisis banyak parameter: frekuensi permintaan dari satu IP, pola perilaku (parser membuka halaman terlalu cepat dan berurutan), header browser, keberadaan JavaScript. Misalnya, Avito menggunakan perlindungan multi-level: pemeriksaan User-Agent, analisis cookies, fingerprinting browser, captcha saat ada aktivitas mencurigakan.
Tanda-tanda umum yang dapat mengidentifikasi Anda:
- Satu alamat IP — jika semua permintaan berasal dari satu IP, itu adalah pemblokiran instan
- Frekuensi permintaan tinggi — pengguna biasa tidak dapat membuka 10 halaman per detik
- Ketidakadaan cookies dan JavaScript — skrip sederhana tidak menjalankan JS dan tidak menyimpan cookies
- User-Agent mencurigakan — versi lama browser atau ketidakcocokan header
- Pengelolaan halaman yang berurutan — parsing secara ketat sesuai urutan (halaman 1, 2, 3...) terlihat tidak alami
Proxy mana yang cocok untuk parsing forum
Pemilihan jenis proxy tergantung pada volume data, anggaran, dan tingkat perlindungan situs target. Mari kita lihat tiga opsi utama dan penerapannya untuk parsing.
| Jenis Proxy | Kecepatan | Kepercayaan situs | Terbaik untuk |
|---|---|---|---|
| Proxy pusat data | Sangat tinggi (100+ Mbps) | Rendah (mudah terdeteksi) | Forum kecil tanpa perlindungan, parsing arsip |
| Proxy residensial | Sedang (10-50 Mbps) | Tinggi (IP nyata dari jaringan rumah) | Avito, forum besar, situs dengan perlindungan |
| Proxy seluler | Sedang (5-30 Mbps) | Maksimal (IP dari operator seluler) | Platform dengan perlindungan ketat, pengumpulan kontak |
Proxy pusat data — pilihan termurah, cocok untuk tugas sederhana. Jika Anda perlu mem-parsing forum tematik kecil atau papan iklan tanpa perlindungan serius, ini sudah cukup. Kecepatan memungkinkan untuk memproses puluhan ribu halaman per jam. Namun, Avito, YouDo, forum.ru, dan platform besar lainnya dengan cepat akan mendeteksi IP semacam ini dan memblokirnya.
Proxy residensial — keseimbangan optimal antara harga dan kualitas untuk sebagian besar tugas. Ini adalah IP nyata dari pengguna rumah, yang tidak dapat dibedakan oleh situs dari pengunjung biasa. Untuk parsing Avito, Yandex.Services, forum besar, ini adalah pilihan standar. Poin penting: proxy residensial biasanya dijual dengan pembayaran berdasarkan lalu lintas, jadi optimalkan permintaan — jangan muat gambar dan skrip yang tidak perlu.
Proxy seluler — keandalan maksimum untuk kasus yang sulit. IP dari operator seluler (MTS, Beeline, MegaFon) memiliki tingkat kepercayaan tertinggi, karena satu IP dapat digunakan oleh ribuan pengguna nyata (teknologi CGNAT). Gunakan untuk platform dengan perlindungan ketat atau saat Anda perlu mengumpulkan data yang sangat penting tanpa risiko pemblokiran.
Parsing Avito: fitur dan pengaturan
Avito adalah salah satu platform paling terlindungi di Runet. Sistem anti-parsing mencakup pemeriksaan JavaScript, fingerprinting browser, analisis perilaku, captcha saat ada kecurigaan. Skrip sederhana dengan requests tidak akan berhasil — Anda akan mendapatkan halaman kosong atau captcha pada permintaan ketiga.
Apa yang diperlukan untuk parsing Avito yang stabil:
Komponen wajib:
1. Proxy residensial atau seluler dengan rotasi setiap 5-10 menit
2. Browser headless (Selenium, Puppeteer, Playwright) untuk menjalankan JavaScript
3. Header browser dan User-Agent yang realistis dari versi Chrome terbaru
4. Penundaan antara permintaan: 3-7 detik per halaman
5. Menyimpan cookies antara sesi
Tugas umum — memantau harga pesaing. Anda perlu mengumpulkan iklan setiap hari dalam kategori Anda dan melacak perubahan. Untuk kategori dengan 500-1000 iklan, Anda akan membutuhkan sekitar 50-100 permintaan (dengan mempertimbangkan pagination dan kartu produk). Dengan pengaturan yang benar, ini akan memakan waktu 10-15 menit dan 1-2 GB lalu lintas dari proxy residensial.
Panduan langkah demi langkah untuk mengatur parser untuk Avito:
- Dapatkan proxy — pesan kumpulan IP residensial dengan rotasi. Untuk pemantauan harian satu kategori, cukup 10-20 GB lalu lintas per bulan.
- Atur browser headless — gunakan Selenium atau Puppeteer. Penting: aktifkan mode headless, tetapi tambahkan parameter untuk menghindari deteksi (window.navigator.webdriver = false).
- Atur proxy di browser — sampaikan data proxy saat meluncurkan browser. Untuk Selenium, ini adalah parameter --proxy-server, untuk Puppeteer — args di puppeteer.launch().
- Tambahkan perilaku yang realistis — penundaan acak 3-7 detik, menggulir halaman sebelum mengumpulkan data, gerakan mouse (untuk Selenium).
- Simpan cookies — setelah kunjungan pertama, simpan cookies dan gunakan di sesi berikutnya. Ini mengurangi kecurigaan.
- Ganti IP secara teratur — rotasi setiap 5-10 menit atau setiap 20-30 permintaan. Jangan gunakan satu IP untuk seluruh parsing.
Kesalahan kritis pemula adalah mem-parsing terlalu cepat. Bahkan dengan proxy, jika Anda membuka halaman setiap detik, sistem akan mendeteksi bot berdasarkan pola perilaku. Pengguna biasa membaca iklan selama 10-30 detik, menggulir ke bawah, kembali ke pencarian. Parser Anda harus meniru ini: penundaan, menggulir, terkadang berpindah ke kategori tetangga.
Pengumpulan data dari forum: strategi dan alat
Forum bervariasi dalam tingkat perlindungan. Forum lama di phpBB atau vBulletin biasanya tidak memiliki perlindungan anti-bot yang serius — cukup dengan proxy pusat data dan parser sederhana. Platform modern (forum.ru, forum industri khusus) menggunakan Cloudflare atau sistem perlindungan mereka sendiri.
Tugas umum parsing forum:
- Pengumpulan kontak — email, telepon, Telegram dari tanda tangan dan pesan pengguna
- Memantau penyebutan merek — melacak ulasan tentang perusahaan Anda atau pesaing
- Analisis sentimen — mengumpulkan pendapat tentang produk, layanan, tren di industri
- Mencari prospek — orang-orang yang mencari solusi untuk masalah Anda (misalnya, di forum konstruksi mencari kontraktor)
Untuk forum kecil (hingga 10.000 halaman), alat siap pakai seperti Octoparse, ParseHub, WebHarvy sudah cukup. Mereka memiliki antarmuka visual — Anda cukup mengklik elemen yang ingin dikumpulkan, dan alat tersebut akan membuat parser. Dalam pengaturan, Anda menyebutkan proxy, penundaan, dan memulai pengumpulan.
Untuk proyek besar (ratusan ribu halaman), diperlukan parser kustom. Kerangka kerja populer: Scrapy (Python), Puppeteer (JavaScript), Playwright (mendukung semua bahasa). Mereka memungkinkan Anda untuk mengatur logika pengelolaan, penanganan kesalahan, dan parsing terdistribusi melalui kumpulan proxy.
Contoh strategi untuk parsing forum industri:
Tugas: mengumpulkan kontak spesialis dari forum konstruksi (50.000 pengguna, 500.000 pesan).
1. Gunakan proxy residensial dengan kumpulan 50-100 IP
2. Parsing daftar pengguna (50.000 profil) dengan kecepatan 500 profil/jam (penundaan 7 detik)
3. Ganti IP setiap 100 profil (setiap 12 menit)
4. Dari profil, ekstrak email, situs, tanda tangan dengan kontak
5. Total waktu: 100 jam (4 hari kerja terus menerus)
6. Lalu lintas: sekitar 20-30 GB dari proxy residensial
Poin penting: banyak forum memerlukan pendaftaran untuk melihat kontak atau bagian tersembunyi. Buat beberapa akun sebelumnya (secara manual, dari IP yang berbeda), biarkan selama 1-2 minggu, buat beberapa pesan. Gunakan akun ini untuk parsing — pengguna yang terautentikasi memicu lebih sedikit kecurigaan.
Rotasi IP dan manajemen sesi
Rotasi IP yang benar adalah kunci untuk parsing yang stabil dalam jangka panjang. Ada dua pendekatan utama: rotasi berdasarkan waktu dan rotasi berdasarkan jumlah permintaan.
Rotasi berdasarkan waktu: ganti IP setiap N menit. Cocok untuk tugas di mana prediktabilitas penting. Misalnya, Anda mem-parsing Avito setiap 5 menit dengan mengganti IP — ini menjamin Anda tidak akan melebihi batas permintaan dari satu alamat. Kekurangan: jika parser mengalami masalah atau melambat, Anda akan kehilangan IP tanpa hasil.
Rotasi berdasarkan permintaan: ganti IP setiap N permintaan (misalnya, setiap 20-50 halaman). Penggunaan proxy yang lebih efisien, tetapi memerlukan perhitungan yang tepat. Jika situs membatasi 100 permintaan dari IP per jam, atur rotasi pada 80 permintaan — menyisakan cadangan untuk kesalahan.
| Platform | Rotasi yang disarankan | Penundaan antara permintaan |
|---|---|---|
| Avito | Setiap 5-10 menit atau 20-30 permintaan | 3-7 detik |
| YouDo, Profi.ru | Setiap 10-15 menit atau 40-50 permintaan | 4-8 detik |
| Forum dengan Cloudflare | Setiap 15-20 menit atau 60-80 permintaan | 5-10 detik |
| Forum sederhana (phpBB, vBulletin) | Setiap 30-60 menit atau 200-300 permintaan | 2-5 detik |
Manajemen sesi: saat Anda mengganti IP, putuskan — apakah akan mereset sesi (cookies, localStorage) atau menyimpannya. Untuk parsing yang terautentikasi (forum, akun pribadi) simpan sesi, tetapi ganti IP lebih jarang — jika tidak, situs akan curiga bahwa akun telah diretas (login dari kota yang berbeda). Untuk data publik (Avito tanpa otorisasi) reset semuanya saat mengganti IP — setiap IP terlihat seperti pengguna baru.
Teknik lanjutan — sticky sessions (sesi lengket). Beberapa penyedia proxy memungkinkan Anda untuk "mengunci" IP selama 10-30 menit. Anda mendapatkan satu IP, melakukan semua permintaan dari IP tersebut dalam kerangka tugas logis (misalnya, parsing satu kategori Avito), kemudian mengganti dengan IP baru untuk kategori berikutnya. Ini lebih alami daripada mengganti IP di tengah pengamatan.
Pengaturan parser populer untuk proxy
Mari kita lihat pengaturan proxy di alat populer untuk parsing. Contoh untuk spesialis teknis yang menulis parser mereka sendiri.
Scrapy (Python): tambahkan middleware untuk rotasi proxy. Buat daftar proxy di settings.py dan gunakan middleware RandomProxy untuk rotasi otomatis pada setiap permintaan.
# settings.py
ROTATING_PROXY_LIST = [
'http://user:pass@proxy1.example.com:8000',
'http://user:pass@proxy2.example.com:8000',
'http://user:pass@proxy3.example.com:8000',
]
DOWNLOADER_MIDDLEWARES = {
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
Puppeteer (JavaScript): sampaikan proxy saat meluncurkan browser. Untuk rotasi, buat kumpulan proxy dan pilih secara acak pada setiap peluncuran browser baru.
const puppeteer = require('puppeteer');
const proxyList = [
'proxy1.example.com:8000',
'proxy2.example.com:8000'
];
const proxy = proxyList[Math.floor(Math.random() * proxyList.length)];
const browser = await puppeteer.launch({
args: [
`--proxy-server=${proxy}`,
'--no-sandbox'
]
});
// Otorisasi proxy
const page = await browser.newPage();
await page.authenticate({
username: 'user',
password: 'pass'
});
Selenium (Python): atur proxy melalui opsi Chrome. Untuk otorisasi HTTP, gunakan ekstensi atau sampaikan kredensial dalam URL.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://user:pass@proxy.example.com:8000')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.avito.ru/moskva/kvartiry')
Parser siap pakai (Octoparse, ParseHub): dalam pengaturan tugas, temukan bagian "Proxy" atau "Rotasi IP". Tambahkan daftar proxy dalam format host:port:user:pass atau sebutkan URL API untuk rotasi. Aktifkan opsi "Rotate on each request" atau "Rotate every N minutes".
Teknik menghindari perlindungan anti-bot
Proxy menyelesaikan masalah pemblokiran berdasarkan IP, tetapi sistem perlindungan modern menganalisis puluhan parameter lainnya. Berikut adalah langkah-langkah untuk menghindari sistem anti-bot.
1. User-Agent dan header yang realistis: gunakan versi terbaru dari browser. Jangan gunakan User-Agent dari Chrome 90, jika saat ini sudah ada Chrome 120. Periksa kesesuaian header: jika User-Agent mengatakan "Windows", tetapi header sec-ch-ua-platform mengatakan "Linux" — Anda akan terdeteksi.
# Kumpulan header yang baik untuk tahun 2024
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
2. Menghindari deteksi browser headless: Selenium dan Puppeteer secara default memiliki tanda otomatisasi (sifat navigator.webdriver = true). Gunakan plugin stealth atau patch untuk menyembunyikan tanda-tanda ini.
// Plugin Stealth Puppeteer
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({headless: true});
3. Fingerprinting JavaScript: situs web mengumpulkan sidik jari browser (canvas fingerprint, WebGL, font, resolusi layar). Untuk menghindari, gunakan randomisasi parameter ini atau profil browser nyata. Alat: FingerprintJS Randomizer, Multilogin (platform dengan profil siap pakai).
4. Penanganan captcha: jika captcha muncul, gunakan layanan pengenalan: 2Captcha, Anti-Captcha, CapMonster. Biayanya $1-3 untuk 1000 captcha. Integrasi melalui API memakan waktu 10-15 menit. Untuk reCAPTCHA v2/v3 ada pustaka siap pakai.
5. Pola perilaku: tambahkan kebetulan dalam tindakan. Jangan membuka halaman setiap 5 detik secara ketat — variasikan dari 3 hingga 8 detik. Terkadang lakukan jeda selama 30-60 detik, meniru membaca halaman panjang. Di forum, terkadang kunjungi profil pengguna, bukan hanya mengumpulkan topik.
Penting: Semakin kompleks perlindungan situs, semakin lambat parser harus bekerja. Untuk Avito, optimal 500-1000 halaman per jam dari satu aliran. Jika perlu lebih banyak — jalankan beberapa parser paralel dengan kumpulan proxy yang berbeda, tetapi masing-masing harus bekerja lambat dan alami.
Kesimpulan
Parsing forum dan papan iklan adalah tugas yang memerlukan pendekatan komprehensif. Proxy menyelesaikan masalah pemblokiran berdasarkan IP, tetapi untuk kerja yang stabil diperlukan header yang benar, perilaku yang realistis, menghindari fingerprinting, dan rotasi yang cerdas. Pemilihan jenis proxy tergantung pada tingkat perlindungan situs target: untuk forum sederhana, cukup dengan pusat data, untuk Avito dan platform besar diperlukan IP residensial atau seluler.
Prinsip kunci untuk parsing yang sukses: perlahan dan alami, rotasi IP secara teratur, penggunaan browser headless untuk situs yang kompleks, penanganan captcha jika diperlukan. Jangan terburu-buru untuk kecepatan — lebih baik mengumpulkan 500 halaman per jam secara stabil selama berbulan-bulan daripada 5000 per jam dan mendapatkan pemblokiran dalam dua hari.
Jika Anda berencana untuk mem-parsing Avito, YouDo, forum besar, atau platform dengan perlindungan serius, kami sarankan untuk menggunakan proxy residensial — mereka memberikan keseimbangan optimal antara keandalan dan biaya. Untuk platform yang sangat terlindungi atau pengumpulan data yang sangat penting, proxy seluler dengan tingkat kepercayaan maksimum akan cocok.