CAPSOLVER
Blog
Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver

Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver

Logo of CapSolver

Adélia Cruz

Neural Network Developer

05-Dec-2025

Poin Utama

  • Scrapling adalah perpustakaan web scraping Python yang kuat dengan fitur anti-bot terintegrasi dan pelacakan elemen adaptif
  • CapSolver menyediakan penyelesaian captcha otomatis untuk ReCaptcha v2, v3, dan Cloudflare Turnstile dengan waktu penyelesaian cepat (1-20 detik)
  • Menggabungkan Scrapling dengan CapSolver menciptakan solusi scraping yang kuat yang menangani sebagian besar situs web yang dilindungi captcha
  • StealthyFetcher menambahkan anti-deteksi tingkat browser ketika permintaan HTTP dasar tidak cukup
  • Ketiga jenis captcha ini menggunakan alur kerja CapSolver yang sama: membuat tugas → memantau hasil → menyisipkan token
  • Kode produksi harus mencakup penanganan kesalahan, pembatasan laju, dan menghormati ketentuan layanan situs web

Pengantar

Web scraping telah menjadi alat yang penting untuk pengumpulan data, penelitian pasar, dan analisis kompetitif. Namun, seiring dengan perkembangan teknik scraping, pertahanan yang digunakan situs web untuk melindungi data mereka juga semakin berkembang. Salah satu rintangan paling umum yang dihadapi scraper adalah captcha — tantangan-tantangan yang dirancang untuk membedakan manusia dari bot.

Jika Anda pernah mencoba mengambil data dari situs web dan dihadapkan dengan pesan "Harap verifikasi Anda manusia", Anda tahu betapa frustrasinya situasi itu. Berita baiknya? Ada kombinasi alat yang kuat yang bisa membantu: Scrapling untuk web scraping yang cerdas dan CapSolver untuk penyelesaian captcha otomatis.

Dalam panduan ini, kami akan membimbing Anda melalui semua yang perlu Anda ketahui untuk mengintegrasikan alat-alat ini dan secara sukses mengambil data dari situs web yang dilindungi captcha. Baik Anda menghadapi ReCaptcha v2 Google, ReCaptcha v3 yang tidak terlihat, atau Cloudflare Turnstile, kami akan membantu Anda.


Apa itu Scrapling?

Scrapling adalah perpustakaan web scraping modern Python yang menggambarkan dirinya sebagai "perpustakaan scraping adaptif pertama yang belajar dari perubahan situs web dan berkembang bersamanya." Dirancang untuk membuat ekstraksi data mudah sambil menyediakan kemampuan anti-bot yang kuat.

Fitur Utama

  • Pelacakan Elemen Adaptif: Scrapling dapat menemukan konten bahkan setelah perubahan desain situs web menggunakan algoritma kesamaan cerdas
  • Metode Pengambilan Banyak: Permintaan HTTP dengan imitasi fingerprint TLS, otomatisasi browser, dan mode stealth
  • Bypass Anti-Bot: Dukungan terintegrasi untuk melewati Cloudflare dan sistem anti-bot lainnya menggunakan Firefox yang dimodifikasi dan spoofing fingerprint
  • Kinerja Tinggi: Benchmarks ekstraksi teks menunjukkan ~2ms untuk 5000 elemen bersarang, jauh lebih cepat daripada banyak alternatif
  • Pemilihan Fleksibel: Pemilih CSS, XPath, operasi find seperti BeautifulSoup, dan pencarian berbasis teks
  • Dukungan Async: Dukungan penuh async/await untuk operasi scraping bersamaan

Instalasi

Untuk kemampuan parsing dasar:

bash Copy
pip install scrapling

Untuk fitur penuh termasuk otomatisasi browser:

bash Copy
pip install "scrapling[fetchers]"
scrapling install

Untuk semua fitur termasuk fitur AI:

bash Copy
pip install "scrapling[all]"
scrapling install

Penggunaan Dasar

Scrapling menggunakan metode kelas untuk permintaan HTTP:

python Copy
from scrapling import Fetcher

# Permintaan GET
response = Fetcher.get("https://example.com")

