Identitet-baserade Bot-detektorn | ( | IPs | , | användare | - | agenter |, | opskrifte | SMk5 | kollapsar ögonblicksautomation börjar rotera identiteter ♫ . | StyloBot modellerar klienter som beteendemässiga former i en dimensionell vektorruta | МSK7 | 8 | Här | ' | varför det är | Sk10 | rätt nivå av abstraktion för nivå | sk11 | och nivå ♪ -5 | robotar | smk13 | Och hur maskinen faktiskt fungerar ♫ sk14 |
StyloBot-utsläppsserien
- Behavior, Inte Identitet: varför StyloBot modellerar klienter beteendemässigt
- Behavior-Är medveten ASP.NET UI: servern - skickade ut ytan över det upptäcktsresultatet
- Att hitta och lösa gränslös tillväxt i långtids-, -- och / eller körande- -.-nätverk: den tillförlitlighetsdisciplin som gör motorn tråkig i produktionen
- Behavior-Akvis typscript-UI: Express , Fastify, och webbladerkomponenter
- Sidecar-arkitekturen: hur detektoren kopplas till icke--.NET-skivor
- Att lära sig bli snabbare: adaptiv inlärningssystem, ,, fyra, M SK2, övningsminnet, ,, och bedömningsキャッシュen
- Att testa det som inte stannar kvar: kontrolldisciplinen : en BDF-fielddriver regression M SK2 belastning , och kalibrering
- StyloExtract - en lokal lärande HTML omvandlare till Markdown: HTML, →, Markdown-lagret som paras med detektorn, ,, walkersbug lucidVIEW som fångade, M SK3, och den hundföda-loopan som gjorde det ärligt
" Oj, vilken spända weba vi sätter på ♫ , ♫ när vi först tränar till att lura ♫
Walter Scott
StyloBot detekterar kostnaden för underhåll av bedrägeri
Den oskyldiga trafiken behöver inte uppfinna berättelser, ,, lägga spår,, eller producera utmärkande bevis. .. Strukturen som växer runt en bedrägeri är det man kan upptäcka, ;, och inte själva bedrägenheten, M SK5. Det är rättsmedicinens kärna, m.in. beteendemässigt forensik, som StyloBot.
För flera år sedan arbetade jag i rättspsykologi.,, klassificerade beteendemässiga mönster för att identifiera de underliggande sjukdomarna som orsakar dementie.:, specifika minnesförluster, ,, karaktäristiska störningar, ,, kompensationerna som folk omedvetet skapar runt luckan.M SK4, klassifiering som låter dig anpassa en vårdsplan till vad som egentligen hände.
De flesta botsystem är fortfarande byggda runt identitetsberättelser.
Det fungerar tills robotarna blir bra.
Just då automatiseringen börjar rotera identiteter.,, imitera webblader, ,, sprida sig över internationella IP-gränssnitt och anpassa sig i-, session, ,, M SK5, vem som anklagar att den här utmaningen är? ?", slutar vara rätt fråga... Den mer användbara frågan är:
Det är idén bakom StyloBot. Den modellar belöningar , sessioner , och upprepar klienter som beteendemässiga former snarare än statiska identiteterM SK3 Det ser ut som att ACROSS-sessioner på dussintals beteendemässigt talar om och räknar ut vilken typ av klient faktiskt skulle kunna skapa det beteendet
Det här är inte "'", det är inte teoretiskt . . Motorn kör på den här sidan just nu. . Din radar är till vänster. ; "Top Bots panel" är de former som redan spelats in mot stylobot .

StyloBot är VITTNE fri att köra. I framtiden kommer jag att sälja realtids-management och rapportering ( för att försöka och du vet ... äta ) men motorn i Exe är StylobotM SK5 Commercial lägger bara till fördelade topologierMSC6 i realtid config ( inga återlade ), och fler DB-optioner.
All källan är här https://github.comMSC2scottgalM SK3stylobot
Att installera den: macOS (Homebrew)
brew install scottgal/stylobot/stylobot
stylobot 5080 http://localhost:3000
Linux (apt - DebianM SK2Ubuntu)
curl -1sLf 'https://dl.cloudsmith.io/public/mostlylucid/stylobot/setup.deb.sh' | sudo bash
sudo apt update && sudo apt install stylobot
stylobot 5080 http://localhost:3000
Linux (manual / ARM64)
# Download from GitHub Releases: stylobot-linux-x64.tar.gz or stylobot-linux-arm64.tar.gz
tar xzf stylobot-linux-x64.tar.gz && chmod +x stylobot && sudo mv stylobot /usr/local/bin/
stylobot 5080 http://localhost:3000
Docker
docker run --rm -p 8080:8080 -e DEFAULT_UPSTREAM=http://host.docker.internal:3000 \
scottgal/stylobot-gateway:latest
NuGet (Embedd as ASP.NET Core middlewareM SK2
dotnet add package mostlylucid.botdetection
dotnet add package mostlylucid.botdetection.ui
builder.Services.AddStyloBot(dashboard => {
dashboard.AllowUnauthenticatedAccess = true; // dev only
});
app.UseRouting();
app.UseStyloBot(); // broadcast, detection, dashboard: correct ordering guaranteed
app.MapControllers();
Dashboard vid /_stylobot. Detektor vid ~150µs per begäran från första begäran.

Så kör den bara. stylobot 5080 http://localhost:3000 och voila din uppströmssida är lyssnar (använda --modusblock för att blockera faktiskt också
Denna artikel är den första insatsen i den nuvarande StyloBot-utsläppsserien. Det förklarar beteendemässigt modelet . Nästa artikel, Behavior-Är medveten ASP.NET UI, visar hur modellen blir till applikationslogik inuti Razor-perspektiv och -kontroller
Innan vi ser på vad försvarare har, titta på vad de försvarar mot.

(
Förlustspunkt: inget , allt fångar dessa.
Skripte som har funnits sedan webbens början (perl FTW!); | ' | gå till sidan |, | skrota innehåll | МSK4 | användbar för att identifiera | ; | en enda slutpunkt
( roterande UAM SK1 giltiga slutpunkter , enkel slitning
Förlustspunkt: system som är beroende av uppenbara fel
Svårare. Du behöver nu identifiera kända mönster och processa trafiken senare .
(Puppeteer/Playwright
Förlustspunkt: vad som helst baserat på korrekta begäran eller undertecknande.
Lika bara för att de' är ofta legitimt använt ( scraping , SEO M SK3 etc ); det här är falskt Mska5 positiv stad Mske6 Att säga legit till illegitimt är svårt
(proxy rotation, hushåll IPs , fingerprint spoofing
Förlustspunkt:
Det är här som falska positiva stiger. du behöver identifiera samma klient genom en bedrägerisk identitet.
(
Förlustspunkt:
De här robotarna beter sig " korrekt " och utvecklar sig | . | LLMs anpassar sig till standardblocking försök
Det är här som StyloBots målsättning är.
Vi” ' ” har rört oss genom tiden och även uppåt i trappan, från att ha en enkel identitet, ” ( ” block IP, “ ) ”, till att behöva förstå enorma mängder av trafik och logfiler.“ . ” För att försvara dig mot INTELLIGENT-skrapper på nivån 5 behöver du INTElLIGENT detektion och skydd.
Med trappan i åtanke

billigt, enkeltM SK1 men alltid efter det faktum
snabb och billig-ish, men bara för kända mönster
kraftfullt men dyrt, och kan påverka användarupplevelsen
Lågstyrning, men blått instrument
Det nödvändiga infralayret, men inte beteendemässigt
Den djupa insikten, men långsamt och dyrt, användes försiktigt
Identity-heavy, kommer med lagstiftning och kostnadstagad
Visibility layer... dyrt men nödvändigt
"" ", vi var tvungna att fixa klyftorna "",
Titta på den listan mot trappan.. Varje kategori behöver UA, /, IP för att fortsätta vara identifierad.,, eller behöver en manuell konfiguration per slutpunkt för att undvika att blockera.
Marken täcker MOST av baserna för robotar på nivåer 1–3. Den har inga svar på nivån '
I tidigare artiklar har jag skrivit om min Behavioural inferens system . De' är en CHEAT som blev en egenskap
Enkela 'sensorer ' är lätta att passera nu. Den enda konstanten i nivån 4-5 attacker hur de lurar; roterande naglarna , IPs M SK2 UAs , timmar MSC4 slutpunkter MST5 Varenda en sensor kan passeras M ST6 Att kombinera sensorer ökar känsligheten M st7 fångar fler robotar M S st8 men i statiska system ökar det också felaktiga positiver M St9 eftersom om en enda aktivator är tillräckligt för att blockera,
Behavioural inference gör tre saker profil -> karakterisera -> kom ihåg. Det där ' det är det, ; oavsett om det är ' lucidRAG eller StyloBot. vektor; att ' är vad en klient gör beteende blir. Notabeteende , inte identitet
För StyloBot är du en projiktion över ett dimensionellt vektorrymme 130+
StyloBot är en beteendemässig inferensmotor som tillämpas på webbtrafik.
Det är närmare en sensorfuusiosystem än en regelmotor. Detektorer fattar inte beslut. De släpper ut signaler signaler. Signalerna är systemet . Detektorerna är bara producenter
Markledarna delar en av två former – ; – antingen använder de sig av enkla statiska regler, OWASP-flöden som (, ständigt uppdaterade , eller analyserar TONS av riktig trafik och behöver en SaaS för att leva i ..
StyloBot siktar mot distributionsmodellen av Fail2Ban | ( | kör en exe | , | punkt i uppström | МSK3 | med kraften från företagsstapeln |. | ladda ner lista med användaragenter ♫ , | CVEs | , | utnyttjar |, | och andra indikatorer för kompromiss för att förstärka detektorn ♪ ♪ men de är en faktor i beslutet ♪ , | aldrig dömande på egen hand ♪
Under kapseln kör StyloBot ~49 ' koordinatorer | '; | små fokuserade bits kod som ser ut så här
using Microsoft.AspNetCore.Http;
using Mostlylucid.BotDetection.Models;
namespace Mostlylucid.BotDetection.Detectors;
/// <summary>
/// Execution stage for detectors. Detectors in the same stage run in parallel.
/// Higher stages wait for lower stages to complete.
/// </summary>
public enum DetectorStage
{
/// <summary>
/// Raw signal extraction (UA, headers, IP, client-side).
/// No dependencies on other detectors.
/// </summary>
RawSignals = 0,
/// <summary>
/// Behavioral analysis that may depend on raw signals.
/// Runs after Stage 0 completes.
/// </summary>
Behavioral = 1,
/// <summary>
/// Meta-analysis layers (inconsistency detection, risk assessment).
/// Reads signals from stages 0 and 1.
/// </summary>
MetaAnalysis = 2,
/// <summary>
/// AI/ML-based detection that can use all prior signals.
/// Runs last, can learn from all other signals.
/// </summary>
Intelligence = 3
}
/// <summary>
/// Interface for bot detection strategies
/// </summary>
public interface IDetector
{
/// <summary>
/// Name of the detector
/// </summary>
string Name { get; }
/// <summary>
/// Execution stage for this detector.
/// Detectors in the same stage run in parallel.
/// Higher stages wait for lower stages to complete.
/// </summary>
DetectorStage Stage => DetectorStage.RawSignals;
/// <summary>
/// Analyze an HTTP request for bot characteristics.
/// Legacy method - prefer DetectAsync with DetectionContext.
/// </summary>
/// <param name="context">HTTP context</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Detection result with confidence score and reasons</returns>
Task<DetectorResult> DetectAsync(HttpContext context, CancellationToken cancellationToken = default);
/// <summary>
/// Analyze an HTTP request for bot characteristics using shared context.
/// Detectors should read signals from prior stages and write their own signals.
/// </summary>
/// <param name="detectionContext">Shared detection context with signal bus</param>
/// <returns>Detection result with confidence score and reasons</returns>
Task<DetectorResult> DetectAsync(DetectionContext detectionContext)
{
// Default implementation for backward compatibility
return DetectAsync(detectionContext.HttpContext, detectionContext.CancellationToken);
}
}
/// <summary>
/// Result from an individual detector
/// </summary>
public class DetectorResult
{
/// <summary>
/// Confidence score from this detector (0.0 to 1.0)
/// </summary>
public double Confidence { get; set; }
/// <summary>
/// Reasons found by this detector
/// </summary>
public List<DetectionReason> Reasons { get; set; } = new();
/// <summary>
/// Bot type if identified
/// </summary>
public BotType? BotType { get; set; }
/// <summary>
/// Bot name if known
/// </summary>
public string? BotName { get; set; }
}
Varje detektor deklarerar vad den är, vad den beror på, och vad den ger tillbaka
NOTET: Det här är ett kärnkonzept . StyloBot är ett LITT system med MINIMAL-koncepter
Det där urvalet av steg är den disciplinen.., steg 0, kör parallellt och skriver signaler.., steg
Genom att använda min mestlucid.ephemeral framework ( mer om det i Att bygga en återanvändbar ephemeral Execution Library och Öfterliga signaler - Att omvandla atomer till ett känselnätverkDetektorer avger vad jag kallar ' signaler , små trådar som ua.score=0.75 som agerar som både metadata för sökningen och registrerandet. / diagnostiska data, . Koden LLM, ♫ ( ♫ och systemet i sig, ♪ ) ♫ använder dessa signaler för att identifiera effektiviteter.
Förutom: Ephemeral ger också StyloBot LFU / glimtning - fönster som processeras ; den tappar mänskliga begärningar medan man håller kvar ett fönster så att om framtid begäran passerar en bots tröskel, vi kan titta tillbaka och omarbeta de äldre för ledtrådar.
StyloBot har 49 detektörer . Den kör sällan mer än | 5-7 | per begäran |. | De är inte ♫ ' ♫ ♫ oberoende gissningar ♫; ♫ de ♫ ' ♫ det är ♫ МSK8 ♫ sätt att observera samma underliggande beteende ♫
49 är Krävbarheten ; den använder bara det som den behöver
snabbväg ( det vanliga fallet ). 5-7 SUPER snabb | ( | sub - | millisekunder | ) | första detektörer och fingeravtryckare |. | utifrån den fingeravprinten kan det bestämma vilken typ av sak du är ♪ Och vilka dina nästa begäran troligtvis kommer att vara ♪ ( | innehåll ♫ -> | resursersvärmning ♫
långsam väg ( det intressanta fallet ). Crucially, den långsamma vägen kör ut ur kopplingskedjan. din användare 's respons går ut på den snabba ścieżens slutsatsen - den långsamma ściegen är en förstärkning av vad som händer härnäst
Det aktiverar när den snabba vägen är tvetydiga (signaler motsäger varandra, , formen matchar ingenting vi sett.'förtroendet sitter i dödzonen,) eller när begäran ser ny ut.( ny attacksmönster,M SK7 ny CVE-sond,,, en LLM,MSC9, en drivning som testar något vi inte har gjort,MST10, där vi ännu inte har några fingeravtryck,Mst11, när det gör det,MSSK12, StyloBot öppnar kranen, MST13, allt, MTSK14, detektörerna körs,MTSK15, Intelligence-scenen konsulterar med ett LLM som tar hela signalpaketet och bidrar till en annan dimension av lösning,MSSK16, mönster, MSSK17, matchning mot hotintelligent,MISSK18, resonemang kring begärans syfte,M,, att upptäcka saker som inte är helistik,Mstisk20, där det inte finns någon form ännu, MISSK21
Du får två upphöjda alternativ
Hursomhelst., begäran som utlöste eskalationen svarade redan. . Det finns inget scenario där den långsamma vägen lägger till millisekunder till en användare.
Det är så här: "'" är affären, : betalar mikrosekunder när du kan , , spenderar millisekunder då du måste ,, aldrig betala båda - och aldrig betala dem på användaren . kommer att slip past any fixed pipeline. Varje långsamt -path verdict feeds back as new fast-path signalM SK3 så nästa gång de billiga detektörerna fångar det som de dyra upptäckteMSC4 Den fulla mekanismen av den återkopplingsloopen Mska5driftM Ska6justerad mönsterrenom reputation against the archetype anchors Mska7 the perMska8fingerprint verdict cache~, the Skip~/Bias Mska11Miss/Watchdog gate that decides whether the pipeline runs at allMske13~ are covered in Att lära sig bli snabbare.
Den fulla uppsättningen av lager ( du ser dem bara på en långsam ♫ - ♫ bana ♫ som verkligen behöver varje vinkel
| Ytter | Detektorer | Vad det fångar | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Identitet | Handtekening , Headerkorrelation, periodiskhet | UA-rotationen | , identifiseringsfaktorer | МSK5 tidsmönster | |||||
| Protokoll | TLS (JA3/JA≥4), TCPM SK4IP (pMska6f), HTTPMske8 HTTP~Mska9 TransportenMka10 Strommissbruk | Mska11 | Spoofed browser fingerprints | mska12 | ojämlikhet i protocoln | ||||
| Vanor | Waveform , SessionVector, AdvancedBehavioralM SK3 CacheBehaviorMST4 CookieBehaviourM ST5 ResourceWaterfallM st6 ContentSequence MST7 Timing patterns M ST8 Markovkedjor M st9 saknade tillgångar | ||||||||
| innehåll | UserAgent , Header, AiScraperM SK3 HaxxorMska4 SecurityToolM Ska5 VersionAge Mska6 Bekant robotar M ska7 attack payloads M Ska8 otänkbara webblader versioner | ||||||||
| nätverk | , IP, ,, GeoChange, M SK2, ResponseBehavior, ,, MultiLayerCorrelation, MST4, CveProbe, Mst5, Datacenter IP, МST6, otänkbara resa, M ST7, CVE-skanning, M st8, Cross, M St9, lagermissmatcher. | ||||||||
| Intelligens | FastPathReputation, ReputationBiasM SK2 TidskalaReputationsMska3 ClusterMske4 ÄhnlichhetMsek5 Intens Mske6 Historisk rykteM Ske7 Leiden-clusteringMске8 HNSW-skillnad | ||||||||
| Ad-fraud | ClickFraud , PiiQueryString | ||||||||
| AI | Heuristiskt, HeuriistisktSåldrigt , LLM | 50- | funktionsmodell | <1 | ms | МSK6 | optionell LLM för tvetydiga fall | ||
| Klient | ClientSide , FingerprintApproval, Utmanandebekräftelse ♫ | JS timing probes ♫, ♫ headless detection ♫ МSK5 ♫ PoW-utmaningar ♫ |

Med 49-detektorer och hundratals signaler har vi ett LITT av metadata om varje klient position i ett dimensionellt utrymme 130+
Vad brädan visar är prognos (Wikipedia) av den underliggande vektorrymden, , kollapsade ner på sju axlar, : nätverk, M SK3 lokal,, ledtrådar, Mska5 verktyg, Mske6, transport, M Ska7, sammankomst, ,, kvalitet, Mskan9, en bild av fingeravtrycket som människor faktiskt kan läsa,

Dina robotar är inte bara en massa siffror, de är olika människor.
Människor är högljudda men konsekvent i struktur. Bots är konsekventa men fel i struktur.
Här är samma prognos för en deklarerad robot som spelats in mot den här sidan.

Två klienter, ,, samma sju axlar, ,, två olika former och ., Bedömande färg skiftar från grön till rött, M SK3, Riskprofilet skiftas från Okänt till mycket hög,., Fingeravtrycksfälten under (, TLS, MSC6, HTTP-protokollet, MST7, huvudlös indikator, M ST8, fylls av icke-, M st9, rena värden.
Det är "'", tricket, . . När du kan se formen,,, så slutar det att det confidence-värdet för varje detektor inte längre spela någon roll.;, det som spelar någon roll är huruvida projiktionen ser ut som en människa eller som något som låtsas vara en.
Om man kombinerar det med att följa genom ALLE inspelningar (samlar systemet ZERO PII ). En enda inspelning kan se helt mänsklig ut vara en inspelning av en.)., hursomhelst...., känslighet över tid, ,, att leta efter automatiserade kvadenter, M SK3, till och med mänskliga fingeravtryck som används som robotar senare.
När allt är en form, slutar robotarna att gömma sig från varandra.
StyloBot kör Leidens samhällsdetektion över den levande vektorn GraphRAG: Varför vektorsökningen bryts ner på Corpus-nivån och GraphRAG-delen 2: Minimalt hållbara GrafRAG du ' har redan sett detta exakta mönster samhällen av mening över dokumentskivor så att en query kan dra fram en komplett sammankopplad idé istället för avkopplade fragment. Här gör den strukturellt identiska jobbet över beteendemässigt vectorn; samhällen av klienter som rör sig på samma sätt . Samma algoritm, , samma insikt,, olika domän,. En robotfamilj är bara en samhälle i grafen M SK5 ett GraphRAG-topic har samma form över text,
Två problem är värda att bry oss om du Kommer Leiden att sakta ned när |V| och |EM SK4 växer? Ja, vilket är anledningen till att ingången inte är "ellera begäran som någonsin setts ." Det är den begränsade hot-signaturens kass | ( | kass av SignatureCacheSize, standard 10k LowMemory preset) plus en kompakt centraliserad lager för den långa stapeln . M SK2V| är konfigureradMSC4begränsadMska5 | | Mska6EM Ska7 är HNSWM ska8 | begränsad av M grannar per nod. Den vinkelmässiga disciplinen som gör detta arbete omfattas av Att hitta och lösa gränslös tillväxt i långtids-, -- och / eller körande- -.-nätverk. Fallar kosine inte i dimensioner 130 Det görs i den naiva formen. StyloBot krokar den åt sidan på två sätt . HNSW likhet är ungefär genom design (justerad via M och ef_construct), och motorn fungerar att dra från en lärd archetyp-anker snarare än alla.-pairer avstånd i rårymden, ,, så frågan är alltid: "" Hur långt har klienten rört sig från sin tidigare? , "?, istället för "" МSK4 "". var är det här? ""
Bots som delar ett ursprung ( samma verktygslåda , samma operatör, , samma slit-kampanj,) hamnar i samma område även när de ' har roterat IP: t, , ledtrådar, M SK6 fingeravtryck och tidpunkt, MSC7 De var inte gjorda för att se likadana ut. ;, de ser likadana på grund av att de är likadana.
Det ger StyloBot två superkrafter gratis
Det här är också där likhetsökningen (HNSW över samma vektorer ) tjänar sin behållare | | ; | " | visa mig | МSK4 | de närmaste sakerna till den här begäran just nu |
(Itenskapen för framtidens gränssnitt är uppvisad

Lägg märke till vad jag hade sagt: ".", I didn 't say ' , Once set up or "'", eller When properly configured (när ordentligt konfigurerad) "'", eftersom det StyloBot ,'" och Secret -t är bra i standard, men den lär sig.
När den driver profiler din trafik och förstår dina användare. Inte skrämmande ; det räknar ut vilka mönster som begäras, , slutpunkter och ,, och hur timmar ser ut för en människa jämfört med en automatiserad trafik.
Du kan då bestämma ♫ , ♫ eller låta systemet ta hand om det ♫( ♫ sätta en bot- tröskel, till exempel ♫ МSK2 ♫ för de flesta och ♫ 0.6 ♫ for de säkra slutpunkterna ♫
StyloBot är nu live. självt - knutsbot-detektorn. öppen källkodM SK3 49 detektörerMska5 full beslutsspårningMske6 privatlivMsek7 medvetenMsko8 AI utan LLMs på det varma vägenMsku9 det detekterande maskinen, brädan, , NuGet-paketet, , portöppningen, ; allt det skickas dit nu och gratis att köra på din egen infra, . plocka upp källan på github.com/scottgalM SK2stylobot eller brew install scottgal/stylobot/stylobot och rikta den mot uppströmmen
Commercial controls sit on top kontakta oss. Kernmotorn är fri på din infra-motor
Nästa i releaseserien: Behavior-Är medveten ASP.NET UI, som tar den här beskrivna beteendemässiga klassificeringen och exponerar den till Razor , former Att hitta och lösa gränslös tillväxt i långtids-, -- och / eller körande- -.-nätverk täcker tillförlitlighetens omställning som tillåter motorn att sitta på en Pi för alltid utan operatörens ingripande.
Om du vill ha den äldre tekniska ledningen-till denna releaseserie, Del 1, Del 2, och Del 3 täcka varför, ,, arkitekturen, , och de två, M SK2, fallet i linjen,-, i . Behavioristiska slutsatserna lever i Behavioural inferens, rördosen i Äphemerala signaler, och Leidens / klusterling i GraphRAG och GraphRAG-delen 2.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.