Решение капчи для
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]")От чего зависит, будет ли принят токен
- Передавайте свой прокси. Токен должен быть получен с того же исходящего IP, с которого он отправляется. Для систем с оценкой сессии это обязательное условие, а не оптимизация.
- Совпадение user agent. Turnstile и ряд антибот-систем привязывают токен к user agent. Мы возвращаем использованный user agent, чтобы вы могли воспроизвести его в точности.
- Запрашивайте как можно позже. Токены истекают примерно через 120 секунд. Запрашивайте токен, когда будете готовы к отправке.
Блокирующий вызов или опрос
В примере используется ?wait=60, поэтому вызов возвращает готовое решение, и шаг в Playwright остаётся линейным. Если не хотите держать соединение, уберите параметр, сохраните полученный id и опрашивайте GET /v1/task/{id} каждые пять секунд. Оплаченный токен можно получить в течение десяти минут, так что обрыв соединения не стоит вам решения.
Стоимость
$0.00598 за каждое успешное решение reCAPTCHA v2; неудачные решения никогда не оплачиваются. Цены на все типы проверок — на странице цен, полный формат запроса — в справочнике API.
Как решение встраивается в Playwright
Локаторы Playwright позволяют легко прочитать виджет, а page.evaluate подставляет токен. Решайте как можно позже, чтобы двухминутный срок жизни токена не уходил на навигацию.
- 01Создайте контекст
browser.new_context с теми же прокси и user agent, с которых будете отправлять форму.
- 02Прочитайте виджет
page.locator('[data-sitekey]').first, затем get_attribute для sitekey и callback.
- 03Решите
POST на /v1/solve?wait=60 с type, sitekey, page.url, прокси и user agent.
- 04Подставьте, отправьте, проверьте
page.evaluate для подстановки, нажмите кнопку отправки, затем проверьте, что на самом деле показывает страница.
Как передать токен на страницу
page.evaluate заполняет поле ответа и вызывает функцию data-callback с токеном.
Где интеграции обычно ломаются
Скрипт, который пишет в лог 'solved' после нажатия кнопки отправки, ничего не проверил. Проверяйте состояние успеха на странице.
Задайте прокси для контекста, который используете для страницы, и передавайте тот же прокси в запрос на решение.
Если страница вызывает 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-дневного пробного периода, а по мере роста трафика платите за каждое успешное решение. Для пробного периода карта не нужна.