# Permintaan POST dengan data
response = Fetcher.post("https://example.com/api", data={"key": "value"})

# Akses respons
print(response.status)       # Kode status HTTP
print(response.body)         # Byte mentah
print(response.body.decode()) # Teks yang didekripsi

Apa itu CapSolver?

CapSolver adalah layanan penyelesaian captcha yang menggunakan AI canggih untuk menyelesaikan berbagai jenis captcha secara otomatis. Menyediakan API sederhana yang terintegrasi dengan sempurna dengan setiap bahasa pemrograman atau kerangka kerja scraping.

Tingkatkan anggaran otomatisasi Anda secara instan!
Gunakan kode bonus SCRAPLING saat menambahkan dana ke akun CapSolver Anda untuk mendapatkan bonus 6% tambahan pada setiap pengisian ulang — khusus untuk pengguna integrasi Scrapling.
Klaim sekarang di Dashboard CapSolver Anda

Jenis Captcha yang Didukung

  • ReCaptcha v2 (checkbox dan tidak terlihat)
  • ReCaptcha v3 (berbasis skor)
  • ReCaptcha Enterprise (v2 dan v3)
  • Cloudflare Turnstile
  • AWS WAF Captcha
  • Dan banyak lainnya...

Mendapatkan Kunci API Anda

  1. Daftar di CapSolver
  2. Navigasi ke dashboard Anda
  3. Salin kunci API dari pengaturan akun
  4. Tambahkan dana ke akun Anda (harga per penyelesaian)

Endpoint API

CapSolver menggunakan dua endpoint utama:

  • Buat Tugas: POST https://api.capsolver.com/createTask
  • Dapatkan Hasil: POST https://api.capsolver.com/getTaskResult

Menyiapkan Fungsi Bantuan CapSolver

Sebelum masuk ke jenis captcha tertentu, mari kita buat fungsi bantuan yang dapat digunakan kembali yang menangani alur kerja API CapSolver:

python Copy
import requests
import time

CAPSOLVER_API_KEY = "YOUR_API_KEY"

def solve_captcha(task_type, website_url, website_key, **kwargs):
    """
    Solver captcha umum menggunakan API CapSolver.

    Args:
        task_type: Jenis tugas captcha (misalnya, "ReCaptchaV2TaskProxyLess")
        website_url: URL halaman dengan captcha
        website_key: Kunci situs untuk captcha
        **kwargs: Parameter tambahan yang spesifik untuk jenis captcha

    Returns:
        dict: Solusi yang mencakup token dan data lainnya
    """
    payload = {
        "clientKey": CAPSOLVER_API_KEY,
        "task": {
            "type": task_type,
            "websiteURL": website_url,
            "websiteKey": website_key,
            **kwargs
        }
    }

    # Buat tugas
    response = requests.post(
        "https://api.capsolver.com/createTask",
        json=payload
    )
    result = response.json()

    if result.get("errorId") != 0:
        raise Exception(f"Gagal membuat tugas: {result.get('errorDescription')}")

    task_id = result.get("taskId")
    print(f"Tugas dibuat: {task_id}")

    # Pantau hasil
    max_attempts = 60  # Maksimum 2 menit pemantauan
    for attempt in range(max_attempts):
        time.sleep(2)

        response = requests.post(
            "https://api.capsolver.com/getTaskResult",
            json={
                "clientKey": CAPSOLVER_API_KEY,
                "taskId": task_id
            }
        )
        result = response.json()

        if result.get("status") == "ready":
            print(f"Captcha selesai dalam {(attempt + 1) * 2} detik")
            return result.get("solution")

        if result.get("errorId") != 0:
            raise Exception(f"Kesalahan: {result.get('errorDescription')}")

        print(f"Menunggu... (percobaan {attempt + 1})")

    raise Exception("Waktu habis: Penyelesaian captcha terlalu lama")

Fungsi ini menangani seluruh alur kerja: membuat tugas, memantau hasil, dan mengembalikan solusi. Kami akan menggunakan fungsi ini sepanjang panduan ini.


Menyelesaikan ReCaptcha v2 dengan Scrapling + CapSolver

