Detekce botů v TRACIO identifikuje automatizované prohlížeče, headless nástroje a skriptované útoky pomocí dvouvrstvé architektury: sběr na straně klienta v prohlížečovém agentovi a analýza na straně serveru. Pokrývá běžné automatizační frameworky, headless prohlížeče, AI agenty pro procházení webu a anti-detect prohlížeče s téměř nulovou mírou falešně pozitivních výsledků a zároveň automaticky přidává legitimní crawlery vyhledávačů na allowlist.
Prohlížečový agent spouští širokou sadu kontrol a hlásí jejich výsledky. Na serveru
se výsledky váženě sloučí do skóre bota a skóre se mapuje na verdikt. Malý počet
jednoznačných indikátorů je rozhodující sám o sobě a vynutí verdikt bot bez ohledu
na zbytek.
Které kontroly běží, jak jsou váženy a kde leží prahy, se nezveřejňuje — v žádném tarifu. Popsat to by provozovatelům botů přesně řeklo, co změnit, aby ochranu obešli. Místo toho dostáváte verdikt, označení typu bota a — v tarifu Business a vyšším — kódy důvodů, které pojmenovávají třídu pozorování stojící za rozhodnutím.
Každá identifikace nese verdikt o botovi. Dorazí k vám jako bot.result
v payloadu webhooku a jako result.bot v klientském SDK.
| Výsledek | Popis |
|---|---|
human | Nenalezeny žádné indikátory automatizace. Ověřené crawlery vyhledávačů se rovněž vyhodnotí jako human. |
bot | Zjištěn automatizovaný nebo skriptovaný přístup. Doprovází jej označení bot.type. |
uncertain | Smíšené nebo slabé signály — ani jasně člověk, ani jasně automatizace. |
To se mapuje na byznysové pole decision.action (real, fake nebo suspicious),
které se používá v celém dashboardu i v payloadu webhooku.
Verdikt doprovází bot.score. Ve verzi 2 payloadu webhooku jde o desetinné číslo na
škále 0..100 — přesně to číslo, které pro danou návštěvu ukazuje dashboard.
(V zamrzlém schématu verze 1 jde o zlomek na škále 0..1; viz Webhooks.)
bot.type je přítomen, když je výsledek bot. Je to buď název rozpoznaného bota
či běhového prostředí, nebo rodina, pokud by pojmenování konkrétní kontroly
prozradilo vnitřní fungování detektoru:
bot.type | Význam |
|---|---|
playwright, jsdom, electron | Bylo identifikováno pojmenované automatizační běhové prostředí |
browser_use, claude_computer_use, skyvern, genspark, fellou | Byl identifikován pojmenovaný AI agent pro procházení webu |
automation | Automatizační nástroje, bez pojmenování konkrétní kontroly |
headless | Prohlížeč běžící bez uživatelského rozhraní |
antidetect | Anti-detect sestavení podvrhující otisk |
extension | Rozšíření prohlížeče řídící automatizaci, proxy nebo VPN |
privacy_browser | Sestavení prohlížeče se zpřísněným soukromím (například Mullvad Browser) |
other | Detekováno, ale mimo zveřejněný slovník |
Seznam je uzavřený záměrně: kontrola přidaná do detektoru zítra se projeví jako
other, místo aby prozradila svůj interní název. Berte bot.type jako označení,
podle kterého se větvíte, nikoli jako vyčerpávající enum k validaci — nová
pojmenovaná běhová prostředí přibývají v čase.
V tarifech Business a Enterprise nese payload webhooku pole reasons — nejvýše osm
položek seřazených podle důležitosti. Kód pojmenovává třídu pozorování, nikdy
kontrolu, která za ním stojí:
| Kód | Co znamená |
|---|---|
automation_signature | Stopy automatizačních nástrojů |
headless_browser | Prohlížeč bez uživatelského rozhraní |
anonymous_browser | Sestavení se zpřísněným soukromím nebo anti-detect, které se tváří obyčejně |
privacy_hardening | Agresivní nastavení soukromí |
behavior_anomaly | Nelidské vzorce interakce |
fingerprint_tampering | Hodnoty, které si mají odpovídat, si neodpovídají |
environment_anomaly | Běhové prostředí je vnitřně nekonzistentní |
identity_mismatch | Deklarovaná identita nesouhlasí s pozorovanou |
virtual_environment | Emulátor namísto fyzického hardwaru |
strong_automation_evidence | Jednoznačné indikátory bota — rozhodující samy o sobě |
detection_signal | Další kontroly, které se spustily |
severity nabývá hodnot high, medium nebo low a znamená podíl verdiktu,
který na tuto třídu při této návštěvě připadá — nikoli pevnou vlastnost kódu.
Tentýž kód může u jedné návštěvy dorazit jako high a u jiné jako low, takže si
jej neukládejte do cache jako konstantu.
Zvláštní pozornost si zaslouží privacy_hardening: spouští se u běžných návštěvníků,
kteří dbají na soukromí, stejně jako u pokusů o obcházení. Važte jej spolu se zbytkem,
místo abyste podle něj jednali samostatně.
virtual_environment pochází z detekce emulátorů. Na webu neexistuje samostatný
verdikt „běží pod hypervizorem“: vodítka, která prohlížeč vidí — obecný softwarový
renderer, neobvykle nízký počet jader — se stejně často objevují i na běžných
strojích bez ovladače GPU a uvnitř relací vzdálené plochy, takže z nich neděláme
verdikt, který byste museli zpochybňovat.
| Schopnost | Dostupnost |
|---|---|
| Detekce automatizace, headless prostředí a AI agentů | Všechny tarify |
| Allowlist ověřených crawlerů | Všechny tarify |
| Detekce emulátorů | Všechny tarify |
Anti-detect indikátory (bot.antidetectScore, 0..100) | Pro a vyšší |
| Kódy důvodů, behaviorální blok | Business a vyšší |
| Detekce DevTools | Business a vyšší |
Anti-detect skóre se stále kalibruje.
bot.antidetectScorese vykazuje proto, abyste jej mohli sledovat a ladit vlastní politiku — berte jej jako vstup do svého rozhodnutí o riziku, nikoli jako samostatný důvod k zablokování.
Kontroly určené jen pro mobilní zařízení na webu nefungují. Detekce rootu, jailbreaku, klonovaných/duálních aplikací a nástroje Frida závisí na nativních signálech, které prohlížeč nedokáže sebrat. TRACIO dodává pouze prohlížečové SDK, spoléhejte se tedy na verdikty o automatizaci, headless prostředí, AI agentech, anti-detect sestaveních, emulátorech a chování — ty jsou na webu plně aktivní.
Známí „hodní“ boti se rozpoznají podle svého user-agenta a poté se ověří proti IP adrese, ze které se připojují — reverzní DNS dotaz na IP adresu, kontrola, že získané hostname patří do domény provozovatele, a dopředný dotaz potvrzující, že se překládá zpět na tutéž IP adresu. Je to přesně ten ověřovací postup, který provozovatelé crawlerů sami zveřejňují.
| Crawler | Ověřované domény |
|---|---|
.googlebot.com, .google.com | |
| Bing | .search.msn.com |
| Apple | .applebot.apple.com |
| Yahoo | .crawl.yahoo.net |
| Yandex | .yandex.com, .yandex.net, .yandex.ru |
| DuckDuckGo | .duckduckgo.com |
Ověřený crawler se vyhodnotí jako human. Požadavek, který o sobě tvrdí, že je
Googlebot, zatímco jeho IP prokazatelně patří někomu jinému, je klasifikován jako bot
— pouhý chybějící dotaz nebo dotaz vypršený časovým limitem se za důkaz podvrhu
nepovažuje.
Dynamika interakce — pohyb ukazatele, kadence klávesnice, scrollování — vstupuje do
verdiktu jako důkaz o tom, zda je přítomen člověk, nikoli o tom, který člověk
to je. V tarifu Business a vyšším se agregát doručuje v bloku behavior webhooku:
{ "behavior": { "score": 87, "verdict": "human", "confidence": 0.92 }}score běží na škále 0..100 (vyšší = lidštější), verdict nabývá hodnot human,
uncertain nebo bot a confidence (0..1) říká, o kolik důkazů se verdikt opírá
— krátká návštěva se dvěma pohyby ukazatele zde dostane nízkou hodnotu i tehdy, když
verdikt vypadá jednoznačně.
Blok je přítomen jen tehdy, když behaviorální skórování pro danou návštěvu skutečně proběhlo. Chybějící blok znamená „žádná data“, nikdy „nic podezřelého“ — nečtěte jeho nepřítomnost jako čistý signál.
Klientské SDK nabízí pohodlný boolean result.bot.detected a k tomu confidence na
škále 0..100:
const result = await tracio.getResult()
if (result.bot.detected) { console.warn(`Bot detected (confidence ${result.bot.confidence})`) showCaptcha() return}
await login(credentials)Na svém serveru jednejte podle doručení webhooku. Verdikt o botovi
je v objektu bot — bot.result a bot.type:
// `event` is the webhook delivery body (/docs/webhooks)app.post("/webhook/tracio", async (req, res) => { const event = req.body
if (event.bot?.result === "bot") { await db.blockedRequests.insert({ visitorId: event.visitorId, botType: event.bot.type, ip: event.ip, timestamp: new Date(), }) }
res.status(200).send("OK")})Nulové a prázdné hodnoty se z payloadu vynechávají, takže bot.type čtěte obezřetně
a nevyžadujte jej ve svých schématech.
Detekce botů v TRACIO je navržena na téměř nulovou míru falešně pozitivních výsledků, hraniční případy ale existují:
| Scénář | Riziko | Opatření |
|---|---|---|
Rozšíření prohlížeče měnící navigator | Nízké | Křížová validace napříč mnoha kontrolami brání spuštění na základě jediné kontroly |
| Firemní bezpečnostní software | Velmi nízké | Klasifikace jako headless vyžaduje potvrzující důkazy |
| Nástroje pro přístupnost | Žádné | API pro přístupnost do detekce botů nevstupují |
| Uživatelé VPN/proxy | Žádné | Síťové příznaky se sledují odděleně od verdiktu o botovi |
Pokud narazíte na falešně pozitivní výsledky, projděte bot.type (a reasons
v tarifu Business a vyšším), abyste zjistili, která třída pozorování se spustila,
a upravte podle toho svou politiku. Běžné příčiny najdete v části
Řešení problémů.