أداة حل الكابتشا لـ
Playwright
حلّ التحدي داخل التشغيل بدلًا من إفشال المهمة. مثال عملي بلغة Python، والعوامل الثلاثة التي تحدد قبول الرمز token.
import time
import requests
CAPTCHANO_KEY = "cn-YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {CAPTCHANO_KEY}"}
def solve(task: dict) -> dict:
"""Block until solved; returns e.g. {"token": "...", "userAgent": "..."}."""
r = requests.post(
"https://api.captchano.com/v1/solve",
params={"wait": 60},
json=task,
headers=HEADERS,
timeout=75,
)
data = r.json()
# A solve can outlast the 60 s wait: poll the task until it finishes.
while data.get("status") in ("queued", "solving"):
time.sleep(5)
data = requests.get(
f"https://api.captchano.com/v1/task/{data['id']}",
headers=HEADERS,
timeout=30,
).json()
if data.get("status") != "ready":
raise RuntimeError(data.get("error") or data)
return data["solution"]
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/register")
sitekey = page.get_attribute("[data-sitekey]", "data-sitekey")
solution = solve({"type": "recaptcha_v2", "sitekey": sitekey, "url": page.url})
page.evaluate(
"t => document.getElementById('g-recaptcha-response').value = t",
solution["token"],
)
page.click("button[type=submit]")ما الذي يحدد قبول الرمز token
- مرّر البروكسي الخاص بك. يجب أن يُنشأ الرمز token خلف عنوان IP الخروج نفسه الذي يرسله. وفي الأنظمة التي تقيّم الجلسة، يكون هذا إلزاميًا، وليس مجرد تحسين.
- طابِق وكيل المستخدم. يربط Turnstile وعدة أنظمة حماية من الروبوتات الرمز token بوكيل مستخدم. نُعيد لك الوكيل المستخدَم كي تعيد استخدامه كما هو تمامًا.
- اطلب متأخرًا. تنتهي صلاحية الرموز token خلال 120 ثانية تقريبًا. اطلب رمزًا عندما تكون مستعدًا للإرسال.
الانتظار المتزامن أم الاستطلاع الدوري
يستخدم المثال ?wait=60، فيُعيد الاستدعاء عملية الحل مكتملة وتبقى خطوة Playwright لديك خطية. وإن كنت تفضّل عدم إبقاء الاتصال مفتوحًا، فاحذف المعامل، واحتفظ بالمعرّف id المُعاد، واستطلع GET /v1/task/{id} كل خمس ثوانٍ. يبقى الرمز token الذي دفعت ثمنه قابلًا للاسترجاع لمدة عشر دقائق، لذا فإن انقطاع الاتصال لا يُفقدك عملية الحل.
التكلفة
$0.00598 لكل عملية حل ناجحة لـ reCAPTCHA v2، ولا تُحتسب عمليات الحل الفاشلة أبدًا. راجع الأسعار لكل أنواع التحديات، أو مرجع API للاطلاع على شكل الطلب الكامل.
كيف تندمج عملية الحل في Playwright
تسهّل محددات المواقع (locators) في Playwright قراءة الأداة، ويُدرج page.evaluate الرمز token. اطلب الحل في أقرب وقت ممكن من الإرسال، كي لا تُستهلك مدة صلاحية الرمز البالغة دقيقتين في التنقل.
- 01أنشئ سياقًا
browser.new_context مع البروكسي ووكيل المستخدم اللذين سترسل منهما.
- 02اقرأ الأداة
page.locator('[data-sitekey]').first، ثم get_attribute لقراءة sitekey وcallback.
- 03الحل
أرسل بطلب POST إلى /v1/solve?wait=60 مع type وsitekey وpage.url والبروكسي ووكيل المستخدم.
- 04الإدراج والإرسال والتحقق
استخدم page.evaluate للإدراج، وانقر على زر الإرسال، ثم تحقق مما تعرضه الصفحة فعليًا.
إدراج الرمز token في الصفحة
يملأ page.evaluate حقل الاستجابة ويستدعي دالة data-callback مع الرمز token.
أين تخطئ عمليات التكامل عادةً
السكربت الذي يسجّل 'solved' بعد النقر على زر الإرسال لم يتحقق من أي شيء. تحقق من حالة النجاح في الصفحة.
اضبط البروكسي على السياق الذي تستخدمه للصفحة، وأرسل البروكسي نفسه مع طلب الحل.
إذا كانت الصفحة تستدعي grecaptcha.render، فابحث عن اسم callback في السكربت الخاص بالصفحة نفسها.
الأسئلة الشائعة حول الكابتشا في Playwright
هل يستطيع Playwright تجاوز الكابتشا دون أداة حل؟
ليس بشكل موثوق. يؤتمت Playwright المتصفح لكنه لا يستطيع الإجابة عن تحديات الصور. تنجح مكتبات تفريغ الصوت أحيانًا، لكنها تعتمد على توفر خيار الصوت، وهو خيار كثيرًا ما يُحجب عن الجلسات المؤتمتة.
هل يعمل هذا مع Playwright لـ Node وJava و.NET؟
نعم. المثال بلغة Python، لكن التدفق هو استدعاء HTTP نفسه وpage.evaluate نفسه في كل روابط Playwright اللغوية.
كيف أختبر النماذج الخاصة بي باستخدام Playwright؟
لا تحل الكابتشا الخاصة بك في CI. استخدم مفاتيح الاختبار التي يوفرها المزوّد، مثل مفتاح موقع الاختبار لـ reCAPTCHA من Google أو مفاتيح اختبار Turnstile من Cloudflare، لتكون اختباراتك سريعة ومجانية.
ماذا عن reCAPTCHA v3 في Playwright؟
لا توجد في v3 أداة لملئها. اطلب رمز token لـ v3 مع اسم الإجراء الخاص بالصفحة، وأرسله حيث ترسل الصفحة رمزها الخاص، وعادةً يكون ذلك في حقل نموذج أو في جسم الطلب.
أدلة مفيدة
هل أنت مستعد للبناء؟
ابدأ بفترة تجريبية مجانية لمدة 3 أيام، ثم ادفع مقابل كل عملية حل ناجحة مع نمو حركة المرور لديك. لا حاجة إلى بطاقة للفترة التجريبية.