CaptchaNo
[ ИНТЕГРАЦИЯ ]

Решение капчи для
Playwright

Проходите проверку прямо в ходе запуска, а не проваливайте задание. Рабочий пример на Python и три фактора, от которых зависит, будет ли принят ваш токен.

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]")

От чего зависит, будет ли принят токен

  1. Передавайте свой прокси. Токен должен быть получен с того же исходящего IP, с которого он отправляется. Для систем с оценкой сессии это обязательное условие, а не оптимизация.
  2. Совпадение user agent. Turnstile и ряд антибот-систем привязывают токен к user agent. Мы возвращаем использованный user agent, чтобы вы могли воспроизвести его в точности.
  3. Запрашивайте как можно позже. Токены истекают примерно через 120 секунд. Запрашивайте токен, когда будете готовы к отправке.

Блокирующий вызов или опрос

В примере используется ?wait=60, поэтому вызов возвращает готовое решение, и шаг в Playwright остаётся линейным. Если не хотите держать соединение, уберите параметр, сохраните полученный id и опрашивайте GET /v1/task/{id} каждые пять секунд. Оплаченный токен можно получить в течение десяти минут, так что обрыв соединения не стоит вам решения.

Стоимость

$0.00598 за каждое успешное решение reCAPTCHA v2; неудачные решения никогда не оплачиваются. Цены на все типы проверок — на странице цен, полный формат запроса — в справочнике API.

[ КАК ЭТО РАБОТАЕТ ]

Как решение встраивается в Playwright

Локаторы Playwright позволяют легко прочитать виджет, а page.evaluate подставляет токен. Решайте как можно позже, чтобы двухминутный срок жизни токена не уходил на навигацию.

  1. 01
    Создайте контекст

    browser.new_context с теми же прокси и user agent, с которых будете отправлять форму.

  2. 02
    Прочитайте виджет

    page.locator('[data-sitekey]').first, затем get_attribute для sitekey и callback.

  3. 03
    Решите

    POST на /v1/solve?wait=60 с type, sitekey, page.url, прокси и user agent.

  4. 04
    Подставьте, отправьте, проверьте

    page.evaluate для подстановки, нажмите кнопку отправки, затем проверьте, что на самом деле показывает страница.

Как передать токен на страницу

page.evaluate заполняет поле ответа и вызывает функцию data-callback с токеном.

[ ПОДВОДНЫЕ КАМНИ ]

Где интеграции обычно ломаются

Проверка не того

Скрипт, который пишет в лог 'solved' после нажатия кнопки отправки, ничего не проверил. Проверяйте состояние успеха на странице.

Прокси на уровне контекста

Задайте прокси для контекста, который используете для страницы, и передавайте тот же прокси в запрос на решение.

Callback, зарегистрированный в JavaScript

Если страница вызывает grecaptcha.render, найдите имя callback в собственном скрипте страницы.

[ ВОПРОСЫ ]

Частые вопросы о капче в Playwright

Может ли Playwright обходить капчу без сервиса решения?

Ненадёжно. Playwright автоматизирует браузер, но не может отвечать на задания с картинками. Библиотеки транскрипции аудио иногда работают, но зависят от наличия аудиоварианта, который автоматизированным сессиям часто не предлагают.

Работает ли это с Playwright для Node, Java и .NET?

Да. Пример написан на Python, но процесс — тот же HTTP-вызов и тот же page.evaluate — одинаков во всех языковых привязках Playwright.

Как тестировать собственные формы в Playwright?

Не решайте собственную капчу в CI. Используйте тестовые ключи провайдера, например тестовый sitekey reCAPTCHA от Google или тестовые ключи Turnstile от Cloudflare, чтобы тесты были быстрыми и бесплатными.

А как насчёт reCAPTCHA v3 в Playwright?

У v3 нет виджета, который нужно заполнять. Запросите токен v3 с именем action страницы и отправьте его туда, куда страница отправляет свой собственный токен, — обычно в поле формы или тело запроса.

[ ЧТО ПОЧИТАТЬ ]

Полезные руководства

Готовы начать?

Начните с бесплатного 3-дневного пробного периода, а по мере роста трафика платите за каждое успешное решение. Для пробного периода карта не нужна.

Посмотреть тарифы
Вы ИИ-агент? Посмотрите варианты подключения →