ERROR_PAGEURL significa que o parâmetro pageurl não corresponde ao local onde o CAPTCHA está carregado. Os solucionadores validam os tokens no domínio de origem, portanto, o URL deve estar correto.
Causas Comuns
| Causa | Exemplo |
|---|---|
| Protocolo ausente | example.com em vez de https://example.com |
| Domínio errado | www.example.com vs example.com |
| Redirecionar URL alterado | Formulário em /login redirecionado para /auth/login |
| Incompatibilidade de rota SPA | Rota JS /app/login não corresponde ao URL do servidor |
| Problemas de codificação de URL | Espaços ou caracteres especiais não codificados |
| Iframe de domínio diferente | CAPTCHA carregado do subdomínio |
Como obter o URL correto
Regra: Utilize a URL na barra de endereços do navegador onde o CAPTCHA está visível.
# WRONG — incomplete URL
pageurl = "staging.example.com/qa-login"
# WRONG — wrong protocol
pageurl = "http://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"
Auxiliar de validação de 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"
Tratamento de redirecionamentos
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
Tratamento de SPAs (aplicativos de página única)
Os SPAs alteram o URL via JavaScript sem carregar a página inteira. O domínio do CAPTCHA é o que importa:
# 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"
CAPTCHAs carregados por iframe
Quando um CAPTCHA é carregado dentro de um iframe de um domínio diferente:
# 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"
Envio Correto
import requests
# Validate URL first
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')}")
Solução de problemas
| Problema | Causa | Correção |
|---|---|---|
| Erro apesar do URL parecer correto | incompatibilidade www vs não www | Verifique exatamente a barra de endereço |
| URL funciona algumas vezes, falha em outras | A página tem URLs de teste A/B | Capturar URL na hora da resolução |
| Token resolvido, mas rejeitado pelo site | incompatibilidade de domínio pageurl | O domínio do token deve corresponder ao domínio do site |
| Funciona no navegador, mas falha no código | Redirecionamento não seguido | Usar get_final_url() |
| URL tem parâmetros de consulta | Parâmetros podem ser necessários | Incluir parâmetros de consulta necessários |
Perguntas frequentes
O caminho do URL importa ou apenas o domínio?
O domínio é a parte crítica para a validação do token. No entanto, forneça o caminho completo para obter mais adequado resultados, pois alguns sites validam o URL completo.
Devo incluir parâmetros de consulta?
Inclua-os se fizerem parte do URL visível. Remova parâmetros de rastreamento como utm_source que não afetam o conteúdo da página.
Como lidar com URLs que mudam por sessão?
Extraia o URL dinamicamente no seu script de automação. Não codifique URLs que incluam IDs de sessão ou tokens.
Guias Relacionados
- Diagnóstico WRONG_GOOGLEKEY
- Validação BAD_PARAMETERS
- Obtenha o URL certo -resolver com CaptchaAI.*