ERROR_PAGEURL berarti parameter pageurl tidak cocok dengan tempat CAPTCHA di-load. Solver memvalidasi token terhadap domain asal, sehingga URL harus tepat.
Penyebab Umum
| Penyebab | Contoh |
|---|---|
| Protokol tidak ada | example.com bukan https://example.com |
| Domain salah | www.example.com vs example.com |
| Redirect mengubah URL | Form di /login di-redirect ke /auth/login |
| Mismatch route SPA | Route JS /app/login tidak cocok dengan URL server |
| Masalah URL encoding | Spasi atau karakter khusus tidak di-encode |
| iframe dari domain berbeda | CAPTCHA di-load dari subdomain |
Cara Mendapatkan URL yang Benar
Aturan: Gunakan URL di bilah alamat browser tempat CAPTCHA terlihat.
# WRONG — incomplete URL
pageurl = "staging.example.com/qa-login"
# WRONG — wrong protocol
pageurl = "https://staging.example.com/qa-login"
# CORRECT — full URL with protocol
pageurl = "https://staging.example.com/qa-login"
# CORRECT — with www if that's what the page uses
pageurl = "https://www.staging.example.com/qa-login"
Helper Validasi URL
from urllib.parse import urlparse
def validate_pageurl(url):
"""Validate pageurl before API submission."""
parsed = urlparse(url)
if not parsed.scheme:
raise ValueError(f"Missing protocol: {url}. Use https://")
if parsed.scheme not in ("http", "https"):
raise ValueError(f"Invalid protocol: {parsed.scheme}")
if not parsed.netloc:
raise ValueError(f"Missing domain: {url}")
# Remove fragment (hash) — not sent to server
clean = f"{parsed.scheme}://{parsed.netloc}{parsed.path}"
if parsed.query:
clean += f"?{parsed.query}"
return clean
# Usage
url = validate_pageurl("https://staging.example.com/qa-login#section")
# Returns: "https://staging.example.com/qa-login"
Menangani Redirect
import requests
def get_final_url(url):
"""Follow redirects to get the actual page URL."""
resp = requests.get(url, allow_redirects=True, timeout=15)
return resp.url
# If the login page redirects
original = "https://staging.example.com/qa-login"
final = get_final_url(original)
print(f"Final URL: {final}")
# Use final URL as pageurl
Menangani SPA (Single Page Application)
SPA mengubah URL melalui JavaScript tanpa memuat halaman penuh. Domain CAPTCHA adalah yang terpenting:
# For SPAs, use the domain root + the route shown in the address bar
# NOT the API endpoint that the form submits to
# WRONG — API endpoint
pageurl = "https://api.example.com/v1/auth/login"
# CORRECT — the page URL shown in browser
pageurl = "https://staging.example.com/qa-login"
CAPTCHA yang Di-load dalam iframe
Saat CAPTCHA dimuat di dalam iframe dari domain berbeda:
# If the CAPTCHA is on the MAIN page
pageurl = "https://example.com/register" # Main page URL
# If the CAPTCHA is in an IFRAME with a different domain
# Still use the main page URL, not the iframe src
pageurl = "https://example.com/register"
# NOT: "https://captcha-frame.example.com/challenge"
Submit yang Benar
import requests
# Validasi URL terlebih dahulu
pageurl = validate_pageurl("https://staging.example.com/qa-login")
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "SITE_KEY",
"pageurl": pageurl,
"json": 1,
})
result = resp.json()
if result.get("status") == 1:
print(f"Task ID: {result['request']}")
else:
print(f"Error: {result.get('request')}")
Pemecahan Masalah
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Error meskipun URL terlihat benar | Mismatch www vs non-www | Periksa address bar dengan teliti |
| Terkadang berhasil, terkadang gagal | Halaman memiliki URL A/B testing | Tangkap URL pada saat solve |
| Token di-solve tapi ditolak situs | Mismatch domain pageurl | Domain token harus cocok dengan domain situs |
| Berhasil di browser tapi gagal di kode | Redirect tidak diikuti | Gunakan get_final_url() |
| URL memiliki query parameter | Parameter mungkin diperlukan | Sertakan query parameter yang diperlukan |
Pertanyaan Umum
Apakah path URL penting atau hanya domain-nya saja?
Domain adalah bagian terpenting untuk validasi token. Namun berikan path lengkap untuk hasil terbaik, karena beberapa situs memvalidasi URL lengkap.
Haruskah saya menyertakan query parameter?
Sertakan jika itu bagian dari URL yang terlihat. Hapus parameter tracking seperti utm_source yang tidak memengaruhi konten halaman.
Bagaimana cara menangani URL yang berubah per sesi?
Ekstrak URL secara dinamis dalam skrip otomatisasi Anda. Jangan hardcode URL yang menyertakan session ID atau token.
Panduan Terkait
- Diagnosis ERROR_WRONG_GOOGLEKEY
Dapatkan URL yang benar — solve dengan CaptchaAI.