Cara Melewati Anti Bot dengan Scrapling di OpenClaw

Ashley Innocent

Ashley Innocent

5 March 2026

Cara Melewati Anti Bot dengan Scrapling di OpenClaw

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

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.

💡
Untuk pengembangan API dan alur kerja pengujian, Apidog menyediakan alat komprehensif yang melengkapi kemampuan web scraping, memungkinkan Anda menguji dan memvalidasi data yang Anda kumpulkan dari situs yang dilindungi.
button

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)

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:

  1. 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
)
  1. Beralih ke DynamicFetcher:
from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.get('https://site.com')
  1. Tambahkan rotasi proxy:
page = StealthyFetcher.get(
    'https://site.com',
    proxy='http://residential-proxy:port'
)

Loop Tantangan Cloudflare

Terkadang StealthyFetcher terjebak dalam loop tantangan:

  1. Tingkatkan batas waktu (timeout):
page = StealthyFetcher.fetch(
    'https://site.com',
    solve_cloudflare=True,
    timeout=120
)
  1. 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:

  1. Gunakan StealthyFetcher daripada DynamicFetcher jika memungkinkan
  2. Tambahkan connection pooling
  3. Gunakan proxy yang lebih cepat
  4. 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:

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.

button

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.

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'
)

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.

Cara Melewati Anti Bot dengan Scrapling di OpenClaw