ReCaptcha v2 adalah captcha checkbox "Saya bukan robot" klasik. Ketika diaktifkan, mungkin meminta pengguna untuk mengidentifikasi objek dalam gambar (lampu lalu lintas, trotoar, dll.). Untuk scraper, kita perlu menyelesaikan ini secara programatis.

Cara Kerja ReCaptcha v2

  1. Situs web memuat skrip ReCaptcha dengan kunci situs unik
  2. Ketika dikirim, skrip menghasilkan token g-recaptcha-response
  3. Situs web mengirimkan token ini ke Google untuk verifikasi
  4. Google memverifikasi apakah captcha diselesaikan dengan benar

Menemukan Kunci Situs

Kunci situs biasanya ditemukan dalam HTML halaman:

html Copy
<div class="g-recaptcha" data-sitekey="6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"></div>

Atau dalam tag skrip:

html Copy
<script src="https://www.google.com/recaptcha/api.js?render=6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"></script>

Implementasi

python Copy
from scrapling import Fetcher

def scrape_with_recaptcha_v2(target_url, site_key, form_url=None):
    """
    Mengambil halaman yang dilindungi ReCaptcha v2.

    Args:
        target_url: URL halaman dengan captcha
        site_key: Kunci ReCaptcha
        form_url: URL untuk mengirimkan formulir (default ke target_url)

    Returns:
        Respons dari halaman yang dilindungi
    """
    # Selesaikan captcha menggunakan CapSolver
    print("Menyelesaikan ReCaptcha v2...")
    solution = solve_captcha(
        task_type="ReCaptchaV2TaskProxyLess",
        website_url=target_url,
        website_key=site_key
    )

    captcha_token = solution["gRecaptchaResponse"]
    print(f"Dapatkan token: {captcha_token[:50]}...")

    # Kirim formulir dengan token captcha menggunakan Scrapling
    # Catatan: Gunakan Fetcher.post() sebagai metode kelas (bukan metode instans)
    submit_url = form_url or target_url
    response = Fetcher.post(
        submit_url,
        data={
            "g-recaptcha-response": captcha_token,
            # Tambahkan bidang formulir lainnya yang diperlukan situs
        }
    )

    return response

# Contoh penggunaan
if __name__ == "__main__":
    url = "https://example.com/protected-page"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    result = scrape_with_recaptcha_v2(url, site_key)
    print(f"Status: {result.status}")
    print(f"Panjang konten: {len(result.body)}")  # Gunakan .body untuk byte mentah

ReCaptcha v2 Tidak Terlihat

Untuk ReCaptcha v2 yang tidak terlihat (tanpa checkbox, diaktifkan saat mengirim formulir), tambahkan parameter isInvisible:

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV2TaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    isInvisible=True
)

Versi Enterprise

Untuk versi ReCaptcha v2 Enterprise, gunakan jenis tugas yang berbeda:

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV2EnterpriseTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    enterprisePayload={
        "s": "nilai_s_payload jika diperlukan"
    }
)

Menyelesaikan ReCaptcha v3 dengan Scrapling + CapSolver

ReCaptcha v3 berbeda dari v2 — berjalan secara tidak terlihat di latar belakang dan memberikan skor (0.0 hingga 1.0) berdasarkan perilaku pengguna. Skor yang lebih dekat ke 1.0 menunjukkan aktivitas manusia yang mungkin.

Perbedaan Utama dari v2

Aspek ReCaptcha v2 ReCaptcha v3
Interaksi Pengguna Checkbox/tantangan gambar Tidak ada (tidak terlihat)
Output Lulus/gagal Skor (0.0-1.0)
Parameter Aksi Tidak diperlukan Diperlukan
Kapan digunakan Formulir, login Semua muatan halaman

Menemukan Parameter Aksi

Aksi ditentukan dalam JavaScript situs web:

javascript Copy
grecaptcha.execute('6LcxxxxxxxxxxxxxxxxABCD', {action: 'submit'})

Aksi umum termasuk: submit, login, register, homepage, contact.

Implementasi

python Copy
from scrapling import Fetcher

