Снимок элемента картинки на текущей странице (без повторной загрузки src) уходит
в 2captcha как обычная капча (method=base64), ответ набирается в поле target
как у typing и возвращается в result действия. Необязательные подсказки:
min_len, max_len, numeric, lang, case_sensitive. Клиент: Action.captcha_image.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fill остаётся мгновенным. typing подводит курсор по кривой, кликает в поле, стирает
старое значение и набирает текст посимвольно с паузами; символы вне раскладки
(кириллица) больше не роняют ввод. Значение typing маскируется в логах.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- user_agent в запросе → 422 с подсказкой брать UA из ответа: UA, отличный от реального
Chrome, расходится с userAgentData и движком, Cloudflare такой браузер не пропускает
(замер: родной 3/3, Chrome 147 и Windows — 0) (#87)
- профиль хранит только отпечаток (экран, DPR), UA не подменяется (#89)
- docs/Usage.md: практики для клиентов API — тот же UA и прокси, что у браузера, сессии,
cookies, ошибки и повторы, таймауты, пример на httpx
- README, docs/API.md, docs/Introduction.md; тесты под новый контракт
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- tests/unit (make test, без браузера, ~5 с): схемы и валидация, /v1/solve с подменённым
движком (коды ошибок, слоты, сессии, UA и cookies профиля, маскирование секретов в логах),
действия, оркестратор антибота, профиль и отпечаток
- tests/browser (make test-browser, в Docker): example.com, UA один раз и замена cookies
на httpbin, применение и стабильность отпечатка, прохождение Cloudflare
- requirements-dev.txt, make sync-dev; Makefile вызывает pip через python -m pip
(у перенесённого .venv битый shebang bin/pip)
- fix: в CloudflareSolver вызов bounding_box() у неожиданной корутины — ветка без iframe
всегда падала с AttributeError
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>