StyloBot-julkaisusarja: Behaviour-Aware ASPM SK2NET UI (Suomi (Finnish))

StyloBot-julkaisusarja: Behaviour-Aware ASPM SK2NET UI

Monday, 01 June 2026

//

19 minute read

Botin havaitseminen ei saa lopettaa sallimalla/block. Tämä artikkeli osoittaa, miten StyloBotin luokitustulosta tulee ASP:n soveltamisloogikastaMSC3NETM SK4 tag helpers RazorissaMSSK5 toiminnalliset filterit ja politiikat valvontalaitteissa , signaaliMST7taso-auttaminenMst8 niin että UI voi muokata kokemusta sen sijaan, että jarrutetaan sen jälkeen, kun tosiasia on todettu

StyloBot

StyloBot -sarja

  1. Käytänne, Ei identiteettiä: miksi StyloBot mallistaa asiakkaita käytännöllisesti
  2. Behaviour-Aware ASP.NET UI: palvelijaM SK1 luovutti pintansa kyseisen havaitsemistuloksen yli
  3. Pitkällä aikavälillä tapahtuvan -käynnissä olevan .NET-palvelujen rajaton kasvun löytäminen ja korjaaminen:, luotettavuuden kurinalaisuus, joka pitää moottorin tuskallisena tuotannossa
  4. Behaviour-Aware TypeScript UI: ExpressM SK1 Fastify, ja hakukonekomponentit
  5. Sidecar-arkkitehtuuri: miten havaitsemismoottori liitetään muihin kuin -.NET-palkkiin
  6. Oppiminen nopeuttamaan: mukautuva oppimisjärjestelmä, , neljä,- tasotasoinen muisti ja , tuomiovarasto
  7. Todistuksen testaaminen, joka ei jää rauhaan: tarkastusta koskevat säännökset : yksi BDF-tietokanta hallinnoi regressiaa M SK2 lastausta, , ja kalibrointia
  8. StyloExtract - paikallisen oppimisen HTML:n Markdown-muuttaja: HTMLM SK1Markdown-laaja, joka on päällekkäinen tunnistajan kanssa , walkinger bug lucidVIEW caught, ja dogfood loop, joka teki siitä rehellisen

StyloBot UI on ASP.NET-rakenne Stylobotin yläpuolella' havaitsemistarkoitustulosM SK2 Sen tehtävä on yksinkertainen : tehdä botti ja riskiluokittelu saatavissa siellä, missä web- sovellukset sitä todella tarvitsevat

Esitys

Useimmat UX-järjestelmät ovat hämäriä.

Tämä post on StyloBotin toinen julkaisusarja. Käytänne, Ei identiteettiä kattaa mallin järjestelmän alla. Tämä kattaa ASP:n.NET-pinnan, joka muuttaa kyseisen mallin soveltamiskäyttäytymiseksi

Olettakaa, että havaitseminen on jo olemassa. Olettakaan, että nykyisen pyynnön luokittelutulos on siihen jo liitetty

Tämä on StyloBotin UI:n tarkoitus. Se antaa ASPille.NETille puhdasta pintaa havaitsemistuloksessa, joten Razor-näkymiäM SK2 valvojatMSC3 ja sivukäsittäjät voivat käyttää sitä suoraan .

Joten sen sijaan, että kiinnittäisitte raivausta tosiasian jälkeen, voitte muokata kokemusta renderointiaikanaM SK1

  • esittelemään erilaisia sisältöjä ihmisille ja boteille
  • hide high-value UI epäilyttävistä istunnoista
  • lisätään riskialoihin valuuttoihin painetta ennen kuin niistä tulee väärinkäytöksiä
  • varmistaa valvojien noudattaminen samalla kun sivu pysyy kontekstissa-tietoisena

Tässä artiklassa käsitellään erityisesti sitä, että ASP.NET pinta-ala: tag helpersM SK2 sivuMSC3tasoäänestysten hallinnoiminen , ja serverin käyttöoikeudellinen integrointi Käytänne, Ei identiteettiä,, joka selittää sen taustalla olevan käyttäytymismallin . Seuraavassa artiklassa käsitellään JavaScriptia ja klienttia

ASP.NET-pinta

Tällainen on käytös.

Stylobotin taulukon yläpuolella oleva taulukko.net: kootaan vasemmistossa, , ja oikeistossa M SK3YOUMSC4 Inhimillinen 0.0% tuntematon näkökanta | →" | koostuu sb ‐- ‐leimasta |, ‐sb ­- ‐luottamuksesta |

Tämä oikea- kädellinen ryhmittymä on kolme merkintäapua M SK1<sb-badge>, <sb-confidence>, <sb-risk-pill>) lukee samasta kutakin pyyntöä koskevasta havaitsemisesta johtuvan tuloksen, jonka valvoja ilmaisee

