TL;DR
Scrapling menyediakan kemampuan bypass anti-bot yang tangguh melalui mode StealthyFetcher dan DynamicFetcher. Gunakan StealthyFetcher untuk situs yang dilindungi Cloudflare (penyelesaian Turnstile otomatis, randomisasi sidik jari kanvas, pemblokiran WebRTC) atau DynamicFetcher untuk implementasi anti-bot yang banyak menggunakan JavaScript. Integrasikan dengan OpenClaw untuk mengontrol semua operasi scraping melalui perintah bahasa alami.
Pendahuluan
Anda mengunjungi sebuah situs web untuk mengumpulkan data. Halaman dimuat. Lalu Anda melihatnya: "Akses Ditolak" atau tantangan CAPTCHA. Situs tersebut mendeteksi scraper Anda dan memblokir akses. Skenario ini terus-menerus terjadi pada pengembang, ilmuwan data, dan peneliti yang membutuhkan data web untuk proyek-proyek yang sah.
Hal ini terjadi karena situs web semakin banyak menerapkan sistem anti-bot yang canggih. Cloudflare, PerimeterX, Akamai, dan layanan serupa menganalisis sidik jari browser, pola perilaku, dan karakteristik permintaan untuk mengidentifikasi akses otomatis. Scraper tradisional segera gagal melawan pertahanan ini.\n\nIndustri deteksi bot telah berkembang menjadi pasar bernilai miliaran dolar. Perusahaan berinvestasi besar-besaran untuk melindungi aset digital mereka dari akses otomatis. Cloudflare saja melaporkan memblokir miliaran permintaan bot setiap hari. Ini menciptakan tantangan signifikan untuk pengumpulan data yang sah, baik untuk riset pasar, analisis kompetitif, pemantauan harga, atau penelitian akademik.
Scrapling memecahkan masalah ini. Pustaka ini mencakup beberapa mode anti-deteksi yang dirancang khusus untuk melewati perlindungan ini. Dikombinasikan dengan antarmuka bahasa alami OpenClaw, Anda dapat menginstruksikan asisten AI Anda untuk melewati pemeriksaan anti-bot tanpa menulis kode yang rumit.
Memahami Deteksi Anti-Bot
Sebelum melewati deteksi, Anda perlu memahami cara kerjanya. Sistem anti-bot menganalisis beberapa faktor:
Browser Fingerprinting (Sidik Jari Peramban): Situs mengumpulkan informasi tentang peramban Anda, termasuk resolusi layar, font yang terinstal, perender WebGL, keluaran kanvas, dan ratusan sinyal lainnya. Alat otomatis sering kali mengungkapkan dirinya melalui sidik jari yang konsisten yang berbeda dari peramban asli.
Analisis Perilaku: Pengguna manusia menggerakkan mouse secara tidak terduga, menggulir dengan kecepatan bervariasi, dan mengetik dengan waktu yang alami. Bot sering menunjukkan pola mekanis: pemuatan halaman instan, kecepatan gulir seragam, waktu yang sempurna antar tindakan.
Analisis Permintaan: Setiap permintaan HTTP menyertakan header, sidik jari TLS, dan pola koneksi. Pustaka HTTP standar seperti 'requests' membuat permintaan yang terlihat jelas otomatis dibandingkan dengan lalu lintas peramban asli.
Tantangan JavaScript: Situs modern mengeksekusi JavaScript untuk mengumpulkan informasi peramban. Cloudflare Turnstile, misalnya, menjalankan tes tak terlihat yang memverifikasi integritas peramban sebelum menampilkan konten.
Reputasi IP: Alamat IP ditandai berdasarkan penyedia hosting, riwayat aktivitas mencurigakan, dan lokasi geografis. IP pusat data memicu kecurigaan segera.
Scrapling mengatasi setiap vektor deteksi ini melalui fetcher khususnya.
Kemampuan Anti-Bot Scrapling
Scrapling menyediakan dua fetcher utama untuk melewati sistem anti-bot:

StealthyFetcher menangani sebagian besar perlindungan Cloudflare dan yang serupa. Ini menggunakan Chrome headless dengan teknik penghindaran bawaan yang secara otomatis menambal vektor deteksi umum.
DynamicFetcher menyediakan otomatisasi peramban penuh melalui Playwright. Gunakan ini ketika StealthyFetcher gagal atau ketika situs menggunakan deteksi berbasis JavaScript yang canggih.
Berikut cara memilih:
| Skenario | Fetcher yang Direkomendasikan |
|---|---|
| Perlindungan Cloudflare | StealthyFetcher |
| Turnstile CAPTCHA | StealthyFetcher |
| Deteksi bot dasar | StealthyFetcher |
| Tantangan JavaScript yang kompleks | DynamicFetcher |
| Gulir tak terbatas dengan anti-bot | DynamicFetcher |
| Solusi anti-bot kustom | DynamicFetcher |
StealthyFetcher: Penjelasan Mendalam
StealthyFetcher adalah alat utama Scrapling untuk melewati sistem anti-bot. Ini menangani sebagian besar mekanisme perlindungan umum secara otomatis.
Penggunaan Dasar
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get('https://protected-site.com')
print(page.text)
Fetcher secara otomatis mencoba melewati Cloudflare, PerimeterX, dan perlindungan serupa.
Bypass Cloudflare Turnstile
Cloudflare Turnstile adalah salah satu tantangan anti-bot yang paling umum. StealthyFetcher menyelesaikannya secara otomatis:
page = StealthyFetcher.fetch(
'https://cloudflare-protected-site.com',
solve_cloudflare=True
)
Parameter solve_cloudflare=True memicu penyelesaian tantangan otomatis. Ini berfungsi untuk tantangan interstitial (halaman "Memeriksa browser Anda sebelum mengakses") dan widget Turnstile.
Randomisasi Sidik Jari Kanvas
Canvas fingerprinting menciptakan pengenal unik berdasarkan cara browser Anda merender grafis. StealthyFetcher menambahkan noise acak ke operasi kanvas:
page = StealthyFetcher.fetch(
'https://site.com',
hide_canvas=True
)
Setiap permintaan menghasilkan keluaran kanvas yang berbeda, membuat pelacakan sidik jari tidak efektif.
Pencegahan Kebocoran WebRTC
WebRTC dapat mengekspos alamat IP asli Anda meskipun menggunakan proxy. StealthyFetcher memblokir permintaan WebRTC:
page = StealthyFetcher.fetch(
'https://site.com',
block_webrtc=True
)
Ini mencegah kebocoran IP lokal yang dapat mengungkapkan identitas atau lokasi Anda.
Spoofing Referer Pencarian Google
Banyak situs mengizinkan akses ketika mereka berpikir lalu lintas berasal dari pencarian Google. StealthyFetcher memalsukan referer ini:
page = StealthyFetcher.fetch(
'https://site.com',
google_search=True
)
Ini membuat permintaan terlihat berasal dari halaman hasil pencarian Google.
Menggunakan Chrome yang Terinstal
Untuk penghindaran maksimum, gunakan browser Chrome yang terinstal alih-alih Chromium Playwright:
page = StealthyFetcher.fetch(
'https://site.com',
real_chrome=True
)
Ini menggunakan instalasi Chrome Anda yang sebenarnya, yang memiliki sidik jari browser yang sah.
Spoofing Geografis
Cocokkan permintaan Anda dengan lokasi tertentu:
page = StealthyFetcher.fetch(
'https://site.com',
locale='en-US',
timezone_id='America/New_York'
)
Ini mengatur zona waktu browser dan pengaturan bahasa agar sesuai dengan lokasi yang Anda inginkan.
DynamicFetcher untuk Perlindungan Tingkat Lanjut
Beberapa situs menggunakan sistem anti-bot canggih yang tidak dapat dilewati oleh StealthyFetcher. DynamicFetcher menyediakan otomatisasi browser penuh dengan Playwright:
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://highly-protected-site.com')
print(page.text)
Menangani Gulir Tak Terbatas
Situs dengan gulir tak terbatas dan perlindungan anti-bot memerlukan otomatisasi peramban:
from scrapling.fetchers import DynamicFetcher
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
fetcher = DynamicFetcher(playwright=p)
page = fetcher.get('https://site.com/infinite-scroll')
# Wait for content to load
page.wait_for_selector('.content-item')
# Scroll to load more
for _ in range(5):
page.evaluate('window.scrollTo(0, document.body.scrollHeight)')
page.wait_for_timeout(1000)
Menunggu Eksekusi JavaScript
Beberapa konten dimuat melalui JavaScript setelah pemuatan halaman awal:
page = DynamicFetcher.get('https://site.com')
page.wait_for_load_state('networkidle')
content = page.content()
Ini memastikan semua JavaScript telah dieksekusi sebelum mengekstraksi konten.
Menangani CAPTCHA Secara Manual
Untuk CAPTCHA yang tidak dapat diselesaikan secara otomatis:
page = DynamicFetcher.get('https://site.com')
# Check if CAPTCHA is present
if page.is_visible('.captcha-container'):
# Take screenshot for manual solving
page.screenshot(path='captcha.png')
# After manual solve, continue
page.click('.captcha-submit')
Anda dapat menjeda untuk intervensi manual, menyelesaikan CAPTCHA sendiri, dan melanjutkan scraping.
Menggunakan dengan OpenClaw
OpenClaw memungkinkan Anda mengontrol kemampuan anti-bot Scrapling melalui bahasa alami (jika Anda ingin melihat cara mengatur Scrapling di dalam OpenClaw, periksa postingan ini):
Bypass Cloudflare pada sebuah situs:
"Dapatkan data produk dari https://shop.example.com, situs ini memiliki perlindungan Cloudflare"
OpenClaw secara otomatis menggunakan StealthyFetcher dengan `solve_cloudflare` diaktifkan.
Menangani situs dengan perlindungan canggih:
"Scrape daftar pekerjaan dari https://careers.example.com, gunakan mode browser headless karena mereka memiliki perlindungan anti-bot yang kuat"
OpenClaw beralih ke DynamicFetcher untuk otomatisasi browser penuh.
Gunakan rotasi proxy:
"Ekstrak data dari 100 URL ini, rotasikan melalui proxy ini: proxy1.com:8080, proxy2.com:8080, proxy3.com:8080"
OpenClaw mendistribusikan permintaan ke beberapa proxy.
Memalsukan lokasi geografis:
"Dapatkan data harga dari https://site.com, gunakan pengaturan Pantai Timur AS"
OpenClaw mengkonfigurasi zona waktu dan lokal agar sesuai.
Teknik Anti-Bot Dijelaskan
Memahami teknik yang mendasari membantu Anda memilih pendekatan yang tepat:
Spoofing Sidik Jari TLS
Ketika peramban Anda terhubung ke situs web, ia melakukan jabat tangan TLS. Pesan ClientHello menyertakan karakteristik yang mengidentifikasi pustaka klien Anda. Permintaan Python standar memiliki sidik jari khas yang dikenali oleh sistem anti-bot.
Scrapling memalsukan sidik jari TLS agar tampak sebagai peramban yang sah. Ini terjadi secara otomatis dengan StealthyFetcher dan DynamicFetcher.
Rotasi User-Agent
Mengirim permintaan dengan string User-Agent yang sama memicu deteksi. Scrapling merotasi User-Agent secara otomatis:
# User-Agent is automatically rotated
page = StealthyFetcher.get('https://site.com')
Setiap permintaan terlihat berasal dari versi peramban yang berbeda.
Spoofing Header
Peramban asli mengirimkan header tertentu dalam urutan tertentu. Scrapling memastikan header cocok dengan perilaku peramban yang sah secara otomatis.
Randomisasi Kanvas
Ketika situs web meminta peramban Anda untuk menggambar sesuatu, piksel yang tepat mengungkapkan peramban dan GPU Anda. Scrapling menambahkan noise yang tidak terlihat ke operasi kanvas, membuat setiap sidik jari unik.
Resolusi Layar dan Ukuran Jendela
Peramban headless sering melaporkan ukuran layar default. Scrapling merandomisasi dimensi viewport agar sesuai dengan tampilan pengguna nyata.
Simulasi Gerakan Mouse
DynamicFetcher dapat mensimulasikan gerakan mouse seperti manusia:
page.mouse.move_to_element('.button')
page.mouse.move_by_offset(50, 20)
page.click('.submit')
Ini menambahkan pola gerakan realistis yang melewati analisis perilaku.
Integrasi Proxy
Menggunakan proxy membantu menghindari pemblokiran berbasis IP dan memungkinkan scraping geografis:
Penggunaan Proxy Dasar
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
page = fetcher.get(
'https://site.com',
proxy='http://username:password@proxy.example.com:8080'
)
Rotasi Proxy
Untuk scraping skala besar, rotasi melalui beberapa proxy:
import random
from scrapling.fetchers import StealthyFetcher
proxies = [
'http://proxy1.com:8080',
'http://proxy2.com:8080',
'http://proxy3.com:8080'
]
fetcher = StealthyFetcher()
for url in urls:
proxy = random.choice(proxies)
page = fetcher.get(url, proxy=proxy)
# Process page
Proxy Residensial
Proxy residensial menggunakan alamat IP dari penyedia layanan internet nyata. Mereka lebih sulit dideteksi daripada IP pusat data:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy-provider:port'
)
Proxy residensial lebih mahal tetapi memberikan tingkat keberhasilan yang jauh lebih tinggi pada situs yang dilindungi.
Skenario Anti-Bot Umum
Perlindungan Cloudflare
Cloudflare adalah solusi anti-bot yang paling umum. Sebagian besar situs berfungsi dengan StealthyFetcher dasar:
page = StealthyFetcher.fetch('https://cloudflare-site.com', solve_cloudflare=True)
Jika Cloudflare menampilkan halaman tantangan, fetcher secara otomatis menyelesaikannya dan mencoba lagi.
PerimeterX (Sekarang Ownl)
PerimeterX (sekarang bagian dari Ownl) menggunakan analisis perilaku:
# Use DynamicFetcher for PerimeterX
page = DynamicFetcher.get('https://perimeterx-site.com')
Otomatisasi peramban penuh menangani tantangan perilaku dengan lebih baik.
Akamai
Akamai menyediakan manajemen bot tingkat perusahaan:
# Akamai often requires residential proxies
page = StealthyFetcher.get(
'https://akamai-protected.com',
proxy='http://residential-proxy:port',
solve_cloudflare=True
)
Situs yang dilindungi Akamai seringkali memerlukan kombinasi beberapa teknik penghindaran.
Solusi Anti-Bot Kustom
Beberapa situs membangun sistem deteksinya sendiri:
# Use maximum stealth settings
page = StealthyFetcher.fetch(
'https://custom-protected.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
Jika ini gagal, beralihlah ke DynamicFetcher dengan otomatisasi browser penuh.
Praktik Terbaik
Mulai dengan Sederhana
Mulailah dengan StealthyFetcher dasar. Hanya tambahkan kompleksitas jika Anda mengalami pemblokiran:
# Try basic first
page = StealthyFetcher.get('https://site.com')
# Add evasion if needed
if 'blocked' in page.text.lower():
page = StealthyFetcher.fetch('https://site.com', solve_cloudflare=True)
Hormati Batas Kecepatan
Bahkan dengan kemampuan anti-bot, mengirim terlalu banyak permintaan memicu perlindungan:
import time
for url in urls:
page = StealthyFetcher.get(url)
time.sleep(2) # Wait between requests
Gunakan Proxy Residensial untuk Produksi
Proxy gratis atau murah seringkali memiliki reputasi buruk. Berinvestasilah pada proxy residensial berkualitas untuk scraping yang andal:
# Quality residential proxy
page = StealthyFetcher.get(
'https://site.com',
proxy='http://premium-residential-proxy:port'
)
Periksa robots.txt
Selalu periksa apakah situs mengizinkan scraping:
# Check robots.txt before scraping
from urllib.parse import urlparse
domain = urlparse('https://site.com').netloc
robots_url = f'https://{domain}/robots.txt'
Tangani Error dengan Elegan
Bangun penanganan error ke dalam scraper Anda:
from scrapling.fetchers import StealthyFetcher
fetcher = StealthyFetcher()
try:
page = fetcher.get('https://site.com')
except Exception as e:
print(f'Error: {e}')
# Fall back to DynamicFetcher
from scrapling.fetchers import DynamicFetcher
fetcher = DynamicFetcher()
page = fetcher.get('https://site.com')
Pemecahan Masalah
Masih Terkena Blokir
Jika Anda mengalami pemblokiran meskipun menggunakan StealthyFetcher:
- Aktifkan semua opsi penghindaran:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
google_search=True,
real_chrome=True
)
- Beralih ke DynamicFetcher:
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.get('https://site.com')
- Tambahkan rotasi proxy:
page = StealthyFetcher.get(
'https://site.com',
proxy='http://residential-proxy:port'
)
Loop Tantangan Cloudflare
Terkadang StealthyFetcher terjebak dalam loop tantangan:
- Tingkatkan batas waktu (timeout):
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
timeout=120
)
- Gunakan `real_chrome`:
page = StealthyFetcher.fetch(
'https://site.com',
solve_cloudflare=True,
real_chrome=True
)
CAPTCHA Tidak Terpecahkan
Beberapa CAPTCHA memerlukan intervensi manual:
page = DynamicFetcher.get('https://site.com')
if page.is_visible('[class*="captcha"]'):
page.screenshot(path='manual_captcha.png')
# Solve manually, then continue
input('Press Enter after solving CAPTCHA...')
page.click('.submit-button')
Performa Lambat
Penghindaran anti-bot menambah overhead. Untuk scraping yang lebih cepat:
- Gunakan StealthyFetcher daripada DynamicFetcher jika memungkinkan
- Tambahkan connection pooling
- Gunakan proxy yang lebih cepat
- Kurangi opsi penghindaran yang tidak perlu
Kesimpulan
Melewati pemeriksaan anti-bot membutuhkan pemahaman tentang cara kerja deteksi dan penggunaan alat yang tepat untuk setiap situasi. Scrapling menyediakan solusi komprehensif melalui StealthyFetcher untuk sebagian besar sistem perlindungan dan DynamicFetcher untuk skenario lanjutan.
Poin-poin penting:
- Gunakan StealthyFetcher untuk Cloudflare, Turnstile, dan perlindungan bot dasar
- Aktifkan `solve_cloudflare=True` untuk penyelesaian tantangan otomatis
- Beralih ke DynamicFetcher ketika StealthyFetcher gagal
- Tambahkan rotasi proxy untuk scraping skala besar
- Gabungkan beberapa teknik penghindaran untuk situs yang sulit
Dengan integrasi OpenClaw, Anda mengontrol semua kemampuan ini melalui bahasa alami. Beri tahu asisten AI Anda apa yang Anda butuhkan, dan ia akan memilih pendekatan anti-bot yang sesuai secara otomatis. Setelah Anda mengumpulkan data, Anda dapat menggunakan Apidog untuk menguji dan memvalidasi API, membuat rangkaian pengujian otomatis, dan menghasilkan dokumentasi untuk endpoint yang Anda temukan.
FAQ
Apa perbedaan antara StealthyFetcher dan DynamicFetcher?
StealthyFetcher menggunakan Chrome headless yang dimodifikasi dengan patch penghindaran bawaan. DynamicFetcher menggunakan otomatisasi Playwright penuh. StealthyFetcher lebih cepat tetapi mungkin gagal terhadap deteksi tingkat lanjut. DynamicFetcher lebih andal tetapi lebih lambat.
Apakah Scrapling berfungsi melawan semua sistem anti-bot?
Tidak ada solusi anti-bot yang berfungsi 100% setiap saat. Scrapling menangani sebagian besar sistem umum (Cloudflare, PerimeterX, Akamai) dengan andal. Solusi khusus atau perusahaan mungkin memerlukan teknik tambahan atau intervensi manual.
Apakah melewati anti-bot legal?
Hukum bervariasi berdasarkan yurisdiksi dan tergantung pada ketentuan layanan situs. Umumnya, scraping data publik dapat diterima. Melewati otentikasi atau mengakses data pribadi tanpa otorisasi melanggar batas hukum.
Mengapa scraping saya masih diblokir?
Periksa masalah umum ini: reputasi IP (gunakan proxy residensial), pembatasan kecepatan (tambahkan penundaan), penghindaran yang tidak memadai (aktifkan lebih banyak opsi), atau tantangan JavaScript (gunakan DynamicFetcher).
Bagaimana cara menangani CAPTCHA?
StealthyFetcher secara otomatis menyelesaikan Cloudflare Turnstile. Untuk CAPTCHA lainnya, gunakan DynamicFetcher dan jeda untuk penyelesaian manual, atau integrasikan layanan penyelesaian CAPTCHA pihak ketiga.
Bisakah saya menggunakan browser Chrome saya sendiri?
Ya. Atur `real_chrome=True` di StealthyFetcher untuk menggunakan Chrome yang terinstal alih-alih Chromium Playwright. Ini memberikan sidik jari browser yang lebih sah.
Apakah saya memerlukan proxy?
Untuk scraping skala kecil, tidak. Untuk operasi produksi atau skala besar, proxy residensial secara signifikan meningkatkan tingkat keberhasilan dengan menghindari pemblokiran berbasis IP.
Bagaimana cara merotasi User-Agent?
StealthyFetcher secara otomatis merotasi User-Agent. Untuk kontrol manual:
fetcher = StealthyFetcher(headers={'User-Agent': 'Your-Custom-UA'})
Berapa tingkat keberhasilan terhadap Cloudflare?
Dengan konfigurasi yang tepat, tingkat keberhasilan melebihi 90% untuk sebagian besar situs yang dilindungi Cloudflare. Tantangan Turnstile diselesaikan secara otomatis.
Bisakah saya melakukan scraping dari beberapa lokasi geografis?
Ya. Gunakan parameter `timezone_id` dan `locale`:
page = StealthyFetcher.fetch(
'https://site.com',
timezone_id='Europe/London',
locale='en-GB'
)
