ERROR_PAGEURL signifie que le paramètre pageurl ne correspond pas à l'endroit où le CAPTCHA est chargé. Les solveurs valident les jetons par rapport au domaine d'origine, l'URL doit donc être correcte.
Causes courantes
| Parce que | Exemple |
|---|---|
| Protocole manquant | example.com au lieu de https://example.com |
| Mauvais domaine | www.example.com contre example.com |
| Rediriger l'URL modifiée | Formulaire à /login redirigé vers /auth/login |
| Inadéquation de l'itinéraire SPA | La route JS /app/login ne correspond pas à l'URL du serveur |
| Problèmes d'encodage d'URL | Espaces ou caractères spéciaux non codés |
| Iframe d'un domaine différent | CAPTCHA chargé depuis le sous-domaine |
Comment obtenir la bonne URL
Règle : Utilisez l'URL dans la barre d'adresse du navigateur où le CAPTCHA est visible.
# WRONG — incomplete URL
pageurl = "example.com/login"
# WRONG — wrong protocol
pageurl = "http://example.com/login"
# CORRECT — full URL with protocol
pageurl = "https://example.com/login"
# CORRECT — with www if that's what the page uses
pageurl = "https://www.example.com/login"
Aide à la validation d'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://example.com/login#section")
# Returns: "https://example.com/login"
Gestion des redirections
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://example.com/login"
final = get_final_url(original)
print(f"Final URL: {final}")
# Use final URL as pageurl
Gestion des SPA (applications à page unique)
Les SPA modifient l'URL via JavaScript sans chargement de page complète. Le domaine du CAPTCHA est ce qui compte :
# 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://example.com/login"
CAPTCHA chargés en Iframe
Lorsqu'un CAPTCHA se charge dans une iframe provenant d'un domaine différent :
# 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"
Soumission correcte
import requests
# Validate URL first
pageurl = validate_pageurl("https://example.com/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')}")
Dépannage
| Problème | Parce que | Corriger |
|---|---|---|
| Erreur malgré une URL qui semble correcte | Incompatibilité entre www et non-www | Vérifiez exactement la barre d'adresse |
| L'URL fonctionne parfois, échoue dans d'autres | La page contient des URL de test A/B | Capturer l'URL au moment de la résolution |
| Jeton résolu mais rejeté par le site | incompatibilité de domaine d'URL de page | Le domaine du jeton doit correspondre au domaine du site |
| Fonctionne dans le navigateur mais échoue dans le code | Redirection non suivie | Utiliser get_final_url() |
| L'URL comporte des paramètres de requête | Des paramètres peuvent être requis | Inclure les paramètres de requête nécessaires |
FAQ
Le chemin de l’URL est-il important ou uniquement le domaine ?
Le domaine est la partie critique pour la validation des jetons. Cependant, fournissez le chemin complet pour de meilleurs résultats, car certains sites valident l'URL complète.
Dois-je inclure des paramètres de requête ?
Incluez-les s'ils font partie de l'URL visible. Supprimez les paramètres de suivi tels que utm_source qui n'affectent pas le contenu de la page.
Comment gérer les URL qui changent par session ?
Extrayez l'URL de manière dynamique dans votre script d'automatisation. Ne codez pas en dur les URL qui incluent des ID de session ou des jetons.
Guides connexes
- WRONG_GOOGLEKEY Diagnostic
- Validation de BAD_PARAMETERS
Obtenez la bonne URL —résoudre avec CaptchaAI.