Keskeinen ajatus on yksinkertainen: havaitsemisen ei pitäisi pysähtyä M SK1 sallia" tai "blokoidaMSC4 Web-appissaMST5 sen pitäisi olla käytettävissä itse UI:ssäMSL6

Tämä tarkoittaa

  • Razor voi tuottaa erilaisia sisältöjä ihmisille, bots, ja erityisiä bot-tyyppeitä
  • lomakkeisiin voi sisältyä kerrostettuja suojakeinoja, kuten hunajapotteja osana sivua, eikä erillistä turvallisuusjärjestelmää
  • valvojat voivat panna täytäntöön saman havaitsemisen tuloksen, jota on jo käytetty UI:ssä
  • ASP.NET-app voi reagoida siihen, mitä pyyntö tekee, eikä vain siihen, ketä istunto väittää olevan

Jos haluatte détection engine story,, joka on jo sisällytetty Osa 2 ja Osa 3. Tämä artikla aloittaa yhden kerroksen sen yläpuolella.

flowchart LR
    A[Incoming request] --> B[StyloBot middleware]
    B --> C[Risk score bot type and signals]
    C --> D[Tag helpers in Razor]
    C --> E[Controller and page policy]
    D --> F[Different rendered experience]
    E --> G[Allow block challenge or redirect]

Miksi tämä pinta-ala on tärkeä

Ilman UI:n pinta-alaa havaitseminen pysyy infrastruktuurissa

Voitte rekisteröidä tulosta. Voitte ehkä estää pyynnön. Mutta ette voi sanoa helpostiM SK2

  • esittelemään luettelon mutta salaamaan tarjouksen
  • muutetaan login-lomaketta korkean riskin liikenteelle
  • hakubotit voivat katsoa crawl-ystävällisiä metatietoja luovuttamatta kaikkia kaupallisia viestejä
  • AI- crawlereihin suhtaudutaan pikemminkin lupakeskusteluna kuin hajanaiseen lomakkeen esittämiseen

Siksi pinta-ala on tärkeä. Se muuttaa havaitsemisen soveltamisloogikaksiM SK1

Joissakin tapauksissa oikea vastaus on lohko.

  • kätkeet hyvityskoodit hintaskrappereista
  • remove express checkout from elevated-risk sessions
  • palvelemaan hakumetadataa paljastamatta kaupallisia signaaleja
  • Silti hylätään tietokirjan allekirjoitukset automaattista
  • lisätään hämmennystä epäiltyihin verkkovierailuihin rankaisematta tavallisia käyttäjiä

Tämä on StyloBotin UI:n eriyttäjä. havaitsemismoottori antaa teille tuomion; ASP-rakenneM SK2NET-pinta antaa teidät tehdä jotain hyödyllistä sen kanssa sivutasolla ja virtatasolla . MSC4Missä tuo tuomio on lähtöisin~, miten se~'s cached~ , ja miksi samasta tilanteesta peräisin olevien pyyntöjen jatkuvuus maksaa mikrosekkiä sen sijaan, että millisekkiä~M SK8 kattaa Oppiminen nopeuttamaan.)

Esimerkki kauppojen etupuolelta

Tässä artikkelissa tarkastellaan esimerkkiä ASP:sta, .:stä, NET Core-MVC:stä ja StyloBotin UI-apuvälineistä kuudessa sivussa.

Esimerkki-appi on tarkoituksellisesti pieni: tuotteista peräisin olevat tuotteet, muutamat luokkatM SK2 toimitustoteamus, , lehtitiedote, , ja verkkovierailu,. Kyse ei ole kaupankäynnistä johdettavasta logiikasta, vaan siitä, miten robotin luokittelusta tulee soveltamisloogia.

Pakettien asentaminen:

dotnet add package Mostlylucid.BotDetection
dotnet add package Mostlylucid.BotDetection.UI

Siirtäkää sitten StyloBot mukaan Program.cs:

builder.Services.AddStyloBot(
    configureDashboard: dashboard =>
    {
        dashboard.BasePath = "/_stylobot";
        dashboard.AllowUnauthenticatedAccess = true; // dev only
    },
    configureDetection: detection =>
    {
        detection.ExcludeLocalIpFromBroadcast = false;
    });

// ...

app.UseStyloBot();
app.MapHub<StyloBotDashboardHub>("/_stylobot/hub");

Se riittää luokittelemaan pyynnöt ja esittelemään tulokset Razorille, valvontalaitteissa, ja suorassa taulukonhallinnassaM SK2 Jos haluatte avoimenMSC3 vähimmäisintegraatiokertomuksen Osa 3 kattaa sen tarkemmin.