def scrape_with_recaptcha_v3(target_url, site_key, page_action="submit", min_score=0.7):
    """
    Mengambil halaman yang dilindungi ReCaptcha v3.

    Args:
        target_url: URL halaman dengan captcha
        site_key: Kunci ReCaptcha
        page_action: Parameter aksi (ditemukan dalam grecaptcha.execute)
        min_score: Skor minimum yang diminta (0.1-0.9)

    Returns:
        Respons dari halaman yang dilindungi
    """
    print(f"Menyelesaikan ReCaptcha v3 (aksi: {page_action})...")

    solution = solve_captcha(
        task_type="ReCaptchaV3TaskProxyLess",
        website_url=target_url,
        website_key=site_key,
        pageAction=page_action
    )

    captcha_token = solution["gRecaptchaResponse"]
    print(f"Dapatkan token dengan skor: {solution.get('score', 'Tidak tersedia')}")

    # Kirim permintaan dengan token menggunakan metode kelas Scrapling
    response = Fetcher.post(
        target_url,
        data={
            "g-recaptcha-response": captcha_token,
        },
        headers={
            "User-Agent": solution.get("userAgent", "Mozilla/5.0")
        }
    )

    return response

# Contoh penggunaan
if __name__ == "__main__":
    url = "https://example.com/api/data"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    result = scrape_with_recaptcha_v3(url, site_key, page_action="getData")
    print(f"Respons: {result.body.decode()[:200]}")  # Gunakan .body untuk konten

ReCaptcha v3 Enterprise

python Copy
solution = solve_captcha(
    task_type="ReCaptchaV3EnterpriseTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    pageAction=page_action,
    enterprisePayload={
        "s": "parameter s opsional"
    }
)

Menyelesaikan Cloudflare Turnstile dengan Scrapling + CapSolver

Cloudflare Turnstile adalah alternatif captcha yang lebih baru yang dirancang sebagai pengganti captcha tradisional yang ramah pengguna dan menjaga privasi. Semakin umum digunakan di situs web yang menggunakan Cloudflare.

Memahami Turnstile

Turnstile memiliki tiga mode:

  • Dikelola: Menampilkan widget hanya ketika diperlukan
  • Non-Interaktif: Berjalan tanpa interaksi pengguna
  • Tidak Terlihat: Sama sekali tidak terlihat bagi pengguna

Berita baiknya? CapSolver menangani ketiga mode ini secara otomatis.

Menemukan Kunci Situs

Cari Turnstile dalam HTML halaman:

html Copy
<div class="cf-turnstile" data-sitekey="0x4xxxxxxxxxxxxxxxxxxxxxxxxxx"></div>

Atau dalam JavaScript:

javascript Copy
turnstile.render('#container', {
    sitekey: '0x4xxxxxxxxxxxxxxxxxxxxxxxxxx',
    callback: function(token) { ... }
});

Implementasi

python Copy
from scrapling import Fetcher

def scrape_with_turnstile(target_url, site_key, action=None, cdata=None):
    """
    Mengambil halaman yang dilindungi Cloudflare Turnstile.

    Args:
        target_url: URL halaman dengan captcha
        site_key: Kunci Turnstile (dimulai dengan 0x4...)
        action: Parameter aksi opsional
        cdata: Parameter cdata opsional

    Returns:
        Respons dari halaman yang dilindungi
    """
    print("Menyelesaikan Cloudflare Turnstile...")

    # Bangun metadata jika tersedia
    metadata = {}
    if action:
        metadata["action"] = action
    if cdata:
        metadata["cdata"] = cdata

    task_params = {
        "task_type": "AntiTurnstileTaskProxyLess",
        "website_url": target_url,
        "website_key": site_key,
    }

    if metadata:
        task_params["metadata"] = metadata

    solution = solve_captcha(**task_params)

    turnstile_token = solution["token"]
    user_agent = solution.get("userAgent", "")

    print(f"Dapatkan token Turnstile: {turnstile_token[:50]}...")

    # Kirim dengan token menggunakan metode kelas Scrapling
    headers = {}
    if user_agent:
        headers["User-Agent"] = user_agent

    response = Fetcher.post(
        target_url,
        data={
            "cf-turnstile-response": turnstile_token,
        },
headers=headers
    )

    return response

