Cara scraping situs yang dilindungi Cloudflare (panduan 2026)
Cloudflare berada di depan sebagian besar web publik, jadi scraper yang berfungsi di satu situs sering kali menabrak tembok di situs berikutnya. Biasanya Anda menyadarinya lewat HTTP 403 atau 503, halaman interstisial "Just a moment...", atau widget kotak centang Turnstile di halaman. Panduan ini menjelaskan apa yang diperiksa Cloudflare, perbaikan yang berhasil tanpa menyentuh hal-hal yang seharusnya tidak Anda sentuh, dan di mana pemecahan captcha masuk. Jawaban singkatnya: pastikan Anda boleh scrape situs tersebut, perlambat, kirim request yang terlihat seperti klien normal, gunakan browser sungguhan ketika halaman membutuhkan JavaScript, dan baru kemudian menangani captcha. Turnstile adalah captcha yang paling sering digunakan Cloudflare. Dukungan Scarnox untuk Turnstile segera hadir. Jenis captcha yang aktif saat ini adalah PopularCaptcha.
Apa yang diperiksa Cloudflare
Cloudflare memberi skor pada setiap request berdasarkan beberapa sinyal:
- Reputasi IP. Alamat dari pusat data cloud mulai dengan skor yang lebih rendah daripada alamat dari koneksi rumah.
- Laju dan pola request. Ratusan request per detik dari satu alamat terlihat seperti bot, apa pun header-nya.
- Header dan fingerprint TLS. Pustaka HTTP polos sering mengirim header, urutan header, dan handshake TLS yang tidak pernah dikirim browser arus utama.
- Eksekusi JavaScript. Halaman tantangan menjalankan skrip dan memeriksa apakah lingkungan browser sungguhan tersedia.
- Cookie. Setelah tantangan berhasil dilewati, Cloudflare menerbitkan cookie clearance yang terikat pada sesi tersebut.
Skor tinggi lolos tanpa terlihat. Skor sedang mendapat tantangan interaktif. Skor rendah diblokir. Sebagian besar pekerjaan adalah menaikkan skor Anda dengan berperilaku sebagai klien yang baik, bukan dengan melawan pemeriksaannya.
Langkah 1: pastikan Anda boleh scrape situsnya
Sebelum pekerjaan teknis apa pun, baca robots.txt dan ketentuan layanan situs. Pemblokiran sering kali merupakan pemilik situs yang menyampaikan sesuatu kepada Anda. Scraping halaman publik secara perlahan dan untuk tujuan yang jelas adalah satu hal. Memaksa melewati pemblokiran untuk mencapai data yang dibatasi pemiliknya adalah hal lain, dan itu adalah penggunaan yang tidak didukung Scarnox. Gambaran umum hukum membahas pertanyaan umumnya.
Langkah 2: buat request biasa dengan benar
Banyak scraper yang tampak "diblokir" sebenarnya hanya mengirim request yang buruk. Perbaiki ini terlebih dahulu:
- Kirim User-Agent terkini dan header yang akan dikirim browser, seperti
AcceptdanAccept-Language. - Gunakan satu objek sesi agar cookie tetap ada di antara request, seperti yang dilakukan browser.
- Tambahkan jeda di antara request, dengan sedikit jitter acak.
- Mundur pada respons
429dan503alih-alih mencoba ulang dalam loop ketat.
import random
import time
import requests
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/124.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
})
def polite_get(url: str, attempts: int = 4) -> requests.Response:
r = None
for attempt in range(attempts):
r = session.get(url, timeout=30)
if r.status_code not in (429, 503):
return r
# Exponential backoff dengan jitter: sekitar 1, 2, 4 detik ditambah noise.
time.sleep(2 ** attempt + random.uniform(0, 1))
return r
Jika ini membuat Anda lolos, selesai. Pertahankan jeda tersebut.
Langkah 3: pahami tantangan yang Anda hadapi
Responsnya memberi tahu banyak hal:
- Halaman "Just a moment...". Ini adalah tantangan JavaScript. Browser sungguhan biasanya lolos dengan sendirinya setelah beberapa detik. Cookie clearance kemudian bisa digunakan kembali untuk request berikutnya dalam sesi yang sama.
- Widget Turnstile pada form atau halaman. Ini adalah captcha. Ia membutuhkan token dari widget sebelum form mau menerima pengiriman.
- Halaman pemblokiran dengan kode error. Alamat atau request telah ditolak sepenuhnya. Mengubah pacing dan memperbaiki request biasanya membantu lebih dari apa pun. Memecahkan captcha tidak mengubah pemblokiran keras menjadi data.
Memeriksa mana dari ini yang Anda lihat menghemat banyak usaha yang sia-sia.
Langkah 4: gunakan browser sungguhan ketika halaman membutuhkannya
Jika halaman hanya menampilkan konten setelah JavaScript berjalan, klien HTTP biasa tidak akan pernah melihatnya. Jalankan browser lengkap dengan Playwright atau Selenium. Browser headless bisa dideteksi, jadi baca deteksi browser headless sebelum Anda mengandalkannya, dan atur agar sesuai dengan lingkungan yang akan digunakan pengunjung sungguhan. Panduan situs JavaScript menunjukkan contoh lengkapnya.
Langkah 5: periksa reputasi IP Anda
Alamat pusat data cloud adalah alasan paling umum mengapa request yang bersih mendapat skor rendah. Alamat residensial biasanya mendapat skor lebih baik, dengan biaya yang lebih tinggi dalam kecepatan dan uang. Trade-off-nya dibahas di proxy residensial vs datacenter.
Rotasi juga punya jebakannya sendiri. Mengganti alamat di setiap request terlihat tidak wajar, karena pengunjung sungguhan mempertahankan satu alamat selama seluruh kunjungan. Sesi sticky, di mana satu alamat dipertahankan untuk sekumpulan request yang terkait, sering kali bekerja lebih baik daripada rotasi yang cepat. Proxy berputar untuk scraping membahas detailnya.
Langkah 6: di mana pemecahan captcha masuk
Kadang widget memang muncul, pada form yang sedang Anda uji atau pada halaman yang Anda punya izin untuk otomatisasi. Token Turnstile kemudian menjadi langkah yang wajib dalam alur tersebut. Dukungan Scarnox untuk Turnstile segera hadir, jadi jangan membangun kode produksi di atasnya dulu. Jenis captcha yang aktif hari ini adalah PopularCaptcha, yang menggunakan widget berbeda.
Alur umum untuk captcha berbasis token mana pun sama. Anda membaca sitekey dari halaman, meminta token, dan meletakkan token di field form yang diharapkan situs. Token berumur pendek, jadi kirimkan segera. Panduan Python PopularCaptcha menunjukkan alur itu dari awal hingga akhir, dan jenis captcha yang dijelaskan membandingkan widget yang akan Anda temui.
Jika Anda ingin siap ketika dukungan Turnstile sudah aktif, Anda bisa memulai uji coba gratis sekarang. Mulai dengan kredit uji coba gratis, tanpa kartu: buat akun. Untuk tarif terkini dari jenis captcha yang aktif, lihat halaman harga.
Scraping secara bertanggung jawab
- Baca
robots.txtdan patuhi ketentuan situs yang Anda scrape. - Batasi laju crawler Anda, dan jalankan pada jam sepi jika memungkinkan.
- Simpan cache respons sehingga Anda tidak pernah mengambil halaman yang sama dua kali tanpa alasan.
- Hindari mengumpulkan data pribadi kecuali Anda punya dasar hukum yang sah untuk itu.
- Jika situs telah membatasi akses, berhenti. Jangan mencoba melewati pembatasan itu.