Nopea esimerkki: login layered defence

Liittymissivu on hyvä mikro-esimerkki, koska siinä kuvataan koko malli muutamalla rivillä.

flowchart TD
    A[Request for login page] --> B[Render page]
    B --> C[Bot sees warning]
    B --> D[Form is rendered]
    D --> E[Submission arrives]
    E --> F{Honeypot triggered?}
    F -->|Yes| G[Redirect to LoginDenied]
    F -->|No| H{IsBot?}
    H -->|Yes| G
    H -->|No| I[Authenticate user]
<!-- Layer 1: bots see a deterrent message before the form -->
<sb-bot>
    <div class="alert alert-warning">Automated login attempts are detected and blocked.</div>
</sb-bot>

<form method="post" action="/Account/Login">
    <!-- Layer 2: hidden trap fields - humans leave them blank; bots fill everything -->
    <sb-honeypot prefix="hp" fields="2"></sb-honeypot>

    <input type="email" name="email" />
    <input type="password" name="password" />
    <button type="submit">Sign In</button>
</form>
// Layer 3: server-side final check before any processing
if (HoneypotValidator.IsTriggered(HttpContext) || HttpContext.IsBot())
    return RedirectToAction("LoginDenied");

Bot näkee varoituksen,, joka sitten putoaa hunajapotista, jos se antaa sen, ja sitten hylätään serveriM SK2 sivusta, jos hän jollakin tavalla ohittaa aiemmat kerroksetMSC3 Jokainen kerros on pieni . Yhdessä ne luovat puolustusta syvälle ilman CAPTCHA-merkintää.

Muutos tästä postista laajentaa tätä ajatusta todelliseen myyntipaikkaan.


Kustannus siitä, että ei tiedetä, kuka on kaupassanne

Tärkein kaupallinen ongelma ei ole "bots" abstraktissa muodossaM SK2 vaan se, että erilaiset automaattiot aiheuttavat erilaisia vahinkoja

Hintojen purkajat. Ne keräävät tuotenimiä, hintoja, kuvaustaM SK2 ja varastotietoja, jotta kilpailijat voivat kilpailla kanssanne lähes reaaliaikaisesti

Gutscheintesterit. Ne brute-voimaa alennuskoodin tilaa, kunnes ne löytävät voimassa olevat kooditM SK1, jotka sitten julkaistaan coupon-foorumeissa ja erotetaan marginaaliin.

Credential stuffers. Ne pelaavat uudelleen vuodatusta käyttäjänimestä-password-paria mittakaavassaM SK1 Jopa alhaiset hyökkäysluvut muuttuvat tilisiirtotapahtumiksi, kun lukumäärä on suuri .

AI-koulutus crawlerit. Ne keräävät kuvaukset,arviot, ja mallikoulutusta varten laaditun lehden kopionM SK2 Tämä ei ole sama uhkamalli kuin checkout-hyökkäyksen tekijäMSC3, mutta se on edelleen ekstraktiivinen

Newsletterin pyytäjät. He tutkivat rekisteröintilomakkeita, joilla validoidaan sähköpostiosoitteet, myrkyllisten postiluettelojenM SK1 tai testataan injektioheikkouksia.

Nämä ongelmat eivät ole samat.


Page 1: Lähtötaso

Kotisivulla monet romuttajat aloittavat. He haluavat luettelon. Te haluatte luetteloa, joka on käyttökelpoinen ihmisille ja indeksoitava hakutarkoituksiinM SK2 mutta vähemmän kaupallisesti arvokas automaattiselle raivaamiselle .

Scenario: hintojen purkaminen koittuu /; se näkee puolueettoman luettelon viestin , ei tervetulleita kopioita

<!-- Human visitors see the welcome message and category count -->
<sb-human>
    <p class="muted">Welcome! Browse @Model.Count products.</p>
</sb-human>

<!-- Bots see a neutral, non-committal message -->
<sb-bot fallback="hide">
    <p class="muted">Product catalogue.</p>
</sb-bot>

<!-- Search engine crawlers get structured metadata, not price data -->
<sb-gate bot-type="SearchEngine">
    <meta name="description" content="@Model.Count products across @categories categories." />
</sb-gate>

<!-- Verified bots (Googlebot etc.) see a specific indicator -->
<sb-gate bot-type="VerifiedBot">
    <div class="alert alert-info">Verified crawler detected. Serving crawl-optimised view.</div>
</sb-gate>

<!-- High-risk sessions see friction before the buy buttons -->
<sb-gate min-risk="High">
    <div class="alert alert-warning">Additional verification may be required at checkout.</div>
</sb-gate>

