--- title: "Robotex" tagline: "A browser for your bots, over an API" description: "Robotex gets past anti-bot protection, runs a scenario on the page and hands your bot the cookies. From there the bot works with plain HTTP requests." domain: "https://robotex.sokolab.xyz/" badge: "Free ยท early access" post: "/blog/robotex-browser-automation-api" postLabel: "How Robotex works" build: list: never sitemap: disable: true nav: - { label: "Features", href: "#features" } - { label: "How it works", href: "#how" } - { label: "Community", href: "#community" } cta: - { label: "Request access", href: "https://redmine.sokolab.xyz/account/register", primary: true } - { label: "How it works", href: "#how" } problem: title: "Why you need it" lead: "Every website bot sooner or later runs into one of three problems:" items: - "a captcha" - "anti-bot protection" - "heavy JS that has to be rendered to submit a form" text: "A spider built on raw HTTP requests is helpless here, you need a real browser. But a browser is heavy, it has to be hidden from detection and kept next to the bot. Robotex takes that job over: the browser is used only where there's no way around it." features: title: "Features" items: - title: "Scenarios" text: "More than opening a page. Fill a form, click, move the mouse, wait for an element, grab a piece of HTML." - title: "Anti-bot pages" text: "Detects a Cloudflare check before and during a scenario and gets through it. If it escalates to an image captcha, sends it to a recognition service." - title: "Captcha" text: "The `captcha` step solves hCaptcha and other captchas via 2captcha before the form is submitted." - title: "Profiles" text: "Cookies, local storage and the browser fingerprint live in one profile. Locale and timezone match the proxy's geo. To the site it's still the same user." - title: "Real Chrome" text: "Chrome driven by Patchright, without the CDP leaks anti-bots use to detect automation." - title: "Any language" text: "It's a service, not a library. Your bot only needs an HTTP client, whatever it's written in." how: title: "How it works" steps: - "The bot sends a URL, an action scenario and its proxy to `POST /v1/solve`." - "Robotex opens the page, passes the checks and runs the scenario. The browser profile is saved and returned in the `session_id` cookie." - "The bot gets the cookies and User-Agent and keeps browsing on its own, **through the same proxy**. When it needs a browser again, it sends `session_id` and continues in the same profile." code: - caption: "Request" body: | POST /v1/solve X-API-Key: { "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": "socks5://user:pass@host:port" } - caption: "Response" body: | { "status": "ok", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...", "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} ] } limits: title: "Where it stands, honestly" items: - "**It's an early MVP.** I grant access manually, and the API may change." - "**It's free.** You only pay for your own proxies and, if needed, 2captcha." - "Proxy quality matters a lot: no fingerprint will help on a dirty IP." - "Turnstile doesn't pass on every site yet, I'm working on stability." community: title: "Community" lead: "Questions, ideas and bugs go to Redmine. Sign-up uses manual activation: register and I'll approve your account." links: - { title: "Forum", text: "Questions, ideas and scenario discussions.", href: "https://redmine.sokolab.xyz/projects/robotex/boards" } - { title: "Bugs and requests", text: "Something broke or a feature is missing.", href: "https://redmine.sokolab.xyz/projects/robotex/issues" } - { title: "Telegram", text: "Message me directly.", href: "https://t.me/xs0k0lx" } - { title: "Source code", text: "The service code in my Gitea.", href: "https://git.sokolab.xyz/s0k0l/robotex" } footer: "Use Robotex only on sites where you have the right to do so." ---