يجلب GeeTest v4 تغييرات كبيرة في البنية وأنواع التحديات وأنماط التكامل مقارنة بالإصدار 3. يشرح هذا الدليل ما تغير وكيفية حل تحديات الإصدار الرابع.
GeeTest v3 vs v4 — الاختلافات الرئيسية
| ميزة | GeeTest v3 | GeeTest v4 |
|---|---|---|
| التهيئة | gt + challenge من الخادم |
captcha_id فقط |
| معلمة التحدي | مطلوب من استدعاء API | تم إنشاؤها من جانب العميل |
| أنواع التحدي | حرك، انقر | قم بالتمرير، والنقر، واختيار الرمز، والتفكير في المساحة |
| التحقق من الصحة | يقوم الخادم بإرجاع challenge |
يستخدم lot_number + pass_token |
| نقطة نهاية API | api.geetest.com |
gcaptcha4.geetest.com |
| صعوبة التحجيم | ثابت | تسجيل المخاطر التكيفية |
استخراج معلمات GeeTest v4
# extract_geetest_v4.py
import re
from selenium import webdriver
def extract_geetest_v4_params(url):
"""Extract GeeTest v4 captcha_id from a page."""
driver = webdriver.Chrome()
driver.get(url)
page_source = driver.page_source
# GeeTest v4 uses captcha_id instead of gt
match = re.search(r'captcha_id["\']?\s*[:=]\s*["\']([a-f0-9]+)', page_source)
captcha_id = match.group(1) if match else None
# Check for v4-specific script
is_v4 = "gcaptcha4" in page_source or "gt4.js" in page_source
driver.quit()
return {
"captcha_id": captcha_id,
"is_v4": is_v4,
"pageurl": url,
}
# Usage
params = extract_geetest_v4_params("https://example.com/login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")
حل GeeTest v4 مع CaptchaAI
# solve_geetest_v4.py
import requests
import time
import os
def solve_geetest_v4(captcha_id, pageurl):
"""Submit GeeTest v4 to CaptchaAI and get solution."""
api_key = os.environ["CAPTCHAAI_API_KEY"]
# Submit task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "geetest",
"gt": captcha_id, # captcha_id maps to the gt parameter
"pageurl": pageurl,
"version": "4", # Specify v4 explicitly
"json": 1,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
raise RuntimeError(f"Submit failed: {result.get('request')}")
task_id = result["request"]
# Poll for result
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key,
"action": "get",
"id": task_id,
"json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"] # Contains validation tokens
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("GeeTest v4 solve timeout")
# Usage
solution = solve_geetest_v4(
captcha_id="abc123def456",
pageurl="https://example.com/login",
)
print(f"Solution: {solution}")
حقن محلول GeeTest v4
# inject_geetest_v4.py
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
def inject_geetest_v4_solution(driver, solution):
"""Inject GeeTest v4 solution tokens into the page."""
# Parse solution — v4 returns different tokens than v3
if isinstance(solution, str):
try:
solution = json.loads(solution)
except json.JSONDecodeError:
pass
# GeeTest v4 validation uses lot_number, pass_token, gen_time, captcha_output
driver.execute_script("""
var solution = arguments[0];
// Set hidden form fields
var fields = {
'lot_number': solution.lot_number,
'pass_token': solution.pass_token,
'gen_time': solution.gen_time,
'captcha_output': solution.captcha_output,
};
for (var name in fields) {
var input = document.querySelector('input[name="' + name + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = name;
document.forms[0].appendChild(input);
}
input.value = fields[name];
}
// Trigger validation callback if available
if (window.captchaObj && typeof window.captchaObj.appendTo === 'function') {
window.captchaObj.appendTo('#captcha-container');
}
""", solution)
أنواع التحدي v4
لغز الشريحة
التحدي الكلاسيكي للمطابقة. يقوم المستخدم بسحب قطعة اللغز.
انقر فوق التحديد
ينقر المستخدم على كائنات محددة (على سبيل المثال، "النقر على كل الوجوه"). يستخدم التعرف على الرموز.
المنطق الفضاء
الجديد في الإصدار 4 — يقوم المستخدم بترتيب الأشكال بنمط مكاني. أكثر تعقيدًا من الإصدار 3.
مطابقة الأيقونة
يطابق المستخدم الرموز الموضحة في تسلسل. من الصعب أتمتة يدويا.
** يتعامل CaptchaAI مع جميع أنواع تحديات الإصدار 4 ** — تلخص واجهة برمجة التطبيقات المنطق الخاص بالتحدي.
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
استخدام قيمة v3 gt بدلاً من v4 captcha_id |
تحقق من الصفحة للحصول على البرنامج النصي gcaptcha4 لتأكيد الإصدار 4 |
| تم رفض الحل | معلمة version=4 مفقودة |
قم دائمًا بتحديد version: "4" للإصدار 4 |
لم يتم العثور على captcha_id |
JavaScript المقدمة | استخدم السيلينيوم للاستخراج من الصفحة المعروضة |
| خطأ في تنسيق الرمز المميز | تحليل السلسلة بدلاً من JSON | تحليل الحل كـ JSON للحصول على الرموز الفردية |
الأسئلة الشائعة
كيف أعرف ما إذا كان الموقع يستخدم GeeTest v3 أو الإصدار 4؟
ابحث عن gcaptcha4.geetest.com أو gt4.js في مصدر الصفحة للإصدار 4. إذا رأيت api.geetest.com ومعلمة challenge، فهذا هو الإصدار v3.
هل حل GeeTest v4 أصعب من حل الإصدار الثالث؟
بالنسبة للحلول الآلية، لا. يتعامل CaptchaAI مع كلا الإصدارين. تؤثر الصعوبة التكيفية لـ V4 على احتكاك المستخدم النهائي ولكن ليس على الحل القائم على واجهة برمجة التطبيقات.
ما هو معدل نجاح GeeTest v4؟
تشير CaptchaAI إلى معدل نجاح بمعدل نجاح عالٍ في تحديات GeeTest، وهو ما يتوافق مع الإصدارين 3 و4.
أدلة ذات صلة
- معلمات GeeTest Slide CAPTCHA ودليل واجهة برمجة التطبيقات
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق
حل تحديات GeeTest v4 —ابدأ بـ CaptchaAI.