Nämä ovat viittauksia, eivät käyttöoikeutta koskevia valvontalaitteita. sivu toimii edelleenM SK2 Mitkä muutokset ovat sen ympärillä olevassa kontekstissa . Tämä tekee sivusta vähemmän hyödyllisen järjestelmällisen sadon aikaansaamiseksi heikentämättä kuluttajien kokemusta

Tämä on myös crawler-erottelun kannalta tärkeää. Te haluatte Googlebotin indeksoivia tuotteita. Te ette ehkä halua, että jokainen automatisoitu asiakas saa saman kaupallisen esityksen kuin ihmiskauppias.


Page 2: Tuotteen sivu

Tuotteen yksityiskohtainen sivu on se, jossa kaupallinen tarkoitus tehdään selväksi. Se on myös se, missä hintaraiskaajat ja valtuutuksenurheilijat etsivät signaaleja, joita he pitävät tärkeänä.

Scenario: hintaraiskaaja lands on /Product/Detail/12; se ei näe mitään alennuskoodia , ei lisätäM SK2to-kart-puppuaMSC4 eikä ole ostosignaalia toimimaan .

<!-- Exclusive discount - only shown to low-risk, verified human visitors -->
<sb-gate max-risk="Low">
    <div class="alert alert-success">
        Member discount: use code LOYAL10 for 10% off today.
    </div>
</sb-gate>

<!-- Medium-risk visitors get a friction signal before the cart button -->
<sb-gate min-risk="Medium">
    <div class="alert alert-warning">
        We noticed some unusual activity from your network.
        You can still purchase. You may be asked to verify at checkout.
    </div>
</sb-gate>

<!-- Datacenter/VPN visitors lose the buy button -->
<sb-signal signal="ip.is_datacenter" condition="true">
    <p class="muted">Purchase unavailable from datacenter or VPN networks.</p>
</sb-signal>

<!-- Human-only: the add-to-cart button -->
<sb-gate human-only>
    <form method="post" action="/Cart/Add">
        <button type="submit" class="btn btn-success">Add to Cart</button>
    </form>
</sb-gate>

<!-- Detection mini-card for transparency -->
<sb-summary variant="card"></sb-summary>
<sb-confidence display="bar" width="180px"></sb-confidence>

Tässä on kolme hyödyllistä mallia.

Loyalty targeting. Hyvät tarjoukset on saatava hyviin tilaisuuksiin. alhaisiin alennettuihin alennettujen palkkioiden ilmoittaminenM SK1 riskiliikenne vähentää jätteitä ja vähentää mahdollisuuksia, että romuttajat tai valtuutettujen botit nostavat tarjouksen

Progressiivinen jäykkyys. Keskeinen-riski ei tarkoita automaattisesti M SK1blokointi*."yhdistettyjä verkkoja, yksityisyyden suojaa koskevat hakukoneet (), ja VPN-verkot kaikki luovat vääriä myönteisiä viestejä (*) . Varoitus usein säilyttää myynnin paremmin kuin ankara kieltäminen ()

Signali-tasoäänestysM SK1 ip.is_datacenter on raaka- signaali, ei riskivyöhykeM SK1 Toisinaan politiikka, josta huolehditte, ei ole " kuinka vaarallinen tämä vierailija kokonaisuudessaan on?" vaan MSC4onko kyseinen omaisuus rikkonut liiketoimintasääntöäMST5

Jos haluatte näiden signaalien taustalla olevan rakenteen, Osa 2 kattaa asteittaisen havaitsemisputken.

Tämä ero on olemassa muissa näytteen maissa: : – riskivyöhykkeet muodostavat laajan UX-päätöksenteon, , – yksittäiset signaalit käsittelevät tiukempia poliittisia sääntöjä ja . –


Page 3: Tarkastus

Kävitys on korkein -arvotavoite paikan päällä. petosten automatisointi , korttitestitM SK3 valtuutuksen väärinkäyttöMSC4 ja kirjoitetut retrit kaikki lähentyvät tänneMST5

Scénario: osuuskorttiM SK1kokeet bot-iskut /Cart/Checkout; se näkee kuolleen - lopullisen viestin, , toimittaa hunajapotin,- täytetään lomake,, ja saa hiljaisen hyväksymisen ilman uudelleentryynnin kannustimia

flowchart TD
    A[Visitor reaches checkout] --> B{Human?}
    B -->|No| C[Show dead-end message]
    B -->|Yes| D{Risk band}
    D -->|Low| E[Express checkout]
    D -->|Elevated| F[Standard payment flow]
    D -->|High or above| G[Alternative path]
    E --> H[POST order]
    F --> H
    G --> H
    H --> I{Honeypot triggered?}
    I -->|Yes| J[Silent accept fake success]
    I -->|No| K[Process real order]
