Scraping job boards adalah salah satu skenario pengumpulan data yang paling diminati untuk analitik HR, pemantauan pasar tenaga kerja, dan otomasi rekrutmen. Namun situs lowongan kerja secara aktif melindungi diri dari pengumpulan data otomatis: memblokir IP setelah 50-100 permintaan, menampilkan captcha, dan memblokir akun yang mencurigakan. Dalam artikel ini kita akan membahas cara mengatur proksi dengan benar untuk scraping stabil hh.ru, Superjob, LinkedIn, dan platform lainnya tanpa pemblokiran.
Mengapa job boards memblokir scraping dan bagaimana perlindungan bekerja
Situs lowongan kerja kehilangan uang karena scraping: data dijual ke pesaing, agregator dibuat tanpa lisensi, pemberi kerja melewati penempatan berbayar. Oleh karena itu, semua platform besar telah menerapkan perlindungan berlapis dari pengumpulan data otomatis.
Metode perlindungan utama job boards:
- Rate limiting per IP — hh.ru memblokir IP setelah 80-120 permintaan per jam, Superjob — setelah 50-70 permintaan. Pemblokiran bisa berlangsung dari 1 jam hingga sehari.
- Browser fingerprinting — situs menganalisis User-Agent, header HTTP, resolusi layar, font yang terinstal. Jika data tidak sesuai dengan browser asli — permintaan diblokir.
- Pemeriksaan JavaScript — banyak situs menggunakan Cloudflare atau skrip sendiri untuk memeriksa bahwa permintaan berasal dari browser asli, bukan bot.
- Jebakan Honeypot — tautan dan field tersembunyi yang hanya terlihat oleh scraper. Jika bot mengikutinya — IP masuk daftar hitam.
- Captcha saat aktivitas mencurigakan — muncul setelah serangkaian permintaan cepat atau saat menggunakan IP data center.
Tanpa proksi Anda hanya bisa scraping maksimal 100-200 lowongan, setelah itu IP Anda akan diblokir. Untuk pengumpulan data skala besar (ribuan lowongan setiap hari) proksi menjadi alat wajib.
Penting: Scraping harus sesuai dengan ketentuan penggunaan situs. Banyak job boards menyediakan API resmi untuk akses legal ke data. Misalnya, hh.ru memiliki API gratis dengan batas permintaan yang cocok untuk sebagian besar tugas.
Jenis proksi mana yang dipilih untuk scraping lowongan kerja
Pemilihan jenis proksi tergantung pada skala scraping, anggaran, dan persyaratan kecepatan. Mari kita bahas tiga opsi utama dengan skenario penggunaan spesifik.
| Jenis Proksi | Kecepatan | Risiko Ban | Kapan Digunakan |
|---|---|---|---|
| Data Center | Tinggi (50-200 ms) | Tinggi | Testing scraper, pengumpulan data publik tanpa otorisasi |
| Residential | Sedang (200-800 ms) | Rendah | Scraping skala besar hh.ru, Superjob dengan rotasi IP |
| Mobile | Sedang (300-1000 ms) | Sangat Rendah | Scraping dengan otorisasi, bypass perlindungan ketat LinkedIn |
Proksi Data Center untuk scraping
Ini adalah opsi tercepat dan termurah, tetapi dengan keterbatasan. IP data center mudah dikenali oleh situs, jadi hanya cocok untuk tugas sederhana: scraping daftar lowongan tanpa otorisasi, pengumpulan data publik, testing scraper sebelum diluncurkan di proksi residential.
Kapan proksi data center berfungsi:
- Scraping volume kecil data (hingga 500 lowongan per hari)
- Pengumpulan data dari situs tanpa perlindungan ketat (job boards regional kecil)
- Penggunaan API resmi dengan rotasi IP untuk bypass rate limits
- Scraping RSS feed dan file XML lowongan
Untuk hh.ru dan Superjob proksi data center akan bekerja tidak stabil: Anda akan mendapat captcha setelah 20-30 permintaan, dan banyak IP sudah ada di daftar hitam situs-situs ini.
Proksi Residential — pilihan optimal untuk job boards
Proksi residential menggunakan alamat IP pengguna rumahan asli, sehingga situs menganggapnya sebagai pengunjung biasa. Ini adalah keseimbangan optimal antara harga dan kualitas untuk scraping lowongan kerja.
Keuntungan untuk scraping job boards:
- Risiko pemblokiran rendah — hh.ru dan Superjob tidak bisa membedakan IP residential dari pengguna asli
- Pool IP besar — dapat mengatur rotasi setiap permintaan atau setiap 5-10 menit
- Pengikatan geografis — dapat scraping lowongan dari kota tertentu menggunakan IP wilayah tersebut
- Stabilitas — satu IP residential dapat memproses 200-500 permintaan tanpa pemblokiran
Untuk scraping skala besar (lebih dari 1000 lowongan per hari) proksi residential dengan rotasi IP adalah solusi standar. Anda mengatur pergantian IP setiap 5-10 menit, menambahkan jeda acak antar permintaan (3-7 detik) dan mendapatkan pengumpulan data stabil tanpa pemblokiran.
Proksi Mobile untuk LinkedIn dan scraping dengan otorisasi
Proksi mobile menggunakan IP operator seluler. Keuntungan utamanya — satu IP digunakan oleh ratusan pengguna asli secara bersamaan, sehingga situs tidak bisa memblokir alamat tersebut tanpa risiko memblokir ribuan pengunjung biasa.
Kapan proksi mobile diperlukan:
- Scraping LinkedIn — platform ini memiliki perlindungan paling ketat dari bot dan secara agresif memblokir IP data center dan bahkan residential
- Bekerja dengan otorisasi — jika Anda perlu scraping lowongan tertutup atau data profil, IP mobile mengurangi risiko ban akun
- Scraping job boards luar negeri — Indeed, Glassdoor, Monster menggunakan sistem perlindungan canggih di mana IP mobile bekerja lebih andal
- Bypass pemblokiran ketat — jika proksi residential Anda mulai mendapat captcha, beralih ke mobile akan menyelesaikan masalah
Kekurangan proksi mobile — harga tinggi dan kecepatan lebih rendah. Tetapi untuk tugas kritis di mana pemblokiran tidak dapat diterima, ini adalah pilihan terbaik.
Fitur scraping hh.ru: perlindungan dan cara bypass
hh.ru — situs lowongan kerja terbesar di Rusia dengan perlindungan paling canggih dari scraping di antara job boards domestik. Situs menggunakan kombinasi rate limiting, fingerprinting, dan analisis perilaku untuk mendeteksi bot.
Bagaimana perlindungan hh.ru bekerja
1. Batas per alamat IP: Setelah 80-120 permintaan per jam dari satu IP, situs mulai menampilkan captcha atau mengembalikan HTTP 429 (Too Many Requests). Pemblokiran berlangsung dari 1 hingga 6 jam tergantung pada agresivitas scraping.
2. Pemeriksaan User-Agent dan header: hh.ru menganalisis header permintaan HTTP. Jika User-Agent tidak sesuai dengan browser asli atau header standar hilang (Accept-Language, Accept-Encoding), permintaan diblokir.
3. Pemeriksaan JavaScript: Beberapa halaman hh.ru memerlukan eksekusi JavaScript untuk memuat data. Parser HTTP sederhana tanpa headless browser tidak akan bisa mendapatkan konten lengkap.
4. Tautan Honeypot: Di halaman ada elemen tersembunyi yang hanya terlihat oleh scraper. Jika skrip Anda mengikuti tautan ini — IP masuk daftar hitam selama 24 jam.
Strategi bypass perlindungan hh.ru dengan proksi
Untuk scraping stabil hh.ru tanpa pemblokiran gunakan konfigurasi berikut:
Pengaturan optimal untuk scraping hh.ru:
- Jenis proksi: Residential dengan rotasi IP setiap 5-10 menit
- Jeda antar permintaan: 4-8 detik (nilai acak)
- User-Agent: Rotasi User-Agent asli browser modern (Chrome, Firefox, Safari versi terbaru)
- Header: Set lengkap header browser standar (Accept, Accept-Language, Accept-Encoding, Referer)
- Cookies: Penyimpanan dan pengiriman cookies antar permintaan dalam satu sesi
- Batas permintaan: Tidak lebih dari 60-80 permintaan per IP, setelah itu ganti proksi
Contoh urutan tindakan yang aman:
- Terhubung ke proksi residential dengan IP dari wilayah yang diperlukan (misalnya, Moskow)
- Buat permintaan pertama ke halaman utama hh.ru, dapatkan dan simpan cookies
- Tunggu 5-7 detik (imitasi membaca halaman)
- Buat permintaan ke halaman pencarian lowongan dengan filter yang diperlukan
- Scraping daftar lowongan (biasanya 20-50 per halaman)
- Untuk setiap lowongan buat permintaan ke halaman detail dengan jeda 4-6 detik
- Setelah 60-70 permintaan ganti proksi dan ulangi siklus
Dengan strategi ini Anda dapat scraping 1000-2000 lowongan per hari dari satu thread tanpa satu pun pemblokiran. Jika perlu volume lebih besar — jalankan beberapa thread paralel dengan proksi berbeda.
Tips: hh.ru menyediakan API gratis untuk akses ke lowongan. Untuk sebagian besar tugas (analisis pasar tenaga kerja, pemantauan gaji) API akan menjadi solusi yang lebih stabil daripada scraping HTML. Proksi dapat digunakan untuk rotasi IP saat bekerja dengan API untuk bypass rate limits.
Scraping Superjob, LinkedIn dan platform luar negeri
Superjob: fitur perlindungan
Superjob memiliki perlindungan yang kurang ketat dibandingkan hh.ru, tetapi tetap aktif melawan scraping. Perbedaan utama:
- Rate limit lebih rendah: Pemblokiran terjadi setelah 50-70 permintaan per jam (versus 80-120 di hh.ru)
- Pemeriksaan header kurang ketat: Dapat menggunakan set header yang disederhanakan
- Tidak ada perlindungan JavaScript: Sebagian besar data tersedia melalui permintaan HTTP sederhana tanpa headless browser
- Pemblokiran regional: Beberapa lowongan hanya tersedia dengan IP dari wilayah tertentu
Untuk Superjob cukup proksi residential dengan rotasi setiap 10-15 menit dan jeda antar permintaan 3-5 detik. Ini memungkinkan scraping stabil 500-1000 lowongan per hari.
LinkedIn: perlindungan paling ketat
LinkedIn — ini cerita tersendiri. Platform menggunakan algoritma machine learning canggih untuk mendeteksi bot dan memiliki salah satu sistem perlindungan paling agresif di antara semua media sosial dan job boards.
Fitur perlindungan LinkedIn:
- Otorisasi wajib: Sebagian besar data hanya tersedia untuk pengguna yang terotorisasi
- Analisis perilaku: LinkedIn menganalisis pola tindakan: kecepatan scrolling, gerakan mouse, waktu di halaman
- Pemblokiran akun: Saat aktivitas mencurigakan tidak hanya IP yang diblokir, tetapi akun itu sendiri
- Batasan tampilan profil: Akun gratis dapat melihat jumlah profil terbatas per bulan
- Eksekusi JavaScript wajib: Tanpa headless browser scraping tidak mungkin
Strategi scraping LinkedIn:
- Gunakan proksi mobile — memberikan risiko pemblokiran paling rendah. Satu IP mobile dapat digunakan untuk 100-200 tampilan profil per hari.
- Headless browser wajib — gunakan Puppeteer atau Playwright dengan pengaturan fingerprint browser asli (resolusi layar, WebGL, Canvas).
- Kecepatan scraping lambat — tidak lebih dari 20-30 profil per jam dari satu akun. Tambahkan jeda 10-20 detik antar tampilan.
- Imitasi perilaku asli — scrolling halaman, klik acak, transisi antar bagian profil.
- Pemanasan akun — akun LinkedIn baru tidak bisa langsung digunakan untuk scraping. Perlu 1-2 minggu mengimitasi aktivitas pengguna biasa.
- Rotasi akun — gunakan beberapa akun dengan proksi berbeda untuk mendistribusikan beban.
Scraping LinkedIn adalah tugas paling sulit di antara semua job boards. Jika Anda memerlukan data dari platform ini, pertimbangkan menggunakan Sales Navigator API resmi atau layanan pihak ketiga yang menyediakan data secara legal.
Job boards luar negeri: Indeed, Glassdoor, Monster
Platform luar negeri biasanya memiliki perlindungan lebih ketat daripada situs Rusia (kecuali hh.ru). Fitur utama:
- Indeed — menggunakan Cloudflare dengan pemeriksaan JavaScript. Perlu headless browser dan proksi residential/mobile dari negara yang lowongannya Anda scraping.
- Glassdoor — memerlukan otorisasi untuk melihat sebagian besar data. Secara aktif memblokir IP data center. Gunakan proksi residential dan kecepatan scraping lambat (jeda 8-12 detik).
- Monster — memiliki API untuk mitra, tetapi untuk scraping HTML perlu proksi residential dengan pengikatan geografis ke negara yang diperlukan.
Untuk semua platform luar negeri pengikatan geografis proksi sangat penting. Jika Anda scraping lowongan di AS, gunakan IP residential Amerika. Permintaan dengan IP dari negara lain dapat menimbulkan kecurigaan dan menyebabkan pemblokiran.
Pengaturan rotasi IP dan jeda antar permintaan
Pengaturan rotasi proksi yang benar adalah kunci scraping stabil tanpa pemblokiran. Mari kita bahas dua strategi utama: rotasi setiap permintaan dan rotasi berdasarkan waktu.
Rotasi setiap permintaan (Rotating Proxies)
Dengan pendekatan ini setiap permintaan HTTP menggunakan alamat IP baru. Ini metode paling aman, tetapi memiliki keterbatasan:
Keuntungan:
- Tidak mungkin melacak aktivitas satu IP
- Dapat membuat lebih banyak permintaan per satuan waktu
- Tidak perlu melacak batas setiap IP
Kekurangan:
- Tidak mungkin mempertahankan sesi (cookies hilang saat ganti IP)
- Tidak cocok untuk scraping dengan otorisasi
- Beberapa situs memblokir permintaan jika IP berubah terlalu sering
Rotasi setiap permintaan cocok untuk scraping halaman publik hh.ru dan Superjob tanpa otorisasi. Dikonfigurasi melalui parameter penyedia proksi (biasanya ini endpoint khusus dengan rotasi otomatis).
Rotasi berdasarkan waktu (Sticky Sessions)
Dengan pendekatan ini satu IP digunakan selama waktu tertentu (5-30 menit), setelah itu terjadi pergantian otomatis. Ini varian optimal untuk sebagian besar tugas scraping job boards.
Interval rotasi yang direkomendasikan:
| Situs | Interval Rotasi | Maks. Permintaan per IP | Jeda Antar Permintaan |
|---|---|---|---|
| hh.ru | 5-10 menit | 60-80 | 4-8 detik |
| Superjob | 10-15 menit | 50-70 | 3-5 detik |
| 30-60 menit | 20-40 | 10-20 detik | |
| Indeed | 10-20 menit | 40-60 | 5-10 detik |
| Glassdoor | 15-30 menit | 30-50 | 8-12 detik |
Pengaturan jeda acak
Jeda tetap antar permintaan (misalnya, tepat 5 detik) terlihat mencurigakan bagi sistem perlindungan. Pengguna asli tidak bisa bertindak dengan presisi seperti itu. Selalu gunakan jeda acak dalam rentang.
Contoh implementasi jeda acak:
// Python
import time
import random
# Jeda dari 4 hingga 8 detik
delay = random.uniform(4, 8)
time.sleep(delay)
# Logika lebih kompleks: kadang buat jeda panjang
if random.random() < 0.1: # Probabilitas 10%
time.sleep(random.uniform(15, 30)) # Imitasi gangguan pengguna
else:
time.sleep(random.uniform(4, 8))
// JavaScript / Node.js
const sleep = (min, max) => {
const delay = Math.random() * (max - min) + min;
return new Promise(resolve => setTimeout(resolve, delay * 1000));
};
// Penggunaan
await sleep(4, 8); // Jeda 4-8 detik
// Dengan probabilitas jeda panjang
if (Math.random() < 0.1) {
await sleep(15, 30); // Probabilitas 10% jeda panjang
} else {
await sleep(4, 8);
}
Menambahkan jeda panjang acak (15-30 detik) dengan probabilitas 5-10% membuat perilaku scraper lebih mirip pengguna asli yang mungkin terganggu oleh panggilan telepon atau tugas lain.
Penanganan captcha dan pemblokiran lainnya
Bahkan dengan pengaturan proksi dan jeda yang benar, Anda mungkin menghadapi captcha atau jenis pemblokiran lainnya. Mari kita bahas cara bereaksi dengan benar terhadap situasi ini.
Jenis pemblokiran job boards
1. HTTP 429 Too Many Requests — jenis pemblokiran paling umum. Situs secara eksplisit memberi tahu bahwa Anda melebihi batas permintaan. Biasanya di header respons ada Retry-After yang menunjukkan berapa detik Anda dapat mengulangi permintaan.
Cara menangani: Segera ganti proksi dan tambahkan IP saat ini ke daftar hitam untuk waktu yang ditunjukkan di Retry-After (biasanya 1-6 jam). Jika Retry-After tidak ada, tambahkan IP ke daftar hitam selama 2 jam.
2. HTTP 403 Forbidden — IP diblokir di tingkat server. Ini pemblokiran lebih serius yang bisa berlangsung dari beberapa jam hingga sehari.
Cara menangani: Ganti proksi dan tambahkan IP ke daftar hitam jangka panjang (24 jam). Analisis log: mungkin Anda scraping terlalu agresif atau menggunakan IP data center di mana residential diperlukan.
3. Captcha (CAPTCHA) — situs menampilkan verifikasi "saya bukan robot". Ini berarti perilaku Anda terlihat mencurigakan, tetapi IP belum diblokir sepenuhnya.
Cara menangani: Ada tiga opsi:
- Ganti proksi — cara paling sederhana. IP saat ini ditambahkan ke daftar hitam selama 6-12 jam.
- Penyelesaian captcha otomatis — menggunakan layanan seperti 2Captcha, Anti-Captcha, CapSolver. Biayanya $1-3 per 1000 penyelesaian.
- Penyelesaian manual — jika scraping tidak kritis waktu, dapat mengirim captcha untuk penyelesaian manual oleh operator.
4. Cloudflare Challenge — pemeriksaan JavaScript yang memerlukan eksekusi kode di browser. Library HTTP biasa tidak akan melewati pemeriksaan ini.
Cara menangani: Gunakan headless browser (Puppeteer, Playwright, Selenium) dengan pengaturan fingerprint asli. Library seperti puppeteer-extra-plugin-stealth membantu bypass deteksi mode headless.
Integrasi layanan penyelesaian captcha
Jika Anda memutuskan untuk menyelesaikan captcha secara otomatis, berikut contoh integrasi dengan layanan populer 2Captcha:
// Python menggunakan library 2captcha-python
from twocaptcha import TwoCaptcha
import requests
solver = TwoCaptcha('YOUR_API_KEY')
try:
# Penyelesaian reCAPTCHA v2
result = solver.recaptcha(
sitekey='6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
url='https://hh.ru/search/vacancy',
proxy={
'type': 'HTTPS',
'uri': 'login:password@ip:port'
}
)
# Dapatkan token penyelesaian
captcha_token = result['code']
# Kirim permintaan dengan token
response = requests.post(
'https://hh.ru/search/vacancy',
data={
'g-recaptcha-response': captcha_token,
# parameter form lainnya
},
proxies={
'http': 'http://login:password@ip:port',
'https': 'http://login:password@ip:port'
}
)
except Exception as e:
print(f'Kesalahan penyelesaian captcha: {e}')
Penyelesaian satu captcha memakan waktu 10-30 detik dan biaya sekitar $0.001-0.003. Untuk scraping skala besar ini bisa mahal, jadi lebih baik mengatur scraping agar captcha muncul sesedikit mungkin.
Sistem pemantauan dan alert
Untuk operasi scraper yang stabil penting mengatur pemantauan pemblokiran dan alert otomatis:
Yang perlu dipantau:
- Persentase permintaan sukses — jika turun di bawah 90%, perlu memeriksa proksi dan pengaturan
- Jumlah captcha per jam — jika lebih dari 5-10, Anda scraping terlalu agresif
- Kecepatan respons proksi rata-rata — jika meningkat tajam, mungkin proksi kelebihan beban
- Jumlah error 429/403 — indikator kualitas proksi dan kebenaran pengaturan
- Daftar IP yang diblokir — jika IP yang sama terus diblokir, keluarkan dari pool
Atur pengiriman notifikasi (Telegram, email, Slack) jika persentase permintaan sukses turun di bawah nilai ambang. Ini memungkinkan bereaksi cepat terhadap masalah dan tidak kehilangan waktu scraping.
Pengaturan proksi di tools scraping populer
Mari kita bahas cara mengatur proksi di tools paling populer untuk scraping job boards: Python (requests, Scrapy), Node.js (axios, Puppeteer) dan solusi siap pakai.
Python: requests dan Scrapy
Python — bahasa paling populer untuk scraping berkat library requests, BeautifulSoup, dan Scrapy.
Contoh dengan library requests:
import requests
import random
import time
# Daftar proksi (dapatkan dari penyedia)
PROXIES = [
'http://user:[email protected]:8080',
'http://user:[email protected]:8080',
'http://user:[email protected]:8080'
]
# Daftar User-Agent untuk rotasi
USER_AGENTS = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
]
def parse_vacancy(url):
proxy = random.choice(PROXIES)
user_agent = random.choice(USER_AGENTS)
headers = {
'User-Agent': user_agent,
'Accept': 'text/html,application/xhtml+xml',
'Accept-Language': 'ru-RU,ru;q=0.9,en;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive'
}
proxies = {
'http': proxy,
'https': proxy
}
try:
response = requests.get(
url,
headers=headers,
proxies=proxies,
timeout=30
)
if response.status_code == 200:
return response.text
elif response.status_code == 429:
print(f'Rate limit untuk {proxy}, ganti proksi')
# Hapus proksi dari daftar sementara
return None
else:
print(f'Error {response.status_code}')
return None
except Exception as e:
print(f'Error permintaan: {e}')
return None
# Penggunaan
for i in range(100):
html = parse_vacancy('https://hh.ru/vacancy/123456')
if html:
# Pemrosesan data
pass
# Jeda acak
time.sleep(random.uniform(4, 8))
Contoh pengaturan Scrapy:
# settings.py
# Aktifkan dukungan proksi
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
'scrapy_rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'scrapy_rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}
# Daftar proksi
ROTATING_PROXY_LIST = [
'http://user:[email protected]:8080',
'http://user:[email protected]:8080',
'http://user:[email protected]:8080'
]
# Deteksi ban otomatis
ROTATING_PROXY_BAN_POLICY = 'scrapy_rotating_proxies.policy.BanDetectionPolicy'
# Jeda antar permintaan
DOWNLOAD_DELAY = 5
RANDOMIZE_DOWNLOAD_DELAY = True # Jeda acak ±50%
# Rotasi User-Agent
DOWNLOADER_MIDDLEWARES.update({
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_user_agents.middlewares.RandomUserAgentMiddleware': 400,
})
# Maksimum permintaan bersamaan
CONCURRENT_REQUESTS = 4
CONCURRENT_REQUESTS_PER_DOMAIN = 1
Node.js: Puppeteer dengan proksi
Untuk scraping situs dengan JavaScript (LinkedIn, Indeed) perlu headless browser. Puppeteer — solusi paling populer untuk Node.js.
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
// Plugin untuk bypass deteksi headless browser
puppeteer.use(StealthPlugin());
async function parseWithProxy() {
const proxy = 'http://user:[email protected]:8080';
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=${proxy}`,
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-blink-features=AutomationControlled'
]
});
const page = await browser.newPage();
// Set User-Agent asli
await page.setUserAgent(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
);
// Set viewport
await page.setViewport({ width: 1920, height: 1080 });
try {
await page.goto('https://hh.ru/search/vacancy', {
waitUntil: 'networkidle2',
timeout: 30000
});
// Scraping data
const vacancies = await page.evaluate(() => {
// Kode ekstraksi data
return [];
});
console.log(`Ditemukan ${vacancies.length} lowongan`);
} catch (error) {
console.error('Error scraping:', error);
} finally {
await browser.close();
}
}
parseWithProxy();
Kesimpulan dan rekomendasi
Scraping job boards memerlukan pendekatan yang cermat dan pengaturan proksi yang tepat. Mari kita rangkum rekomendasi utama:
Checklist untuk scraping sukses:
- Pilih jenis proksi yang tepat: residential untuk hh.ru/Superjob, mobile untuk LinkedIn
- Atur rotasi IP: 5-10 menit untuk hh.ru, 30-60 menit untuk LinkedIn
- Gunakan jeda acak: 4-8 detik untuk hh.ru, 10-20 detik untuk LinkedIn
- Rotasi User-Agent: gunakan hanya browser modern versi terbaru
- Pantau metrik: persentase sukses, jumlah captcha, kecepatan proksi
- Siapkan penanganan error: otomatis ganti proksi saat 429/403
- Pertimbangkan API resmi: untuk banyak situs ini lebih stabil daripada scraping
Ingat bahwa scraping harus mematuhi ketentuan penggunaan situs dan undang-undang setempat. Gunakan data yang dikumpulkan secara bertanggung jawab dan hormati hak pemilik situs.
Untuk scraping stabil job boards, kami merekomendasikan menggunakan proksi residential ProxyCove dengan pool IP besar dan rotasi otomatis. Ini memberikan keseimbangan optimal antara harga, kecepatan, dan keandalan untuk tugas pengumpulan data dari situs lowongan kerja.