لقد أرسلت اختبار CAPTCHA Turnstile إلى CaptchaAI، وحصلت على رمز مميز، لكن الموقع المستهدف رفضه. تم حل الرمز المميز تقنيًا - المشكلة تكمن في كيفية استخدامه أو وقت استخدامه. يغطي هذا الدليل كل أسباب فشل رموز Turnstile بعد الحل.
الأعراض
| ما تراه | السبب المحتمل |
|---|---|
| يقوم الموقع بإرجاع 403 بعد إرسال الرمز المميز | انتهت صلاحية الرمز المميز قبل الإرسال |
| فشل إرسال النموذج بصمت | اسم حقل خاطئ لإدخال الرمز المميز |
| تم قبول الرمز ولكن تم حظر الإجراء | عدم تطابق مفتاح الموقع - تم حل القطعة الخاطئة |
| يعمل مرة واحدة، ثم يفشل | الرمز المميز المستخدم بالفعل (الاستخدام الفردي) |
| يعمل في المتصفح، ويفشل في البرنامج النصي | ملفات تعريف الارتباط أو الرؤوس المفقودة |
السبب 1: انتهت صلاحية الرمز المميز
تنتهي صلاحية رموز Turnstile بسرعة - عادةً خلال 300 ثانية (5 دقائق). إذا استغرق الرمز الخاص بك وقتًا طويلاً بين استلام الرمز المميز وإرساله، فهذا يعني أن الرمز المميز قد انتهى.
الإصلاح: قم بإرسال الرمز المميز فورًا بعد استلامه.
import requests
import time
API_KEY = "YOUR_API_KEY"
# Submit Turnstile task
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAADnPIDROz1234",
"pageurl": "https://example.com/login",
"json": 1
}).json()
task_id = submit["request"]
time.sleep(10)
# Poll for result
for _ in range(24):
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
token = result["request"]
# USE TOKEN IMMEDIATELY — do not delay
response = requests.post("https://example.com/login", data={
"username": "user",
"password": "pass",
"cf-turnstile-response": token
})
break
time.sleep(5)
السبب 2: مفتاح الموقع غير صحيح
تحتوي كل أداة Turnstile على مفتاح موقع فريد. إذا كانت الصفحة تحتوي على عناصر واجهة مستخدم متعددة أو قمت بنسخ المفتاح الخاطئ، فسيكون الرمز المميز صالحًا ولكن سيتم رفضه.
كيفية العثور على مفتاح الموقع الصحيح:
// In browser console on the target page
document.querySelectorAll('[data-sitekey]').forEach(el => {
console.log('Sitekey:', el.getAttribute('data-sitekey'));
console.log('Element:', el);
});
إذا كان هناك العديد من مفاتيح الموقع، فاستخدم المفتاح المرفق بالنموذج الذي ترسله.
السبب 3: اسم الحقل غير صحيح
يتوقع Turnstile الرمز المميز في cf-turnstile-response، وليس g-recaptcha-response.
# WRONG — this is for reCAPTCHA
data = {"g-recaptcha-response": token}
# CORRECT — this is for Turnstile
data = {"cf-turnstile-response": token}
تستخدم بعض المواقع اسم حقل مخصصًا. افحص النموذج للعثور على الحقل الفعلي:
// Check what field the Turnstile widget populates
document.querySelector('[name*="turnstile"], [name*="cf-"]')
السبب 4: الرمز المميز مستخدم بالفعل
رموز Turnstile تستخدم لمرة واحدة. إذا قام الكود الخاص بك بإعادة محاولة طلب بنفس الرمز المميز، فستفشل المحاولة الثانية.
الإصلاح: حل اختبار CAPTCHA جديد لكل محاولة إرسال.
السبب 5: فقدان ملفات تعريف الارتباط أو سياق الجلسة
قد تقوم Cloudflare بالتحقق من صحة الرمز المميز مقابل ملفات تعريف الارتباط الخاصة بالجلسة. إذا قمت بحل اختبار CAPTCHA في جلسة واحدة وأرسلته في جلسة أخرى، فمن المحتمل أن يتم الرفض.
# Use the SAME session for page load and token submission
session = requests.Session()
# Load the page first to establish cookies
session.get("https://example.com/login")
# Then solve and submit using the same session
token = solve_turnstile(sitekey, pageurl)
session.post("https://example.com/login", data={
"cf-turnstile-response": token
})
السبب 6: عدم تطابق الإجراء أو cData
تتضمن بعض تطبيقات Turnstile معلمات action أو cData المرتبطة بالرمز المميز. إذا كان الموقع يتوقع هذه الأمور، فيجب عليك اجتيازها عند الحل.
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAADnPIDROz1234",
"pageurl": "https://example.com/login",
"action": "login", # If required by the site
"data": "custom_cdata_value", # If required by the site
"json": 1
}).json()
شجرة القرار
Token solved but rejected
↓
Used within 5 minutes? → No → Solve again, submit immediately
↓ Yes
Correct sitekey? → No → Find the correct sitekey from the page
↓ Yes
Using cf-turnstile-response field? → No → Change field name
↓ Yes
Same session for page load + submit? → No → Use session persistence
↓ Yes
Token used only once? → No → Solve a new token per submission
↓ Yes
Site requires action/cData? → Check page source, add to API call
الأسئلة الشائعة
ما المدة التي تدوم فيها رموز Turnstile؟
عادة 300 ثانية (5 دقائق). تحدد بعض التطبيقات انتهاء صلاحية أقصر. قم بإرسال الرمز خلال ثواني من استلامه.
هل Turnstile هو نفس Cloudflare Challenge؟
لا، إن Turnstile عبارة عن عنصر واجهة مستخدم مضمن (مثل reCAPTCHA). Cloudflare Challenge عبارة عن إعلان بيني بملء الصفحة. يستخدمون طرق CaptchaAI المختلفة: turnstile vs cloudflare_challenge.
لماذا يعمل الرمز المميز الخاص بي في Postman وليس في البرنامج النصي الخاص بي؟
ربما يرسل ساعي البريد رؤوسًا أو ملفات تعريف ارتباط مختلفة. قم بمطابقة رؤوس البرنامج النصي وحالة الجلسة مع ما يرسله المتصفح.
قم بحل اختبارات CAPTCHA الخاصة بTurnstile في CaptchaAI
احصل على حل Turnstile الموثوق به فيcaptchaai.com.