<!-- Gate the entire checkout form on human-only detection -->
<sb-gate human-only>
    <form method="post" action="/Cart/Order">
        @Html.AntiForgeryToken()

        <!-- Honeypot trap fields - invisible to humans, irresistible to bots -->
        <sb-honeypot prefix="co" fields="2"></sb-honeypot>

        <!-- Express checkout only for trusted visitors -->
        <sb-gate max-risk="Low">
            <button type="submit" name="express" value="true" class="btn btn-success">
                Express Checkout
            </button>
        </sb-gate>

        <!-- Standard checkout available up to elevated risk -->
        <sb-gate max-risk="Elevated">
            <button type="submit" class="btn btn-primary">Proceed to Payment</button>
        </sb-gate>

        <!-- High-risk visitors get an alternative path -->
        <sb-gate min-risk="High">
            <p>Please call us to complete your order: 0800 123 456</p>
        </sb-gate>
    </form>
</sb-gate>

<!-- Bots see a dead end, not an error -->
<sb-bot>
    <p class="muted">Checkout is only available to human visitors.</p>
</sb-bot>

Ja valvonnassa:

[HttpPost]
public IActionResult Order(OrderModel model)
{
    if (HoneypotValidator.IsTriggered(HttpContext))
    {
        // Silent accept - bot thinks the order succeeded
        return RedirectToAction("Confirmed");
    }

    return ProcessOrder(model);
}

Tässä sivussa esitetään kolme yhteistä tekniikkaa.

Honeypot discard. Jos bot täyttää peitetyt kentät, olette tyynesti hyväksynyt pyynnön ja jättänyt sen pois.

Riski Express-checkout on luottamuksellinen etu, ei ole standardin mukainen oikeus . epäilyttävät istunnot voivat edelleen ostaa, mutta hitaammalla tiellä

Hyvin huonontuminen. Selkeä viesti on usein operatiivisesti parempi kuin vaikea virhe.


Page 4: Login

Jäsenyys on erilainen korkean arvon --valuutan sivu . -tarkoituksena ei ole karsin väärinkäyttö vaan tilinpääsy,, joka muuttaa kauppaa' M SK3 'offs'

Scenario: todistusaineistoM SK1kirjanpitäjät /Account/Login; se ei koskaan näe kaavaaM SK1 täyttää hunajapotin , ja nousee LoginDenied.

<!-- High-risk sessions see friction before the form -->
<sb-gate min-risk="High">
    <div class="alert alert-danger">
        High-risk signals detected. Login attempts are logged and may be blocked.
    </div>
</sb-gate>

<!-- Bots see a deterrent message - but the form is still rendered below -->
<sb-bot>
    <div class="alert alert-warning">
        Automated login attempts are detected and blocked.
    </div>
</sb-bot>

<!-- Form is visible to everyone; the honeypot is the second layer -->
<form method="post" action="/Account/Login">
    @Html.AntiForgeryToken()
    <sb-honeypot prefix="hp" fields="2"></sb-honeypot>
    <div class="form-group">
        <label for="email">Email address</label>
        <input type="email" id="email" name="email" autocomplete="email" />
    </div>
    <div class="form-group">
        <label for="password">Password</label>
        <input type="password" id="password" name="password" autocomplete="current-password" />
    </div>
    <button type="submit" class="btn btn-primary">Sign In</button>
</form>

Valvonta antaa lopullisen tarkastuksen:

[HttpPost]
public IActionResult Login(LoginModel model)
{
    if (HoneypotValidator.IsTriggered(HttpContext))
        return RedirectToAction("LoginDenied");

    if (HttpContext.IsBot())
        return RedirectToAction("LoginDenied");

    return Authenticate(model);
}

Keskeinen seikka on kustannusten epäsymmetria. virheellinen myönteinen selvitys voi menettää myynnin . virhellinen myöntävä liittymä yleensä maksaa uudelleenkäynnistämisen. puuttunut luottamuksellinen todisteM SK3 hyökkäyksen tukahduttaminen maksaa tilinpäätöksenMSC4 Tämä tarkoittaa, että tämä loppukohta voi oikeuttaa tiukemman täytäntöönpanon


Page 5: Newsletter

Newsletterin allekirjoittaminen on se, missä AI- crawlerin käsittelystä tulee erityisen kiinnostavaa,, koska oikea vastaus ei useinkaan ole M SK1block."

Scenario: GPTBot-iskut /Newsletter/Subscribe; se näkee tiedonM SK1 lisensointiviestin tilauspyynnön sijasta, , ja sen lomakkeen jättäminen hylätään hiljaisesti

