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 -sarja
- Käytänne, Ei identiteettiä: miksi StyloBot mallistaa asiakkaita käytännöllisesti
- Behaviour-Aware ASP.NET UI: palvelijaM SK1 luovutti pintansa kyseisen havaitsemistuloksen yli
- Pitkällä aikavälillä tapahtuvan -käynnissä olevan .NET-palvelujen rajaton kasvun löytäminen ja korjaaminen:, luotettavuuden kurinalaisuus, joka pitää moottorin tuskallisena tuotannossa
- Behaviour-Aware TypeScript UI: ExpressM SK1 Fastify, ja hakukonekomponentit
- Sidecar-arkkitehtuuri: miten havaitsemismoottori liitetään muihin kuin -.NET-palkkiin
- Oppiminen nopeuttamaan: mukautuva oppimisjärjestelmä, , neljä,- tasotasoinen muisti ja , tuomiovarasto
- Todistuksen testaaminen, joka ei jää rauhaan: tarkastusta koskevat säännökset : yksi BDF-tietokanta hallinnoi regressiaa M SK2 lastausta, , ja kalibrointia
- 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
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
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
Tällainen on käytös.

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
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]
Ilman UI:n pinta-alaa havaitseminen pysyy infrastruktuurissa
Voitte rekisteröidä tulosta. Voitte ehkä estää pyynnön. Mutta ette voi sanoa helpostiM SK2
Siksi pinta-ala on tärkeä. Se muuttaa havaitsemisen soveltamisloogikaksiM SK1
Joissakin tapauksissa oikea vastaus on lohko.
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.)
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.
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.
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.
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.
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 . –
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.
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
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.
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

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.
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.
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.
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ä .
Tausta-paneeli /_stylobot on suora toimintanäkymä:

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ä.
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
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.