CaptchaNo
[ التكامل ]

أداة حل الكابتشا لـ
Playwright

حلّ التحدي داخل التشغيل بدلًا من إفشال المهمة. مثال عملي بلغة ⁦Python⁩، والعوامل الثلاثة التي تحدد قبول الرمز token.

Playwright · Python
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

  1. مرّر البروكسي الخاص بك. يجب أن يُنشأ الرمز token خلف عنوان IP الخروج نفسه الذي يرسله. وفي الأنظمة التي تقيّم الجلسة، يكون هذا إلزاميًا، وليس مجرد تحسين.
  2. طابِق وكيل المستخدم. يربط Turnstile وعدة أنظمة حماية من الروبوتات الرمز token بوكيل مستخدم. نُعيد لك الوكيل المستخدَم كي تعيد استخدامه كما هو تمامًا.
  3. اطلب متأخرًا. تنتهي صلاحية الرموز token خلال 120 ثانية تقريبًا. اطلب رمزًا عندما تكون مستعدًا للإرسال.

الانتظار المتزامن أم الاستطلاع الدوري

يستخدم المثال ?wait=60، فيُعيد الاستدعاء عملية الحل مكتملة وتبقى خطوة ⁦Playwright⁩ لديك خطية. وإن كنت تفضّل عدم إبقاء الاتصال مفتوحًا، فاحذف المعامل، واحتفظ بالمعرّف id المُعاد، واستطلع GET /v1/task/{id} كل خمس ثوانٍ. يبقى الرمز token الذي دفعت ثمنه قابلًا للاسترجاع لمدة عشر دقائق، لذا فإن انقطاع الاتصال لا يُفقدك عملية الحل.

التكلفة

⁦$0.00598⁩ لكل عملية حل ناجحة لـ reCAPTCHA v2، ولا تُحتسب عمليات الحل الفاشلة أبدًا. راجع الأسعار لكل أنواع التحديات، أو مرجع API للاطلاع على شكل الطلب الكامل.

[ موقعه في سير العمل ]

كيف تندمج عملية الحل في ⁦Playwright⁩

تسهّل محددات المواقع (locators) في Playwright قراءة الأداة، ويُدرج page.evaluate الرمز token. اطلب الحل في أقرب وقت ممكن من الإرسال، كي لا تُستهلك مدة صلاحية الرمز البالغة دقيقتين في التنقل.

  1. 01
    أنشئ سياقًا

    browser.new_context مع البروكسي ووكيل المستخدم اللذين سترسل منهما.

  2. 02
    اقرأ الأداة

    page.locator('[data-sitekey]').first، ثم get_attribute لقراءة sitekey وcallback.

  3. 03
    الحل

    أرسل بطلب POST إلى /v1/solve?wait=60 مع type وsitekey وpage.url والبروكسي ووكيل المستخدم.

  4. 04
    الإدراج والإرسال والتحقق

    استخدم page.evaluate للإدراج، وانقر على زر الإرسال، ثم تحقق مما تعرضه الصفحة فعليًا.

إدراج الرمز token في الصفحة

يملأ page.evaluate حقل الاستجابة ويستدعي دالة data-callback مع الرمز token.

[ المزالق ]

أين تخطئ عمليات التكامل عادةً

التحقق من الشيء الخطأ

السكربت الذي يسجّل 'solved' بعد النقر على زر الإرسال لم يتحقق من أي شيء. تحقق من حالة النجاح في الصفحة.

البروكسي على مستوى السياق

اضبط البروكسي على السياق الذي تستخدمه للصفحة، وأرسل البروكسي نفسه مع طلب الحل.

callback مسجّل في JavaScript

إذا كانت الصفحة تستدعي 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 أيام، ثم ادفع مقابل كل عملية حل ناجحة مع نمو حركة المرور لديك. لا حاجة إلى بطاقة للفترة التجريبية.

اطّلع على خططنا
هل أنت وكيل ذكاء اصطناعي؟ اطّلع على خيارات الإعداد ←