Älykkäitä crawlerejä ei yritä ostaa tuotteita tai raaka-aineita.

<!-- Human pitch - only visible to real visitors -->
<sb-human>
    <p class="muted">
        Get exclusive deals and discount codes delivered to your inbox.
        Subscribe below. Unsubscribe any time.
    </p>
</sb-human>

<!-- AI crawlers get a licensing message, not a block -->
<sb-gate bot-type="AiBot">
    <div class="alert alert-info">
        This email subscription endpoint is for human readers.
        For data licensing enquiries please contact us directly.
    </div>
</sb-gate>

<!-- Other automated clients get a simpler message -->
<sb-bot>
    <sb-gate bot-type="AiBot" negate="true">
        <div class="alert alert-warning">
            Automated subscription attempts are discarded.
        </div>
    </sb-gate>
</sb-bot>

<!-- The form - visible to everyone, processed differently per visitor type -->
<div class="card">
    <form method="post" action="/Newsletter/Subscribe">
        @Html.AntiForgeryToken()
        <sb-honeypot prefix="nl" fields="3"></sb-honeypot>
        <div class="form-group">
            <label for="email">Your email address</label>
            <input type="email" id="email" name="email" autocomplete="email" />
        </div>
        <button type="submit" class="btn btn-success">Subscribe</button>
    </form>
</div>

Ja valvonnassa:

[HttpPost]
public IActionResult Subscribe(string email)
{
    if (HoneypotValidator.IsTriggered(HttpContext) || HttpContext.IsBot())
    {
        // Silent accept: bot thinks it succeeded, no retry incentive
        return RedirectToAction("Thanks", new { real = false });
    }

    _mailingList.Subscribe(email);
    return RedirectToAction("Thanks", new { real = true });
}

Euroopan unionin Thanks näkemys voi olla samanlainen molemmissa tapauksissa. Tärkeää on, että automaattinen asiakas ei voi erottaa menestystä hiljaisesta poisheittämisestä

Tämä on myös se paikka, jossa bot-tyypit ovat tärkeimpiä. AiBot ei ole vain toinen vihamielinen merkintä, se on luokittelu, joka voi herättää liiketoiminnan vastauksen.


Page 6: My Detection

Euroopan unionin /Me sivu on kehittäjä-palvelusivun mukainenM SK1 se vastaa käytännön yhdentymiskysymykseen : mitä StyloBot uskoo tämän pyynnön olevan

Scenario: kehittäjä on juuri ottanut käyttöön StyloBotin ja haluaa varmistaa, että hakukoneen istunnot suoritetaan ihmisinä ja että curl tulosten mukaan bot.

<!-- Full detection panel: confidence, risk, reasons, contributing detectors -->
<bot-detection-details collapsed="false"></bot-detection-details>

<!-- Individual components for custom layouts -->
<sb-badge variant="full"></sb-badge>
<sb-confidence display="both" width="100%"></sb-confidence>
<sb-risk-pill></sb-risk-pill>
<sb-summary variant="card"></sb-summary>

Se <bot-detection-details> panel on what stylobot.net renders on its own home page. Sama komponenttiM SK2 sama Razor tag

bot-detectionMSC1details panel rendered on stylobot.netM SK3 Live MST4 Radarilla tapahtuvan havaitsemisenneMSSK5 MST6 bot probabilityMSV7 VeryLow riskMSR8 Allow policyMSL9 three contributing detectorsMSP10 Top Bots paneeli jäljempänä, jossa luetellaan todellisia tallennettuja botteja

Ja HttpContext laajentaminen API:

ViewBag.IsBot       = HttpContext.IsBot();
ViewBag.IsHuman     = HttpContext.IsHuman();
ViewBag.Probability = HttpContext.GetBotProbability();
ViewBag.RiskBand    = HttpContext.GetRiskBand();
ViewBag.BotType     = HttpContext.GetBotType();
ViewBag.BotName     = HttpContext.GetBotName();
ViewBag.Reasons     = HttpContext.GetDetectionReasons().ToList();

Erilaisten luokittelujen simulointi kehityksessä:

# Simulate a search engine crawler
curl -H "ml-bot-test-mode: googlebot" http://localhost:5200/Me

# Simulate a high-risk scraper
curl -H "ml-bot-test-mode: scraper" http://localhost:5200/Me

# Real browser (Playwright, Chrome, etc.) scores as human

Määrä EnableTestMode: true sisällytetään appsettings.Development.json jos haluatte, että nämä otsikot ovat kunniallisia.


Tagin avustajamalli

StyloBot UI on tarkoituksenmukaisesti pieni. Alkuperäiset ovat yksinkertaisia ; kombinaatiot ovat joustavuuden lähde

