Anda solve Cloudflare Challenge via CaptchaAI, mendapat cookie qa_validation_cookie, menyetelnya di sesi — dan halaman challenge muncul lagi. Loop ini terjadi saat cookie tidak cocok dengan konteks sesi. Berikut setiap penyebab dan cara memperbaikinya.
Cara Kerja qa_validation_cookie
Saat CaptchaAI solve Cloudflare Challenge, ia mengembalikan cookie qa_validation_cookie. Cookie ini terikat pada:
- IP proxy yang digunakan selama solving
- User-Agent yang digunakan selama solving
- Domain situs target
Jika salah satu berbeda antara solving dan request berikutnya, Cloudflare menolak cookie dan menampilkan challenge lagi.
Penyebab 1: User-Agent Tidak Cocok
Penyebab paling umum. User-Agent yang Anda kirim ke CaptchaAI harus sama persis dengan User-Agent dalam request Anda.
import requests
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
# Step 1: Solve with the SAME User-Agent
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": "host:port:user:pass",
"proxytype": "HTTP",
"userAgent": USER_AGENT, # Must match step 2
"json": 1
}
submit = requests.post("https://ocr.captchaai.com/in.php", data=solve_data).json()
# ... poll for result ...
# Step 2: Gunakan User-Agent YANG SAMA dalam request berikutnya
session = requests.Session()
session.headers["User-Agent"] = USER_AGENT # Must match step 1
session.cookies.set("qa_validation_cookie", cf_clearance_value, domain=".example.com")
resp = session.get("https://example.com")
Penyebab 2: IP Proxy Tidak Cocok
Cookie qa_validation_cookie terikat pada IP yang men-solve challenge. Jika Anda request situs dari IP berbeda, cookie ditolak.
PROXY = "host:port:user:pass"
# Solve with this proxy
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": PROXY,
"proxytype": "HTTP",
"userAgent": USER_AGENT,
"json": 1
}
# Use the SAME proxy for subsequent requests
session.proxies = {
"http": f"http://user:pass@host:port",
"https": f"http://user:pass@host:port"
}
Penting: Jika menggunakan rotasi egress jaringan yang diotorisasi, sematkan ke sticky session. IP harus tetap sama antara solving dan browsing.
Penyebab 3: Cookie Tidak Di-Set dengan Benar
Cookie qa_validation_cookie harus di-set pada domain yang benar dengan atribut yang tepat.
# WRONG — setting on wrong domain
session.cookies.set("qa_validation_cookie", value, domain="example.com")
# CORRECT — include the dot prefix for subdomain coverage
session.cookies.set("qa_validation_cookie", value, domain=".example.com")
# Or set all cookies returned by CaptchaAI
for cookie_str in result.get("cookies", "").split(";"):
if "qa_validation_cookie" in cookie_str:
name, val = cookie_str.strip().split("=", 1)
session.cookies.set(name.strip(), val.strip(), domain=".example.com")
Penyebab 4: Cookie Kedaluwarsa
Cookie qa_validation_cookie memiliki lifetime terbatas — biasanya 15–30 menit. Setelah kedaluwarsa, Cloudflare menampilkan challenge lagi.
Perbaikan: Lacak umur cookie dan solve ulang sebelum kedaluwarsa.
import time
last_solve_time = None
COOKIE_TTL = 900 # 15 minutes
def get_cf_clearance():
global last_solve_time
if last_solve_time and (time.time() - last_solve_time) < COOKIE_TTL:
return # Cookie still valid
# Solve again
qa_validation_cookie = solve_cloudflare_challenge()
session.cookies.set("qa_validation_cookie", qa_validation_cookie, domain=".example.com")
last_solve_time = time.time()
Penyebab 5: TLS sinyal browser Tidak Cocok
Cloudflare memeriksa TLS sinyal browser. Library requests Python memiliki TLS sinyal browser yang berbeda dari Chrome. Beberapa situs menolak request bahkan dengan qa_validation_cookie yang valid jika TLS sinyal browser tidak cocok.
Perbaikan: Gunakan curl_cffi atau tls-client untuk TLS sinyal browser seperti browser.
pip install curl_cffi
from curl_cffi import requests as curl_requests
session = curl_requests.Session(impersonate="chrome120")
session.cookies.set("qa_validation_cookie", value, domain=".example.com")
resp = session.get("https://example.com")
Checklist Debug
Challenge terus berulang
↓
User-Agent di solve request cocok dengan browsing request? → Tidak → Samakan User-Agent
↓ Ya
Proxy IP sama untuk solve dan browse? → Tidak → Pin proxy IP (sticky session)
↓ Ya
Cookie di-set di domain yang benar (.example.com)? → Tidak → Perbaiki domain
↓ Ya
Cookie kurang dari 15 menit? → Tidak → Solve ulang challenge
↓ Ya
TLS sinyal browser cocok browser? → Tidak → Gunakan curl_cffi atau tls-client
↓ Ya
Situs mungkin punya bot detection tambahan → Gunakan headless browser
Pertanyaan Umum
Berapa lama cookie qa_validation_cookie bertahan?
Biasanya 15–30 menit. Beberapa situs menetapkan durasi lebih pendek. Solve ulang secara proaktif sebelum kedaluwarsa.
Apakah saya perlu versi Chrome tertentu di User-Agent?
Gunakan User-Agent terkini dan realistis. User-Agent yang ketinggalan zaman memicu pemeriksaan Cloudflare lebih agresif.
Bisakah saya gunakan kembali cookie qa_validation_cookie di halaman berbeda?
Ya, selama berada di domain yang sama dan Anda menggunakan IP dan User-Agent yang sama.
Panduan Terkait
- Cara Solve Cloudflare Challenge via API
- Cloudflare Challenge vs Turnstile: Cara Mendeteksi
- Persistensi Sesi Browser untuk Alur Kerja CAPTCHA