Penjelasan Mendalam

Cara Kerja Cloudflare Challenge

Saat Cloudflare mencurigai pengunjung adalah bot, Cloudflare menampilkan interstitial satu halaman penuh dengan pesan "Memeriksa browser Anda sebelum mengakses..." atau "Verifikasi bahwa Anda adalah manusia." Ini disebut Cloudflare Challenge — berbeda dengan Turnstile, yang merupakan widget yang tertanam di dalam halaman.

Challenge ini memblokir akses ke seluruh halaman hingga browser lulus verifikasi. Setelah lulus, Cloudflare menetapkan cookie qa_validation_cookie yang memberikan akses untuk request berikutnya.


Alur Challenge

Request → Cloudflare proxy → Suspicious? → Challenge page
                                              ↓
                                    Browser verification
                                              ↓
                                    qa_validation_cookie cookie set
                                              ↓
                                    Original page loads
  1. Request dicegat — Reverse proxy Cloudflare mengevaluasi request masuk
  2. Risk assessment — Reputasi IP, header request, TLS sinyal browser, dan perilaku dianalisis
  3. Challenge disajikan — Jika mencurigakan, halaman challenge menggantikan respons yang diinginkan
  4. Verifikasi browser — JavaScript challenge dijalankan di browser
  5. Cookie disetel — Jika berhasil, cookie qa_validation_cookie disetel dengan TTL yang dapat dikonfigurasi
  6. Akses diberikan — Browser reload dan menerima konten halaman asli

Apa yang Memicu Cloudflare Challenge

Pemicu Deskripsi
IP datacenter Request dari hosting provider yang dikenal
Header tidak ada HTTP header tidak ada atau tidak biasa
TLS sinyal browser sinyal browser JA3/JA4 cocok dengan tanda tangan bot
Rate request tinggi Terlalu banyak request dari IP yang sama
Security level setting Pemilik situs menetapkan threshold challenge ke tinggi
Aturan berbasis negara Geo-blocking atau challenge rules
Bot score ML bot score Cloudflare terlalu rendah
Known threat IP ada di daftar threat intelligence

Setelah melewati challenge, browser menerima:

qa_validation_cookie=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None

Properti utama:

  • Durasi: 15 menit hingga 24 jam (dapat dikonfigurasi pemilik situs)
  • Cakupan: Terikat dengan domain tertentu
  • Binding: Terikat ke User-Agent dan IP yang digunakan saat verifikasi
  • Penggunaan: Harus disertakan dalam semua request berikutnya untuk menghindari challenge ulang

Penting: Cookie qa_validation_cookie terikat pada User-Agent dan alamat IP spesifik yang digunakan saat verifikasi. Mengubah salah satunya akan membuat cookie tidak valid.


Cloudflare Challenge vs Turnstile vs JavaScript Challenge

Fitur CF Challenge Turnstile JS Challenge
Tipe Interstitial satu halaman penuh Widget dalam halaman Pengecekan diam
Pengguna melihat Halaman "Memeriksa browser Anda" Checkbox atau tidak sama sekali Tidak ada
Memblokir akses halaman Ya Tidak Sebentar
Menyetel qa_validation_cookie Ya Kadang-kadang Ya
Membutuhkan proxy untuk solve Ya Tidak N/A
Butuh Cloudflare CDN Diperlukan Opsional Diperlukan

Solve Cloudflare Challenge dengan CaptchaAI

Solving Cloudflare Challenge memerlukan proxy karena cookie qa_validation_cookie terikat pada alamat IP.

Python

import requests
import time

API_KEY = "YOUR_API_KEY"

# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com/protected-page",
    "proxy": "username:password@proxy.example.com:8080",
    "proxytype": "HTTP",
    "json": 1
})

task_id = response.json()["request"]

# Poll for result
for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()

    if result.get("status") == 1:
        solution = result["request"]
        # solution contains qa_validation_cookie cookie + user_agent
        print(f"qa_validation_cookie: {solution}")
        break

Node.js

const axios = require('axios');

async function solveCloudflareChallenge(pageurl, proxy) {
  const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
    params: {
      key: 'YOUR_API_KEY',
      method: 'cloudflare_challenge',
      pageurl,
      proxy,
      proxytype: 'HTTP',
      json: 1
    }
  });

  const taskId = data.request;

  for (let i = 0; i < 60; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (res.data.status === 1) return res.data.request;
  }
  throw new Error('Timeout');
}
# After getting the solution
qa_validation_cookie = solution["qa_validation_cookie"]
user_agent = solution["user_agent"]

# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("qa_validation_cookie", qa_validation_cookie, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}

# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")

Mengapa Proxy Diperlukan

Cookie qa_validation_cookie terikat secara kriptografis ke:

  1. Alamat IP — Solving harus dilakukan dari IP yang sama yang akan Anda gunakan
  2. User-Agent — User-Agent saat solving harus cocok dengan request Anda
  3. TLS sinyal browser — Beberapa konfigurasi juga memeriksa karakteristik TLS

Jika salah satu berbeda antara solving dan request berikutnya, cookie tidak valid.


Pertanyaan Umum

Pemilik situs mengkonfigurasi durasinya, biasanya 15 menit hingga 24 jam. Setelah kedaluwarsa, challenge baru harus di-solve.

Tidak. Cookie terikat pada IP yang digunakan saat verifikasi. Mengubah IP memerlukan solve baru.

Apa perbedaan antara Cloudflare Challenge dan Turnstile?

Cloudflare Challenge adalah interstitial satu halaman penuh yang memblokir akses halaman. Turnstile adalah widget yang tertanam di dalam halaman, mirip reCAPTCHA. Challenge mensyaratkan situs menggunakan Cloudflare sebagai proxy; Turnstile bisa digunakan di situs mana pun.

Berapa lama solving berlangsung?

Solving Cloudflare Challenge memerlukan 20–60 detik, lebih lama dari Turnstile atau reCAPTCHA karena verifikasi browser penuh.

Bagaimana jika halaman memiliki Cloudflare dan reCAPTCHA?

Solve Cloudflare Challenge lebih dulu untuk mengakses halaman, lalu solve reCAPTCHA pada halaman yang dimuat.


Panduan Terkait

Komentar dinonaktifkan untuk artikel ini.