Tag helper Tehtävä SSK2 Keskeiset ominaispiirteet
<sb-human> Vain ihmisille suoritettava fallback ("ilmoitettavaM SK1 salattava ", kun se ei ole luokiteltu
<sb-bot> Vain boteille suoritettava fallback (
<sb-gate> Multi -condition gate ks. jäljempänä
<sb-signal> Yhteinen tekninen signaaliportti signal, condition, value, fallback, negate
<sb-honeypot> Invisible trap fields prefix, fields Ennakolta (1-3;
<sb-badge> Detektion status-kippi variant ("
<sb-confidence> Botin todennäköisyysasteikko display ("bar width
<sb-risk-pill> Risk-lipun merkintä
<sb-summary> Kompaktinen tunnistuskortti variant ("
<bot-detection-details> Täsmällinen havaitsemistapa collapsed (bool view ("defaultM SK1compact")

<sb-gate> on yleinen-purpose workhorseM SK1

<sb-gate human-only>...</sb-gate>
<sb-gate bot-only>...</sb-gate>
<sb-gate verified-only>...</sb-gate>
<sb-gate max-risk="Low">...</sb-gate>
<sb-gate min-risk="Medium">...</sb-gate>
<sb-gate bot-type="SearchEngine,VerifiedBot">...</sb-gate>
<sb-gate bot-type="AiBot" negate="true">...</sb-gate>
<sb-gate max-risk="Low" fallback="hide">...</sb-gate>

Riskivyöhykkeet järjestyksessä: VeryLow, Low, Elevated, Medium, High, VeryHigh, Critical.

<sb-signal> suljetukset suoraan raaka-alaisiin blackboard-signaaleihin. condition tunnus hyväksyy exists, not-exists, true, false, equals, not-equals, gt, lt, gte, lte, contains, any-true, ja all-true.

<sb-signal signal="ip.is_datacenter" condition="true">...</sb-signal>
<sb-signal signal="detection.probability" condition="gte" value="0.8">...</sb-signal>

Tärkeää suunnitteluvaihtoehtoa on se, että nämä auktorit koskevat renderointia.

Controller- ja Razor-sivujen ominaispiirteet

Serverin osalta:- sivun täytäntöönpanoa koskevat toimenpiteet:, StyloBot paljastaa myös toiminnalliset filterit ja sivu-ominaisuudet.

[BlockBots] palaa 403 botille-yleistettyjä vaatimuksia vartenM SK2 valinnaisten sallittujen luetteloiden kanssa .

[BlockBots]                                                         // block everything
[BlockBots(AllowSearchEngines = true)]                              // let Googlebot through
[BlockBots(AllowSearchEngines = true, AllowSocialMediaBots = true)] // SEO + social previews
[BlockBots(BlockCountries = "CN,RU", BlockVpn = true)]              // geo + network enforcement

sallia lippuja: AllowVerifiedBots, AllowSearchEngines, AllowSocialMediaBots, AllowMonitoringBots, AllowAiBots, AllowGoodBots, AllowScrapers, AllowMaliciousBots, AllowTools.

Verkon lipput: BlockCountries, AllowCountries, BlockVpn, BlockProxy, BlockDatacenter, BlockTor.

[RequireHuman] on tiukempi kuin [BlockBots]; sallitaan ainoastaan ihmisinä luokiteltuja pyyntöjä

[AllowBots] vapauttaa toimenpiteen valvojalta [BlockBots].

[BlockBots]
public class AccountController : Controller
{
    public IActionResult Login() { }          // blocked

    [AllowBots]
    public IActionResult HealthCheck() { }    // passes through
}

[BotPolicy("name")] soveltaa nimenomaista politiikkaa, valinnaisen loppukohdan kanssa

[BotPolicy("strict")]
[BotPolicy("strict", BlockThreshold = 0.75, MinConfidence = 0.85, ActionPolicy = "throttle-stealth")]

[BotDetector("names")] hallinnoi tiettyjä havaintolaitteita inlinessä määrittelemättä koko politiikkaa.

[BotDetector("UserAgent,Header,Ip", BlockThreshold = 0.8)]

[BotAction("name")] poistaa toiminnan vastauksen muuttamatta havaitsemispolitiikkaa.

[BotPolicy("default")]
[BotAction("challenge-captcha", FallbackAction = "block")]
public IActionResult Checkout() { }

[BlockIfSignal] ja [RequireSignal] suljetuskohta yksittäisten taulumerkkien osalta.

[BlockIfSignal("ip.is_datacenter")]
[RequireSignal("geo.country_code", Value = "GB")]

[SkipBotDetection] ohittaa havaitsemisen kokonaan terveystarkastuksia ja mittauskohtia varten.

HttpContextin lisäykset

Kaikki luokittelutiedot ovat saatavilla suoraan valvontalaitteissa, Razor Pages, ja Minimal APIs :

// Classification
bool isBot      = HttpContext.IsBot();
bool isHuman    = HttpContext.IsHuman();
bool isVerified = HttpContext.IsVerifiedBot();
bool isSearch   = HttpContext.IsSearchEngineBot();

// Scores
double prob       = HttpContext.GetBotProbability();   // 0.0 - 1.0
double conf       = HttpContext.GetBotConfidence();
RiskBand risk     = HttpContext.GetRiskBand();         // VeryLow ... Critical
ThreatBand threat = HttpContext.GetThreatBand();       // None ... Critical

// Bot identity
BotType? type = HttpContext.GetBotType();
string?  name = HttpContext.GetBotName();

// Network
bool isDc  = HttpContext.IsDatacenter();
bool isVpn = HttpContext.IsVpn();
string? cc = HttpContext.GetCountryCode();

// Raw signals (blackboard passthrough)
T? val = HttpContext.GetSignal<T>("ip.is_datacenter");

// Recommended action
bool allow   = HttpContext.ShouldAllowRequest();
bool block   = HttpContext.ShouldBlockRequest();
bool captcha = HttpContext.ShouldChallengeRequest();

Minimaalisessa API:n loppupisteessä:

app.MapPost("/api/order", (HttpContext ctx, OrderModel order) =>
{
    if (ctx.IsBot() || ctx.GetRiskBand() >= RiskBand.High)
        return Results.Forbid();

    return Results.Ok(ProcessOrder(order));
});

Tag-apuvälineet ja laajentumismenetelmät luetaan samasta per-pyynnön havaitsemista koskevasta tuloksesta, joten ei ole toista havaitsemis Passia vain siksi, että UI kuluttaa sitä .


Se, mitä taulukko osoittaa

Tausta-paneeli /_stylobot on suora toimintanäkymä:

  • Suujäljet: erilaiset vierailijat yhdistettyjen sormenjälkien perusteella
  • Bot %: osuus bot-liikenteestä
  • Jatkakaali: inhimillinenM SK1bot-suhde loppukohtaa kohti
  • Tunnuspaneeli: miten nykyinen istunto oli luokiteltu , mukaan lukien syyt ja osallistuvat havaintolaitteet

/_stylobot- Dashboard -järjestelmä paikan päällä: otsakkeessa kootut luvut, ajan kuluessa tapahtuva liikenneM SK2 Live-toiminta allekirjoituksella | ( ihmiset ja botit |, tärkeysjärjestyksessä iskujen lukumäärän perusteella ♫), ♫ ja loppupistetaulukko per ♫ - ♫ reittiä käyttävän botin painetta ♫

Split bars ovat erityisen hyödyllisiä käytännössä. Tuotteiden sivulla, joka suuntautuu voimakkaasti bottiin-dominant on todennäköisesti romutettuM SK2 Login- tai laskupisteen punaistuminen testataan usein automaattisella tavalla kauan ennen kuin käyttäjät valittavatMSC3

Jos haluatte alhaisemman tason mallin sormenjälkien ja käyttäytymisellisten vektoreiden takana, joka on esitetty ensimmäisessä julkaisusarjassa, Käytänne, Ei identiteettiä.


One-line tapaus käyttäytymiseen-aware UX

Päätöslauselma

Vaihtaja muuttaa epävarmuuden tuskaksi: väärät myönteiset menettävät asiakkaita ja väärät kielteiset vuotavat arvoa . Numero antaa teille sen sijaan muotoilla kokemustaM SK2 Voit kätkeä tarjouksia, hitaat virtaukset, , poistaa korkeat, - luottamukselliset lyhyen matkan vaihtoehdot,, esittää vaihtoehtoisia teitä,, ja varata tiukat esteet tapauksiin, jotka itse asiassa oikeuttavat sen,MSC8

Tämä on StyloBotin UI:n tarkoitus. havaitseminen on saatavilla heti pyynnön alkuvaiheessa , sitten hakemuksenne päättää, mitä se merkitsee sivulle

Seuraava versio sarjasta: Pitkällä aikavälillä tapahtuvan -käynnissä olevan .NET-palvelujen rajaton kasvun löytäminen ja korjaaminen, luotettavuuden uudelleentarkastelu, joka muutti StyloBotin ' vector similarity layer -lähdestä GB LOH-aikapommi something you can leave running on a Pi indefinitely Behaviour-Aware TypeScript UI otetaan sama havaitsemistulos Expressiin, Fastify, ja Client-lähestymistapaan mukautettavaan ohjelmistoonM SK2

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.