# Contoh penggunaan
if __name__ == "__main__":
    url = "https://example.com/terlindungi"
    site_key = "0x4AAAAAAAxxxxxxxxxxxxxx"

    result = scrape_with_turnstile(url, site_key)
    print(f"Berhasil! Mendapatkan {len(result.body)} byte")  # Gunakan .body untuk konten

### Turnstile dengan Action dan CData

Beberapa implementasi memerlukan parameter tambahan:

```python
solution = solve_captcha(
    task_type="AntiTurnstileTaskProxyLess",
    website_url=target_url,
    website_key=site_key,
    metadata={
        "action": "login",
        "cdata": "session_id_atau_data_kustom"
    }
)

Menggunakan StealthyFetcher untuk Perlindungan Anti-Bot yang Lebih Baik

Terkadang permintaan HTTP dasar tidak cukup. Situs web mungkin menggunakan deteksi bot yang canggih yang memeriksa:

  • Fingerprint browser
  • Eksekusi JavaScript
  • Gerakan mouse dan waktu
  • Fingerprint TLS
  • Header permintaan

Scrapling's StealthyFetcher memberikan perlindungan anti-deteksi tingkat browser dengan menggunakan mesin browser nyata dengan modifikasi stealth.

Apa itu StealthyFetcher?

StealthyFetcher menggunakan browser Firefox yang dimodifikasi dengan:

  • Fingerprint browser yang nyata
  • Kemampuan eksekusi JavaScript
  • Penanganan otomatis tantangan Cloudflare
  • Spoofing fingerprint TLS
  • Manajemen cookie dan sesi

Kapan Menggunakan StealthyFetcher

Scenario Gunakan Fetcher Gunakan StealthyFetcher
Form sederhana dengan captcha Ya Tidak
Halaman JavaScript berat Tidak Ya
Lapisan anti-bot banyak Tidak Ya
Kecepatan kritis Ya Tidak
Mode Under Attack Cloudflare Tidak Ya

Menggabungkan StealthyFetcher dengan CapSolver

Berikut cara menggunakan keduanya bersama-sama untuk efektivitas maksimal:

python Copy
from scrapling import StealthyFetcher
import asyncio

async def scrape_with_stealth_and_recaptcha(target_url, site_key, captcha_type="v2"):
    """
    Menggabungkan fitur anti-bot StealthyFetcher dengan CapSolver untuk ReCaptcha.

    Args:
        target_url: URL yang ingin di-scrape
        site_key: Kunci captcha
        captcha_type: "v2" atau "v3"

    Returns:
        Konten halaman setelah menyelesaikan captcha
    """

    # Pertama, selesaikan captcha menggunakan CapSolver
    print(f"Menyelesaikan ReCaptcha {captcha_type}...")

    if captcha_type == "v2":
        solution = solve_captcha(
            task_type="ReCaptchaV2TaskProxyLess",
            website_url=target_url,
            website_key=site_key
        )
        token = solution["gRecaptchaResponse"]

    elif captcha_type == "v3":
        solution = solve_captcha(
            task_type="ReCaptchaV3TaskProxyLess",
            website_url=target_url,
            website_key=site_key,
            pageAction="submit"
        )
        token = solution["gRecaptchaResponse"]

    else:
        raise ValueError(f"Jenis captcha tidak dikenal: {captcha_type}")

    print(f"Dapatkan token: {token[:50]}...")

    # Gunakan StealthyFetcher untuk perilaku seperti browser
    fetcher = StealthyFetcher()

    # Navigasi ke halaman
    page = await fetcher.async_fetch(target_url)

    # Sisipkan solusi ReCaptcha menggunakan JavaScript
    await page.page.evaluate(f'''() => {{
        // Cari bidang g-recaptcha-response dan atur nilainya
        let field = document.querySelector('textarea[name="g-recaptcha-response"]');
        if (!field) {{
            field = document.createElement('textarea');
            field.name = "g-recaptcha-response";
            field.style.display = "none";
            document.body.appendChild(field);
        }}
        field.value = "{token}";
    }}''')

    # Cari dan klik tombol submit
    submit_button = page.css('button[type="submit"], input[type="submit"]')
    if submit_button:
        await submit_button[0].click()
        # Tunggu navigasi
        await page.page.wait_for_load_state('networkidle')

    # Dapatkan konten halaman akhir
    content = await page.page.content()

    return content

# Wrapper sinkron untuk penggunaan yang lebih mudah
def scrape_stealth(target_url, site_key, captcha_type="v2"):
    """Wrapper sinkron untuk scraper stealth asinkron."""
    return asyncio.run(
        scrape_with_stealth_and_recaptcha(target_url, site_key, captcha_type)
    )

# Contoh penggunaan
if __name__ == "__main__":
    url = "https://example.com/halaman-terlindungi-tinggi"
    site_key = "6LcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD"

    content = scrape_stealth(url, site_key, captcha_type="v2")
    print(f"Dapatkan {len(content)} byte konten")

Contoh Lengkap: Pengambilan Data Multi-Halaman dengan Sesi

python Copy
from scrapling import StealthyFetcher
import asyncio

class StealthScraper:
    """Pengambil data yang mempertahankan sesi di beberapa halaman."""

    def __init__(self, api_key):
        self.api_key = api_key
        self.fetcher = None

    async def __aenter__(self):
        self.fetcher = StealthyFetcher()
        return self

    async def __aexit__(self, *args):
        if self.fetcher:
            await self.fetcher.close()

    async def solve_and_access(self, url, site_key, captcha_type="v2"):
        """Selesaikan ReCaptcha dan akses halaman."""
        global CAPSOLVER_API_KEY
        CAPSOLVER_API_KEY = self.api_key

        # Selesaikan ReCaptcha
        task_type = f"ReCaptcha{captcha_type.upper()}TaskProxyLess"
        solution = solve_captcha(
            task_type=task_type,
            website_url=url,
            website_key=site_key
        )
        token = solution["gRecaptchaResponse"]

        # Navigasi dan sisipkan token
        page = await self.fetcher.async_fetch(url)
        # ... lanjutkan dengan interaksi halaman

        return page

# Penggunaan
async def main():
    async with StealthScraper("kunci_api_anda") as scraper:
        page1 = await scraper.solve_and_access(
            "https://example.com/login",
            "kunci_site_here",
            "v2"
        )
        # Sesi dipertahankan untuk permintaan berikutnya
        page2 = await scraper.solve_and_access(
            "https://example.com/dashboard",
            "kunci_site_lain",
            "v3"
        )

asyncio.run(main())

Praktik Terbaik & Tips

1. Pembatasan Kecepatan

Jangan menyerang situs web dengan permintaan berlebihan. Implementasikan jeda antara permintaan:

python Copy
import time
import random

def scrape_yang_sopan(urls, min_delay=2, max_delay=5):
    """Mengambil data dengan jeda acak untuk terlihat lebih manusia."""
    results = []
    for url in urls:
        result = scrape_page(url)
        results.append(result)

        # Jeda acak antara permintaan
        delay = random.uniform(min_delay, max_delay)
        time.sleep(delay)

    return results

2. Penanganan Kesalahan

Selalu tangani kegagalan dengan baik:

python Copy
def solve_captcha_yang_kuat(task_type, website_url, website_key, max_retries=3, **kwargs):
    """Menyelesaikan captcha dengan retry otomatis."""
    for attempt in range(max_retries):
        try:
            return solve_captcha(task_type, website_url, website_key, **kwargs)
        except Exception as e:
            print(f"Uji coba {attempt + 1} gagal: {e}")
            if attempt < max_retries - 1:
                time.sleep(5)  # Tunggu sebelum retry
            else:
                raise

3. Hormati robots.txt

Periksa robots.txt situs sebelum mengambil data:

python Copy
from urllib.robotparser import RobotFileParser

def bisa_scrape(url):
    """Periksa apakah mengambil data diizinkan oleh robots.txt."""
    rp = RobotFileParser()
    rp.set_url(f"{url}/robots.txt")
    rp.read()
    return rp.can_fetch("*", url)

4. Gunakan Proxy untuk Skala

Saat mengambil data dalam skala besar, putar proxy untuk menghindari blokir IP:

python Copy
# CapSolver mendukung tugas dengan proxy
solution = solve_captcha(
    task_type="ReCaptchaV2Task",  # Perhatikan: tidak ada "ProxyLess"
    website_url=target_url,
    website_key=site_key,
    proxy="http://user:pass@proxy.example.com:8080"
)

5. Simpan Solusi Jika Memungkinkan

Token captcha biasanya berlaku selama 1-2 menit. Jika Anda perlu membuat beberapa permintaan, gunakan ulang token:

python Copy
import time

class CacheCaptcha:
    def __init__(self, ttl=120):  # TTL default 2 menit
        self.cache = {}
        self.ttl = ttl

    def get_or_solve(self, key, solve_func):
        """Dapatkan token yang disimpan atau selesaikan yang baru."""
        if key in self.cache:
            token, timestamp = self.cache[key]
            if time.time() - timestamp < self.ttl:
                return token

        token = solve_func()
        self.cache[key] = (token, time.time())
        return token

Tabel Perbandingan

Perbandingan Jenis Captcha

Fitur ReCaptcha v2 ReCaptcha v3 Cloudflare Turnstile
Interaksi Pengguna Checkbox + tantangan mungkin Tidak ada Minimal atau tidak ada
Format Kunci Situs 6L... 6L... 0x4...
Bidang Respons g-recaptcha-response g-recaptcha-response cf-turnstile-response
Parameter Action Tidak Ya (diperlukan) Opsional
Waktu Penyelesaian 1-10 detik 1-10 detik 1-20 detik
Tugas CapSolver ReCaptchaV2TaskProxyLess ReCaptchaV3TaskProxyLess AntiTurnstileTaskProxyLess

Perbandingan Fetcher Scrapling

Fitur Fetcher StealthyFetcher
Kecepatan Sangat cepat Lebih lambat
Dukungan JavaScript Tidak Ya
Fingerprint Browser Tidak ada Firefox nyata
Penggunaan Memori Rendah Lebih tinggi
Bypass Cloudflare Tidak Ya
Paling Cocok Untuk Permintaan sederhana Anti-bot kompleks

Pertanyaan yang Sering Diajukan

Q: Berapa biaya CapSolver?

Periksa halaman harga CapSolver untuk tarif terkini.

Q: Bagaimana cara menemukan kunci situs di halaman web?

Cari sumber halaman (Ctrl+U) untuk:

  • Atribut data-sitekey
  • Pemanggilan JavaScript grecaptcha.execute
  • Parameter render= di URL skrip reCaptcha
  • class="cf-turnstile" untuk Turnstile

Q: Apa yang terjadi jika token captcha kedaluwarsa sebelum saya menggunakannya?

Token biasanya kedaluwarsa setelah 1-2 menit. Selesaikan captcha secepat mungkin sebelum mengirimkan formulir. Jika Anda mendapatkan kesalahan validasi, selesaikan kembali dengan token baru.

Q: Bisakah saya menggunakan CapSolver dengan kode async?

Ya! Bungkus fungsi solve dalam executor async:

python Copy
import asyncio

async def async_solve_captcha(*args, **kwargs):
    loop = asyncio.get_event_loop()
    return await loop.run_in_executor(
        None,
        lambda: solve_captcha(*args, **kwargs)
    )

Q: Bagaimana cara menangani beberapa ReCaptchas di satu halaman?

Selesaikan setiap captcha secara terpisah dan sertakan semua token dalam pengiriman Anda:

python Copy
# Selesaikan beberapa ReCaptchas
solution_v2 = solve_captcha("ReCaptchaV2TaskProxyLess", url, key1)
solution_v3 = solve_captcha("ReCaptchaV3TaskProxyLess", url, key2, pageAction="submit")

# Kirim token menggunakan metode kelas Scrapling
response = Fetcher.post(url, data={
    "g-recaptcha-response": solution_v2["gRecaptchaResponse"],
    "g-recaptcha-response-v3": solution_v3["gRecaptchaResponse"],
})

Kesimpulan

Menggabungkan Scrapling dan CapSolver memberikan solusi kuat untuk mengambil data dari situs web yang dilindungi captcha. Berikut ringkasan singkat:

  1. Gunakan Fetcher Scrapling untuk permintaan sederhana di mana kecepatan penting
  2. Gunakan StealthyFetcher saat menghadapi sistem anti-bot yang canggih
  3. Gunakan CapSolver untuk menyelesaikan ReCaptcha v2, v3, dan Cloudflare Turnstile
  4. Terapkan praktik terbaik seperti pembatasan kecepatan, penanganan kesalahan, dan rotasi proxy

Ingat untuk mengambil data secara bertanggung jawab:

  • Hormati ketentuan situs web
  • Jangan membebani server dengan permintaan berlebihan
  • Gunakan data secara etis
  • Pertimbangkan untuk menghubungi pemilik situs web untuk akses API

Siap mulai mengambil data? Dapatkan kunci API CapSolver Anda di capsolver.com dan instal Scrapling dengan pip install "scrapling[all]".

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut

.Cara Menyelesaikan CAPTCHA dengan Python Menggunakan Botasaurus dan CapSolver (Panduan Lengkap)
Cara Menyelesaikan CAPTCHAs dengan Python Menggunakan Botasaurus dan CapSolver (Panduan Lengkap)

Pelajari cara mengintegrasikan Botasaurus (kerangka kerja pengambilan data web Python) dengan API CapSolver untuk menyelesaikan reCAPTCHA v2/v3 dan Turnstile secara otomatis.

web scraping
Logo of CapSolver

Emma Foster

15-Dec-2025

kesalahan pengambilan data web
Apa itu Kesalahan 402, 403, 404, dan 429 dalam Web Scraping? Panduan Lengkap

Menguasai penanganan kesalahan web scraping dengan memahami apa yang merupakan kesalahan 402, 403, 404, dan 429. Belajar cara memperbaiki kesalahan 403 Dilarang, menerapkan solusi pembatasan laju untuk kesalahan 429, dan menangani kode status 402 Pembayaran Diperlukan yang baru muncul.

web scraping
Logo of CapSolver

Aloísio Vítor

12-Dec-2025

Pengambilan Data Web Dengan Python
Web Scraping Dengan Python: 2026 Taktik Terbaik

Pelajari taktik pengambilan data web Python teratas untuk 2026, termasuk menangani konten JavaScript dinamis, mengelola alur otentikasi, menyelesaikan CAPTCHA, mengidentifikasi perangkap tersembunyi, meniru perilaku manusia, mengoptimalkan pola permintaan, dan mengurangi penggunaan sumber daya dalam proyek pengambilan data web skala besar.

web scraping
Logo of CapSolver

Ethan Collins

12-Dec-2025

Menyelesaikan CAPTCHA web scraping
Pengambilan Data Web Tanpa Terblokir dan Cara Mengatasi Captcha Web Scraping

Scrapping web telah menjadi teknik yang populer untuk mengekstrak data dari situs web. Namun, banyak situs web menggunakan langkah anti-scrapping, termasuk...

web scraping
Logo of CapSolver

Ethan Collins

11-Dec-2025

Penelusuran Web dan Pengambilan Data Web
Penjelajahan Web vs. Pengambilan Data Web: Perbedaan Essensial

Ketahui perbedaan penting antara web crawling dan web scraping. Pelajari tujuan mereka yang berbeda, 10 penggunaan kasus yang kuat, dan bagaimana CapSolver membantu melewati blok AWS WAF dan CAPTCHA untuk pengumpulan data yang mulus.

web scraping
Logo of CapSolver

Nikolai Smirnov

09-Dec-2025

Cara Mengatasi Captchas Saat Scrapping Web dengan Scrapling dan CapSolver
Cara Menyelesaikan Captchas Ketika Web Scraping dengan Scrapling dan CapSolver

Scrapling + CapSolver memungkinkan pengambilan data otomatis dengan ReCaptcha v2/v3 dan Cloudflare Turnstile bypass.

web scraping
Logo of CapSolver

Adélia Cruz

05-Dec-2025