feat: Robotex landing — access by API key, Turnstile passes
- badge and limits: requests need an X-API-Key, the demo instance test key is in the Redmine wiki; the example request sends the header - drop the "early MVP" and "Turnstile is unstable" caveats Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f7d0f27faa
commit
632b959a06
2 files changed
+10
-10
No files matched your search
@@ -3,7 +3,7 @@ title: "Robotex"
|
|||||||
tagline: "A browser for your bots, over an API"
|
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."
|
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/"
|
domain: "https://robotex.sokolab.xyz/"
|
||||||
badge: "Free · open access"
|
badge: "Free · demo key in the wiki"
|
||||||
post: "/blog/robotex-browser-automation-api"
|
post: "/blog/robotex-browser-automation-api"
|
||||||
postLabel: "How Robotex works"
|
postLabel: "How Robotex works"
|
||||||
build:
|
build:
|
||||||
@@ -36,7 +36,7 @@ features:
|
|||||||
- title: "Scenarios"
|
- title: "Scenarios"
|
||||||
text: "More than opening a page. Fill a form, click, move the mouse, wait for an element, grab a piece of HTML or text."
|
text: "More than opening a page. Fill a form, click, move the mouse, wait for an element, grab a piece of HTML or text."
|
||||||
- title: "Anti-bot pages"
|
- 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."
|
text: "Detects a Cloudflare check before and during a scenario and gets through it, Turnstile included. If it escalates to an image captcha, sends it to a recognition service."
|
||||||
- title: "Captcha"
|
- title: "Captcha"
|
||||||
text: "The `captcha` step solves hCaptcha and other captchas via 2captcha before the form is submitted."
|
text: "The `captcha` step solves hCaptcha and other captchas via 2captcha before the form is submitted."
|
||||||
- title: "Profiles"
|
- title: "Profiles"
|
||||||
@@ -49,7 +49,7 @@ features:
|
|||||||
how:
|
how:
|
||||||
title: "How it works"
|
title: "How it works"
|
||||||
steps:
|
steps:
|
||||||
- "The bot sends a URL, an action scenario and its proxy to `POST /v2/tasks`. The task is queued, and the response carries a link to the result and a `session_id` cookie."
|
- "The bot sends its API key, a URL, an action scenario and its proxy to `POST /v2/tasks`. The task is queued, and the response carries a link to the result and a `session_id` cookie."
|
||||||
- "A free worker opens the page in Chrome, passes the checks and runs the scenario. The bot polls the link until the task is `done`."
|
- "A free worker opens the page in Chrome, passes the checks and runs the scenario. The bot polls the link until the task is `done`."
|
||||||
- "The bot gets the cookies and User-Agent and keeps browsing on its own, **with the same UA and through the same proxy**."
|
- "The bot gets the cookies and User-Agent and keeps browsing on its own, **with the same UA and through the same proxy**."
|
||||||
- "When it needs a browser again, it sends `session_id`. If it asked to keep the window (`browser_idle_timeout`), the task runs there, even without a `url`. If not, Chrome starts with the same profile."
|
- "When it needs a browser again, it sends `session_id`. If it asked to keep the window (`browser_idle_timeout`), the task runs there, even without a `url`. If not, Chrome starts with the same profile."
|
||||||
@@ -58,6 +58,7 @@ how:
|
|||||||
- caption: "Task"
|
- caption: "Task"
|
||||||
body: |
|
body: |
|
||||||
POST https://app.robotex.sokolab.xyz/v2/tasks
|
POST https://app.robotex.sokolab.xyz/v2/tasks
|
||||||
|
X-API-Key: <key>
|
||||||
|
|
||||||
{
|
{
|
||||||
"url": "https://example.com/login",
|
"url": "https://example.com/login",
|
||||||
@@ -110,12 +111,11 @@ engine:
|
|||||||
limits:
|
limits:
|
||||||
title: "Where it stands, honestly"
|
title: "Where it stands, honestly"
|
||||||
items:
|
items:
|
||||||
- "**It's an early MVP.** Access is open, no sign-up or keys, but the API may change."
|
- "**Access by API key.** A test key for the demo instance is in the [project wiki](https://redmine.sokolab.xyz/projects/robotex/wiki), send it in the `X-API-Key` header."
|
||||||
- "An open window takes up a browser slot. Don't keep it longer than you need."
|
- "An open window takes up a browser slot. Don't keep it longer than you need."
|
||||||
- "For now all workers run on a single server."
|
- "For now all workers run on a single server."
|
||||||
- "**It's free.** You only pay for your own proxies and, if needed, 2captcha."
|
- "**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."
|
- "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:
|
community:
|
||||||
title: "Community"
|
title: "Community"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ title: "Robotex"
|
|||||||
tagline: "Браузер для ваших ботов по API"
|
tagline: "Браузер для ваших ботов по API"
|
||||||
description: "Robotex проходит анти-бот защиту, выполняет сценарий на странице и отдает боту куки. Дальше бот работает обычными HTTP запросами."
|
description: "Robotex проходит анти-бот защиту, выполняет сценарий на странице и отдает боту куки. Дальше бот работает обычными HTTP запросами."
|
||||||
domain: "https://robotex.sokolab.xyz/"
|
domain: "https://robotex.sokolab.xyz/"
|
||||||
badge: "Бесплатно · открытый доступ"
|
badge: "Бесплатно · демо-ключ в вики"
|
||||||
post: "/blog/robotex-browser-automation-api"
|
post: "/blog/robotex-browser-automation-api"
|
||||||
postLabel: "Как устроен Robotex"
|
postLabel: "Как устроен Robotex"
|
||||||
build:
|
build:
|
||||||
@@ -36,7 +36,7 @@ features:
|
|||||||
- title: "Сценарии"
|
- title: "Сценарии"
|
||||||
text: "Не просто открыть страницу. Заполнить форму, кликнуть, навести мышь, дождаться элемента, забрать кусок HTML или текст."
|
text: "Не просто открыть страницу. Заполнить форму, кликнуть, навести мышь, дождаться элемента, забрать кусок HTML или текст."
|
||||||
- title: "Анти-бот страницы"
|
- title: "Анти-бот страницы"
|
||||||
text: "Сам находит проверку Cloudflare до и во время сценария и проходит ее. Если она переросла в капчу с картинками, отправляет в сервис распознавания."
|
text: "Сам находит проверку Cloudflare до и во время сценария и проходит ее, Turnstile в том числе. Если она переросла в капчу с картинками, отправляет в сервис распознавания."
|
||||||
- title: "Капча"
|
- title: "Капча"
|
||||||
text: "Шаг `captcha` в сценарии решает hCaptcha и другие капчи через 2captcha до отправки формы."
|
text: "Шаг `captcha` в сценарии решает hCaptcha и другие капчи через 2captcha до отправки формы."
|
||||||
- title: "Профили"
|
- title: "Профили"
|
||||||
@@ -49,7 +49,7 @@ features:
|
|||||||
how:
|
how:
|
||||||
title: "Как это работает"
|
title: "Как это работает"
|
||||||
steps:
|
steps:
|
||||||
- "Бот отправляет в `POST /v2/tasks` адрес, сценарий действий и свой прокси. Задача встает в очередь, в ответ приходит ссылка на результат и кука `session_id`."
|
- "Бот с API-ключом отправляет в `POST /v2/tasks` адрес, сценарий действий и свой прокси. Задача встает в очередь, в ответ приходит ссылка на результат и кука `session_id`."
|
||||||
- "Свободный воркер открывает страницу в Chrome, проходит проверки и выполняет сценарий. Бот опрашивает ссылку, пока задача не станет `done`."
|
- "Свободный воркер открывает страницу в Chrome, проходит проверки и выполняет сценарий. Бот опрашивает ссылку, пока задача не станет `done`."
|
||||||
- "Бот получает куки и User-Agent и дальше ходит по сайту сам, **с тем же UA и через тот же прокси**."
|
- "Бот получает куки и User-Agent и дальше ходит по сайту сам, **с тем же UA и через тот же прокси**."
|
||||||
- "Понадобится браузер снова, передаст `session_id`. Если просил подержать окно (`browser_idle_timeout`), задача выполнится в нем, можно даже без `url`. Если нет, Chrome откроется с тем же профилем."
|
- "Понадобится браузер снова, передаст `session_id`. Если просил подержать окно (`browser_idle_timeout`), задача выполнится в нем, можно даже без `url`. Если нет, Chrome откроется с тем же профилем."
|
||||||
@@ -58,6 +58,7 @@ how:
|
|||||||
- caption: "Задача"
|
- caption: "Задача"
|
||||||
body: |
|
body: |
|
||||||
POST https://app.robotex.sokolab.xyz/v2/tasks
|
POST https://app.robotex.sokolab.xyz/v2/tasks
|
||||||
|
X-API-Key: <ключ>
|
||||||
|
|
||||||
{
|
{
|
||||||
"url": "https://example.com/login",
|
"url": "https://example.com/login",
|
||||||
@@ -110,12 +111,11 @@ engine:
|
|||||||
limits:
|
limits:
|
||||||
title: "Честно о текущем состоянии"
|
title: "Честно о текущем состоянии"
|
||||||
items:
|
items:
|
||||||
- "**Это ранний MVP.** Доступ открыт без регистрации и ключей, но API может меняться."
|
- "**Доступ по API-ключу.** Тестовый ключ для демонстрационного инстанса лежит в [вики проекта](https://redmine.sokolab.xyz/projects/robotex/wiki), передавайте его в заголовке `X-API-Key`."
|
||||||
- "Открытое окно занимает слот браузера. Держите его не дольше, чем нужно."
|
- "Открытое окно занимает слот браузера. Держите его не дольше, чем нужно."
|
||||||
- "Пока все воркеры работают на одном сервере."
|
- "Пока все воркеры работают на одном сервере."
|
||||||
- "**Бесплатно.** Платить нужно только за свои прокси и, если нужна, капчу в 2captcha."
|
- "**Бесплатно.** Платить нужно только за свои прокси и, если нужна, капчу в 2captcha."
|
||||||
- "Прокси решает многое: на грязном IP не поможет никакой отпечаток."
|
- "Прокси решает многое: на грязном IP не поможет никакой отпечаток."
|
||||||
- "Turnstile проходит не на каждом сайте, над стабильностью работаю."
|
|
||||||
|
|
||||||
community:
|
community:
|
||||||
title: "Сообщество"
|
title: "Сообщество"
|
||||||
|
|||||||
Reference in new issue
Block a user