ERROR_PAGEURL có nghĩa là tham số pageurl không khớp với vị trí tải CAPTCHA. Bộ giải xác thực mã thông báo dựa trên miền gốc, do đó URL phải chính xác.
Nguyên nhân phổ biến
| nguyên nhân | Ví dụ |
|---|---|
| Thiếu giao thức | example.com thay vì https://example.com |
| Tên miền sai | www.example.com vs example.com |
| Chuyển hướng URL đã thay đổi | Biểu mẫu tại /login được chuyển hướng đến /auth/login |
| Tuyến đường SPA không khớp | Tuyến JS /app/login không khớp với URL máy chủ |
| Sự cố mã hóa URL | Dấu cách hoặc ký tự đặc biệt không được mã hóa |
| Iframe từ miền khác | CAPTCHA được tải từ tên miền phụ |
Cách lấy URL chính xác
Quy tắc: Sử dụng URL trong thanh địa chỉ của trình duyệt nơi hiển thị CAPTCHA.
# 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://staging.example.com/qa-login"
Trình trợ giúp xác thực 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"
Xử lý chuyển hướng
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
Xử lý SPA (Ứng dụng một trang)
SPA thay đổi URL thông qua JavaScript mà không cần tải toàn bộ trang. Tên miền của CAPTCHA mới là điều quan trọng:
# 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 được tải bằng khung nội tuyến
Khi CAPTCHA tải bên trong iframe từ một miền khác:
# 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"
Gửi đúng
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')}")
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Lỗi mặc dù URL trông chính xác | www và không phải www không khớp | Kiểm tra chính xác thanh địa chỉ |
| URL đôi khi hoạt động, đôi khi không thành công | Trang có URL thử nghiệm A/B | Chụp URL tại thời điểm giải quyết |
| Mã thông báo đã được giải quyết nhưng bị trang web từ chối | tên miền pageurl không khớp | Miền mã thông báo phải khớp với miền trang web |
| Hoạt động trong trình duyệt nhưng không có mã | Chuyển hướng không được theo dõi | Sử dụng get_final_url() |
| URL có tham số truy vấn | Các thông số có thể được yêu cầu | Bao gồm các thông số truy vấn cần thiết |
Câu hỏi thường gặp
Đường dẫn URL có quan trọng hay chỉ tên miền?
Miền là phần quan trọng để xác thực mã thông báo. Tuy nhiên, hãy cung cấp đường dẫn đầy đủ để có kết quả tốt nhất vì một số trang web xác thực URL đầy đủ.
Tôi có nên bao gồm các tham số truy vấn không?
Bao gồm chúng nếu chúng là một phần của URL hiển thị. Xóa các tham số theo dõi như utm_source không ảnh hưởng đến nội dung trang.
Làm cách nào để xử lý các URL thay đổi mỗi phiên?
Trích xuất URL động trong tập lệnh tự động hóa của bạn. Không mã hóa cứng các URL bao gồm ID phiên hoặc mã thông báo.
Hướng dẫn liên quan
- Chẩn đoán WRONG_GOOGLEKEY
- Xác thực BAD_PARAMETERS
Nhận đúng URL —giải quyết với CaptchaAI.