Files
site/content/projects/robotex/index.md
T
protokeyandClaude Opus 5.5 d0c0b485c6 feat: Robotex landing describes architecture v2
- how it works: async POST /v2/tasks + polling, window held between tasks,
  /v1/solve stays synchronous; example uses an http proxy and native Linux UA
- new "Architecture" section (api, RabbitMQ, worker, Redis) via the optional
  engine block; base engine styles moved into landing.css
- features: window between tasks, inner_text; limits: open window takes a slot

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:13:35 +04:00

9.5 KiB

title, tagline, description, domain, badge, post, postLabel, build, sitemap, nav, cta, problem, features, how, engine, limits, community, footer
title tagline description domain badge post postLabel build sitemap nav cta problem features how engine limits community footer
Robotex Браузер для ваших ботов по API Robotex проходит анти-бот защиту, выполняет сценарий на странице и отдает боту куки. Дальше бот работает обычными HTTP запросами. https://robotex.sokolab.xyz/ Бесплатно · открытый доступ /blog/robotex-browser-automation-api Как устроен Robotex
list
never
disable
true
label href
Возможности #features
label href
Как работает #how
label href
Архитектура #engine
label href
Сообщество #community
label href primary
Открыть API https://app.robotex.sokolab.xyz/docs true
label href
Как это работает #how
title lead items text
Зачем это нужно Каждый бот под сайт рано или поздно упирается в одну из трех проблем:
капча
анти-бот защита
сложный JS, который нужно отрендерить, чтобы отправить форму
Паук на сырых HTTP запросах тут бессилен, нужен настоящий браузер. Но браузер тяжелый, его нужно прятать от детекта и держать рядом с ботом. Robotex берет эту работу на себя: браузер включается только там, где без него никак.
title items
Возможности
title text
Сценарии Не просто открыть страницу. Заполнить форму, кликнуть, навести мышь, дождаться элемента, забрать кусок HTML или текст.
title text
Анти-бот страницы Сам находит проверку Cloudflare до и во время сценария и проходит ее. Если она переросла в капчу с картинками, отправляет в сервис распознавания.
title text
Капча Шаг `captcha` в сценарии решает hCaptcha и другие капчи через 2captcha до отправки формы.
title text
Профили Куки, local storage и отпечаток браузера живут в одном профиле. Локаль и часовой пояс подбираются под гео прокси. Для сайта это все тот же пользователь.
title text
Окно между задачами Браузер может подождать следующего шага до двух часов. Следующая задача выполнится в том же окне, без перезапуска Chrome и повторной проверки, прямо на открытой странице.
title text
Любой язык Это сервис, а не библиотека. Боту нужен только HTTP клиент, на чем он написан, неважно.
title steps code
Как это работает
Бот отправляет в `POST /v2/tasks` адрес, сценарий действий и свой прокси. Задача встает в очередь, в ответ приходит ссылка на результат и кука `session_id`.
Свободный воркер открывает страницу в Chrome, проходит проверки и выполняет сценарий. Бот опрашивает ссылку, пока задача не станет `done`.
Бот получает куки и User-Agent и дальше ходит по сайту сам, **с тем же UA и через тот же прокси**.
Понадобится браузер снова, передаст `session_id`. Если просил подержать окно (`browser_idle_timeout`), задача выполнится в нем, можно даже без `url`. Если нет, Chrome откроется с тем же профилем.
Нужен ответ сразу, без опроса: `POST /v1/solve` работает как раньше, синхронно.
caption body
Задача POST https://app.robotex.sokolab.xyz/v2/tasks { "url": "https://example.com/login", "actions": [ {"type": "fill", "selector": "#email", "value": "user@example.com"}, {"type": "fill", "selector": "#password", "value": "..."}, {"type": "click", "selector": "#submit"}, {"type": "wait_for", "selector": ".dashboard", "timeout": 30} ], "proxy": "http://user:pass@host:port", "browser_idle_timeout": 10 } → 202 {"task_id": "0b9c…", "status": "queued", "url": "/v2/tasks/0b9c…"}
caption body
Результат: GET /v2/tasks/0b9c… { "task_id": "0b9c…", "status": "done", "result": { "status": "ok", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) ... Chrome/155.0.0.0 ...", "cookies": [ {"name": "sessionid", "value": "...", "domain": ".example.com"} ], "actions": [ {"type": "fill", "ok": true}, {"type": "fill", "ok": true}, {"type": "click", "ok": true}, {"type": "wait_for", "ok": true} ] } }
kicker title lead items callout
Под капотом Архитектура v2 Раньше браузер жил прямо в API, и когда слоты кончались, запрос получал отказ. Теперь API только принимает задачи и отдает результаты, а Chrome работает в отдельных воркерах за очередью.
**api** на FastAPI без браузера: ставит задачи, отдает статус и результат
**RabbitMQ**: задачи ждут свободного слота в очереди, а не получают `503`
**worker** на dramatiq: настоящий Chrome под Patchright и Xvfb, без утечек CDP, несколько окон на воркер
**Redis**: статусы и результаты задач хранятся сутки, прокси и ключ 2captcha туда не попадают
Задачи сессии с открытым окном идут в личную очередь того воркера, у которого это окно
`/v1/solve` работает поверх той же очереди, старые клиенты ничего не меняют
title text
Браузер больше не одноразовый Окно можно держать открытым от 0 до 120 минут простоя и вести в нем сценарий по шагам: залогиниться, отдать управление боту, вернуться и продолжить на той же странице. Закрыть окно раньше можно через `DELETE /v2/sessions/current`.
title items
Честно о текущем состоянии
**Это ранний MVP.** Доступ открыт без регистрации и ключей, но API может меняться.
Открытое окно занимает слот браузера. Держите его не дольше, чем нужно.
Пока все воркеры работают на одном сервере.
**Бесплатно.** Платить нужно только за свои прокси и, если нужна, капчу в 2captcha.
Прокси решает многое: на грязном IP не поможет никакой отпечаток.
Turnstile проходит не на каждом сайте, над стабильностью работаю.
title lead links
Сообщество Вопросы, идеи и баги принимаются в Redmine. Регистрироваться не обязательно: данные гостевого аккаунта Robotex есть в [приветственной теме](https://redmine.sokolab.xyz/boards/1/topics/1) на форуме.
title text href
Форум Вопросы, идеи и обсуждение сценариев. https://redmine.sokolab.xyz/projects/robotex/boards
title text href
Баги и пожелания Что-то не работает или не хватает функции. https://redmine.sokolab.xyz/projects/robotex/issues
title text href
Telegram Написать мне напрямую. https://t.me/xs0k0lx
title text href
Исходники Код сервиса в моей Gitea. https://git.sokolab.xyz/s0k0l/robotex
Используйте Robotex только на сайтах, где у вас есть на это право.