StyloBot-Release-Serien-:-Behaviour--Bewusst (Deutsch (German))

StyloBot-Release-Serien-:-Behaviour--Bewusst

Monday, 01 June 2026

//

21 minute read

Bot-Erkennung sollte nicht bei allow stoppen ./-Block . . Dieser Beitrag zeigt, wie StyloBot'-Klassifikation Ergebnis wird Anwendung Logik in ASP-.-NET .:-Tag Helfer in Razor . ,-Aktion Filter und Richtlinien in Controllern ?,-Signal ? --Level-Gating , so dass Ihre Benutzeroberfläche kann die Erfahrung statt Verschrauben Reibung auf nach der Tatsache gestalten .

StyloBot

StyloBot Release Series

  1. Verhalten nicht IdentitätWarum StyloBot die Kunden verhaltensmäßig modelliert
  2. Verhalten Bewusst WERDENDie Oberfläche des Servers wurde über dieses Erkennungsergebnis gespiegelt.
  3. Ungebundenes Wachstum in langen --Diensten finden und behebenDie Zuverlässigkeitsdisziplin, die den Motor in der Produktion langweilig hält
  4. Verhalten--Bewusstsein TypScript UIKomponenten von , und Browsern
  5. Die Sidecar-ArchitekturWie der Detektions-Engine mit Nicht--.-NET-Stacks verbunden wird
  6. Schneller lernenDas adaptive Lernsystem (MSK) und der Urteilscache
  7. Testen der Sache, die Won-' sitt StillEine BDF-Datei treibt Regression an.
  8. StyloExtrahieren Sie einen lokalen HTML zu Markdown KonverterDie HTML-Markdown-Schicht, die sich mit dem Detektor verbindet, hat den Walker Bug lucidVIEW gefangen und die Hundefutterschleife, die es ehrlich machte.

StyloBot UI ist die ASP-.-NET Oberfläche über StyloBot''s Detektion Ergebnis .'s Job ist einfach machen Bot und Risikoklassifizierung verfügbar, wo Web-Anwendungen tatsächlich brauchen es .,' in Razor Ansichten .

Einleitung

Die meisten UX-Systeme sind blind... sie geben die gleiche Seite an alle zurück... dann versuchen Sie, sich später mit Middleware zu erholen.

Dieser Beitrag ist der zweite Eintrag in der StyloBot Release-Serie. Verhalten nicht Identität bedeckte das Modell unter dem System. Dieses deckt die Oberfläche von ASP...NET ab, die dieses Modell in Anwendungsverhalten verwandelt.

Angenommen, die Erkennung existiert bereits..... Nehmen Sie an, die aktuelle Anfrage hat bereits ein Klassifizierungsergebnis an sie angeschlossen?.. Die interessante Frage ist, was Ihre Benutzeroberfläche damit tun kann, während die Seite gebaut wird.MSC2

Das ist, was StyloBot UI für ist, .-Es gibt ASP..-NET eine saubere Oberfläche über dem Erkennungsergebnis so Razor Ansichten...

Also statt der Verschraubung Reibung auf nach der Tatsache, dass Sie die Erfahrung zur Renderzeit formen können

  • zeigen unterschiedliche Inhalte zu Menschen und Bots
  • hohe UI-Werte vor verdächtigen Sitzungen verbergen
  • Reibung zu riskanten Strömen hinzufügen, bevor sie Missbrauch werden
  • Halten Sie die Durchsetzung in Controllern, während die Seite bleibt Kontext

Dieser Artikel ist speziell über, dass ASP .. ?NET Oberfläche ?: ?Tag Helfer ?, ?Seite Â- ?Level-Gating ? , ? und Server ? - ?side Integration ?. Es folgt Verhalten nicht IdentitätDer nächste Artikel wird das JavaScript und den Client abdecken, die das Verhalten Modell darunter erklären.

Die ASP-.-NET-Oberfläche

Dies ist, wie das Verhalten UI sieht in der wilden UI user users im stylobot utser visuals userin usern usert uvm.'s eigene Klassifizierung inline usser so, wie jede Razor-Ansicht kann.

Dashboard Top-Bar auf Stylobot-.-net Aggregat zählt auf der linken und rechten Seite "-YOU.:-Mensch-0.0%-unbekannte Ansicht →"-aus Sb--Badge-MS K8-SbMS-K9-Vertrauen und sb--Risk--Pill Tag Helfer

Das rechte ,-' Hand-Cluster ist drei Tag Helfer , ('<sb-badge>, <sb-confidence>, <sb-risk-pill>Messwert aus dem gleichen Per--Erkennungsresultat anfordern würde der Controller die gleichen Daten zur Renderzeit ausdrücken

Die Kernidee ist die einfache Erkennung von : shouldn 't stopp at "-allow-"- oder MS K3-Block-."-In einer Web-App sollte es für die Benutzeroberfläche selbst zur Verfügung stehen

Das bedeutet:

  • Razor kann unterschiedliche Inhalte für den Menschen rendern.
  • Formen können geschichtete Verteidigungen wie Honigtöpfe als Teil der Seite einschließen nicht als separates Sicherheitssystem
  • Controller können das gleiche Erkennungsergebnis die bereits verwendete Benutzeroberfläche durchsetzen
  • Ihre ASP-.-NET App kann auf das reagieren, was die Anfrage tut, nicht nur wer die Sitzung zu sein behauptet

Wenn Sie die Detektionsmaschine Geschichte wollen, die bereits in abgedeckt ist Teil und TeilDieser Artikel beginnt eine Ebene darüber, dass die Erkennung bereits da ist.

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]

Warum diese Oberfläche zählt

Ohne UI-Oberfläche Die Erkennung bleibt in der Infrastruktur gefangen

Sie können eine Punktzahl loggen.-Sie können vielleicht eine Anfrage blockieren.-Aber Sie können nicht einfach sagen:-

  • Katalog anzeigen, aber Angebot ausblenden
  • machen das Anmeldeformular für hohen --Risikoverkehr anders
  • lassen Sie Bots suchen siehe crawl .- ?friendly Metadaten ohne Übergabe jedes kommerziellen Signal
  • KI-Crawler eher als Lizenzgespräch behandeln als als als gebrochene Formeinreichung

Das ist, warum die Oberfläche zählt...... es verwandelt Erkennung in Anwendungslogik..

Manchmal ist die richtige Antwort ein Block, der oft etwas subtiler ist.

  • Rabattcodes vor Preisabschabern verstecken
  • Express Checkout von erhöhten --Risikositzungen entfernen
  • Dienste von Such-Metadaten, ohne kommerzielle Signale auszusetzen
  • Newsletter-Anmeldungen aus der Automatisierung schweigend abwerfen
  • Reibung zu verdächtigen Logins hinzufügen, ohne normale Benutzer zu bestrafen

Dies ist der Differentialator in StyloBot UI...Die Detektions-Engine gibt Ihnen das Urteil.;. Die Oberfläche von ASP-..NET lässt Sie etwas Nützliches mit ihm auf der Seite und Durchflussniveau tun. .. .MSC4.Wo dieses Urteil kommt von .,. wie es gecached '.7. und warum eine nachhaltige Ausführung von Anfragen aus dem gleichen Client kostet Mikrosekunden statt Millisekunden. Schneller lernen.)

Das Schaufensterbeispiel

Dieser Artikel geht durch eine Probe ASP-.-NET Core MVC storefront, die StyloBot UI Helfer auf sechs Seiten verwendet.:. die Startseite,. Produktseite,. Checkout,. login.,. Newsletter Anmeldung,. und eine Selbstdiagnoseseite ..

Die Beispiel-App ist absichtlich kleine, von : erzeugte Produkte, ein paar Kategorien, ,. Checkout-Newsletter und login... Der Punkt ist nicht die Commerce-Logik, sondern der Punkt zeigt, wie Bot-Klassifizierung Anwendung Logik wird.

Installieren Sie die Pakete

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

Dann verdrahten Sie StyloBot in 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");

Das genügt, um Anfragen zu klassifizieren und das Ergebnis den Razor-Controllern und dem Live-Dashboard von . auszusetzen. Teil 3. deckt, dass im Detail.

Ein schnelles Beispiel: Anmeldung als geschichtete Verteidigung

Die Login-Seite ist ein gutes Micro-Beispiel, weil es das ganze Modell in wenigen Zeilen zeigt.

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");

Der Bot sieht eine Warnung: ,, dann streift er die Honigkanne aus, wenn er den Server abweist.-side wird abgelehnt, wenn es irgendwie die früheren Schichten umgeht.., jede Schicht ist klein.., zusammen schaffen sie Verteidigung in der Tiefe ohne CAPTCHA--, erste Erfahrung für jedermann.

Der Rest dieses Beitrags erweitert, dass Idee über eine realistische Schaufenster


Die Kosten des Nichtwissens, wer in Ihrem Shop ist

Das wichtigste kommerzielle Problem ist nicht, dass verschiedene Arten der Automatisierung unterschiedliche Arten von Schäden verursachen.

Preis-Schablonen Sie ernten Produktnamen, Preise, Beschreibungen und Lagerdaten, damit Wettbewerber sich in naher Echtzeit gegen dich repreisieren können.

Gutscheintester Sie brute--, erzwingen Rabattcode Leerzeichen, bis sie gültige Codes finden, die dann zu Coupon Foren und Erode Rand gepostet erhalten

Beglaubigte Füllstoffe Sie replay durchgesickert Benutzername .--Passwortpaare auf Skala ?.-auch niedrige Trefferraten werden Konto Übernahme Ereignisse, wenn das Volumen hoch ist .

KI-Trainings-Crawler Sie ernten Beschreibungen, Bewertungen und redaktionelle Kopie für Modell-Training, das ist nicht das gleiche Bedrohungsmodell wie ein Kasse Angreifer, aber es ist immer noch Extraktion, .

Rundschreiben-Erntemaschinen Sie prüfen Anmeldeformulare, um E-Mail-Adressen zu validieren.,-Vergiftungsmailinglisten.,- oder Test auf Injektionsschwächen.

Diese sind nicht das gleiche Problem, also ein einzelner Block, -...alles Strategie ist die falsche Abstraktion.


Seite Die Verkaufsfläche

Die Homepage ist, wo viele Scraper beginnen... Sie wollen den Katalog... Sie möchten den für Menschen verwendbaren Katalog und indexierbar für die Suche...... aber weniger kommerziell wertvoll für automatisierte Ernte...

Szenario: Ein Preiskratzer trifft /Es sieht eine neutrale Katalognachricht, kein Willkommensexemplar und keine Kategorie zählen.

<!-- 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>

Dies sind Rendering-Andeutungen,-nicht Zugriffskontrollen.-Die Seite funktioniert immer noch.-Welche Änderungen ist der Kontext um sie herum.-Das macht die Seite weniger nützlich für eine systematische Ernte, ohne das Kundenerlebnis zu degradieren

Dies ist auch, wo es um die Differenzierung von Suchmaschinen geht...Sie wollen Googlebot-Indizierungsprodukte?..Sie möchten vielleicht nicht, dass jeder automatisierte Client dieselbe kommerzielle Präsentation erhält wie ein menschlicher Käufer...Behaviour...-.aware Rendering ermöglicht Ihnen das Trennen von ".indexierbaren ".


Seite Die Produktseite

Die Produkt-Detailseite ist, wo kommerzielle Absicht explizit wird.Es ist auch, wo Preiskratzer und Gutscheinjäger nach den Signalen suchen, die ihnen wichtig sind.

Szenario: Ein Preiskratzer landet auf /Product/Detail/12Es sieht keinen Rabattcode und kein Kaufsignal, um auf zu handeln.

<!-- 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>

Drei nützliche Muster zeigen sich hier.

Loyalitäts-Targeting Gute Angebote sollten zu guten Sessions gehen..-Zeige Rabatte nur auf niedrig zeigen.--Gefahrverkehr reduziert Abfall und senkt die Wahrscheinlichkeit, dass Schaber oder Gutschein Bots das Angebot heben.

Progressive Reibung Medium: --Risiko bedeutet nicht automatisch "-Block, ."-Geteilte Netzwerke ,-Privacy-Browser ,- und VPNs alle erstellen falsche Positive.-Eine Warnung bewahrt oft den Verkauf besser als harte Denial-.-

Signal---Level-Gating-Signal-. ip.is_datacenter ist ein rohes Signal, nicht ein Risikoband, nicht .. Manchmal ist die Politik, über die Sie sich sorgen, nicht ".Wie riskant dieser Besucher insgesamt ist, aber ". verletzt diese spezifische Eigenschaft eine Geschäftsregel.

Wenn Sie die Architektur hinter diesen Signalen wünschen Teil MSK01 umfasst die inszenierte Detektionspipeline.

Diese Unterscheidung verläuft durch den Rest des Samples....... Risikobänder gestalten breite UX-Entscheidungen...... während einzelne Signale engere Richtlinienregeln handhaben.........


Seite Auschecken

Checkout ist das höchste Ziel des --Wertes auf der Website.. , Betrug Automatisierung , , , Kartentests , , , Gutscheinmissbrauch und Scripted Retries alle konvergieren hier.

Szenario: ein Gutschein für Bot-Hits /Cart/CheckoutEs sieht eine tote - ende Nachricht, die ein Honeypot, - ausgibt und erhält eine stille Annahme ohne erneuten Anreiz.

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>

Und in der Steuerung

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

    return ProcessOrder(model);
}

Diese Seite zeigt drei Techniken, die zusammen arbeiten

Honeypot-Rückwurf-. Wenn ein Bot versteckte Felder füllt, akzeptieren Sie still die Anfrage und lassen sie fallen . . . . Fehler-Feedback hilft Angreifern zu iterieren .

Risikogradierte CTAS, . Express Checkout ist ein Vertrauensvorteil, nicht ein Standardrecht, sondern eine verdächtige Sitzung kann immer noch kaufen, aber durch einen langsameren Pfad.

Anmutige Verschlechterung Eine einfache Meldung ist oft operativ besser als ein harter Fehler..-Bots kümmern sich selten um Prosa, ;-Betreiber und Überwachungssysteme sorgen viel über 403...


Seite Anmeldung

Login is a different kind of high---Wert-Seite Das Ziel ist nicht der Missbrauch des Warenkorbs, sondern der Zugang zum Konto.

Szenario: Ein Credential-Skript trifft /Account/LoginEs sieht nie die Form, die den Honigtopf füllt, und wird zu 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>

Der Controller stellt die letzte Kontrolle zur Verfügung.

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

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

    return Authenticate(model);
}

Der Schlüsselpunkt ist Kosten-Asymmetrie Ein falscher Positiv an der Kasse kann einen Verkauf verlieren...Ein falscher positiv am Login kostet in der Regel eine Wiederholung, ..Ein verpasster Credential--.Füllangriff kostet ein Konto.MSC4. Das bedeutet, dass dieser Endpunkt eine strengere Durchsetzung rechtfertigen kann.


Seite Newsletter

Newsletter Anmeldung ist, wo AI-Crawler-Handling wird besonders interessant... weil die richtige Antwort oft nicht...

Szenario: GPTBot-Treffer /Newsletter/SubscribeEs sieht eine data-- licensing-Nachricht statt eines Abonnements pitch., und seine Form Einreichung wird stillschweigend verworfen.

KI-Crawler versuchen nicht, Produkte oder Brute zu kaufen.-.force Accounts... Sie versuchen Text zu ernten... Sie sind oft ehrlich über Identität.

<!-- 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>

Und in der Steuerung

[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 });
}

Das Thanks Die Ansicht kann in beiden Fällen identisch sein.Der wichtige Teil ist, dass der automatisierte Client den Erfolg nicht von einem stillen Rückwurf unterscheiden kann.

Dies ist auch, wo der Bot-Typ am meisten zählt. AiBot ist nicht gerade ein anderes feindliches Etikett... Es ist eine Klassifizierung, die eine geschäftliche Antwort auslösen kann... diese Schnittstelle ist für Menschen.


Seite Meine Erkennung

Das /Me Seite ist der Entwickler.-'facing utility page.MS K1' Es beantwortet die praktische Integrationsfrage, was StyloBot denkt, dass diese Anfrage jetzt...?'

Szenario: ein Entwickler hat gerade StyloBot eingesetzt und will überprüfen, dass Browser-Sessions als Mensch punkten und dass curl punktet als 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>

Das <bot-detection-details> Panel ist, was Stylobot-.'net auf seiner eigenen Homepage Rendert..' Dieselbe Komponente... gleiches Razor-Tag...

Bot---Detektion--Detail-Panel auf Stylobot gerendert .-net-:-Live-MSC4-Etablierung mit Radar ,-M4%- Bot Wahrscheinlichkeit Sehrniedriges Risiko ,-Erlauben Sie Politik ,,-Drei beitragende Detektoren , ;-Top Bots-Panel unter Auflistung echte aufgezeichnete Bots

Und über die HttpContext Erweiterung 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();

Um verschiedene Klassifizierungen während der Entwicklung zu simulieren

# 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

Satz EnableTestMode: true in der appsettings.Development.json wenn Sie wollen, dass diese Kopfzeilen geehrt...


Das Tag Helper Modell

StyloBot UI ist klein absichtlich Die Primitive sind einfach, die Kombinationen sind, wo die Flexibilität kommt von .

Tag-Helfer-Rolle-Rollen-Schlüsselattribute |---|---|---| | <sb-human> Render nur für Menschen fallback "/"Ausblenden"Ausblenden, wenn nicht klassifiziert;Ausblenden | <sb-bot> Render nur für Bots fallback (-default-:-hide-)-hite | <sb-gate> Multi---Zustandstore siehe unten | <sb-signal> Einmaliges Signaltor an der Tafel signal, condition, value, fallback, negate | | <sb-honeypot> Unsichtbare Fallenfelder prefix, fields Standardeinstellung von : | <sb-badge> Detektionsstatus-Chip (MSK) variant "/"Kompakt"/"Kompakt ")Kompakt MSK3Kompatibel | <sb-confidence> Messwert der Bot-Wahrscheinlichkeitsanzeige display ]("-bar ®"/"-text Â"/"-both-"),- width | | <sb-risk-pill> Risikoband-Etikett | <sb-summary> Kompakte Detektionskarte variant ]("-inline ®"/"-card T")-TMS3-TM | <bot-detection-details> Vollständige Detektionsstörung collapsed (-Bool-),- view ("-default"/"-compact")-compact

<sb-gate> ist das allgemeine -" Zweckarbeitspferd ,:"

<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>

Risikobänder in der Reihenfolge VeryLow, Low, Elevated, Medium, High, VeryHigh, Critical.

<sb-signal> Tore direkt auf rohen Tafelsignalen .. . condition Attribut akzeptiert exists, not-exists, true, false, equals, not-equals, gt, lt, gte, lte, contains, any-trueL 347 vom 20.12.2013, S. 671. all-true.

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

Die wichtige Design-Wahl ist, dass diese Helfer sind über die Rendering... nicht blockieren... Sie lassen Ihre Anwendung Politik in der Benutzeroberfläche ausdrücken, ohne jede Unsicherheit in eine Leugnung zu verwandeln.

Attribute Controller und Razor Page

Für Server---seitige Durchsetzung: ,-StyloBot entlarvt auch Aktionsfilter und Seitenattribute: .-Wenn die UI-Schicht ist, zeigen Sie etwas anderes:,"-Diese Schicht ist ,"-do etwas anderes.."-

[BlockBots] Rückgaben für Bot--Classified Requests mit optionalen Allowlists

[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

Flaggen zulassen AllowVerifiedBots, AllowSearchEngines, AllowSocialMediaBots, AllowMonitoringBots, AllowAiBots, AllowGoodBots, AllowScrapers, AllowMaliciousBots, AllowTools.

Netzwerkflaggen BlockCountries, AllowCountries, BlockVpn, BlockProxy, BlockDatacenter, BlockTor.

[RequireHuman] ist strenger als [BlockBots]Nur Anfragen, die als Mensch eingestuft werden, sind zulässig durch:

[AllowBots] befreit eine Aktion von einem Controller [BlockBots].

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

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

[BotPolicy("name")] wendet eine benannte Richtlinie mit optionalem Endpunkt an.

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

[BotDetector("names")] führt spezifische Detektoren inline aus, ohne eine vollständige Richtlinie zu definieren.

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

[BotAction("name")] überschreibt die Reaktion der Aktion, ohne die Erkennungsrichtlinie zu ändern.

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

[BlockIfSignal] und [RequireSignal] Gate auf einzelnen Tafelsignalen

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

[SkipBotDetection] Bypasses Detektion ganz für Gesundheitskontrollen und Messwerte Endpunkte

HttpContext-Erweiterungen

Alle Klassifizierungsdaten stehen direkt in Controllern zur Verfügung.

// 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();

In einem minimalen API-Endpunkt

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

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

Tag-Helfer und Erweiterungsmethoden lesen aus dem gleichen per--...Request Detection Ergebnis - ,, so gibt es keine zweite Detektion Pass nur weil die Benutzeroberfläche verbraucht es -.


Was das Dashboard zeigt

Das Armaturenbrett am /_stylobot ist die Live-Betriebsansicht

  • FingerabdrückeBesondere Besucher durch zusammengesetzten Fingerabdruck
  • **Bd.**Anteil von Bot--, klassifizierter Verkehr je Endpunkt
  • TrennleisteVerhältnis des Human-/Bot-Wertes pro Endpunkt
  • Ihre ErkennungstafelWie die aktuelle Sitzung klassifiziert wurde, einschließlich Gründe und beitragende Detektoren

/_Stylobot-Dashboard auf einer Live-Installation Dashboard zählt im Header,.Verkehr über die Zeit,.Live Activity by signature (.Menschliche und Bots,. Rangiert nach Trefferzahl),. und Endpoints-Tabelle mit per--.route Botdruck,. Bedrohung,. Latenz,. und Split Bars

Die Split-Bars sind besonders nützlich in der Praxis.Eine Produktseite, die stark von bot.- ist wahrscheinlich geschrottet wird Ein Login oder Checkout Endpunkt rot wird oft durch Automatisierung getestet, lange bevor Benutzer sich beschweren

Wenn Sie das untere Modell der --Ebene hinter jenen Fingerabdrücken und Verhaltensvektoren wollen, die im ersten Beitrag dieser Release-Serie abgedeckt sind, Verhalten nicht Identität.


Der one-um---line Fall für das Verhalten.

Block-/-allow ist ein Schalter, der das Verhalten von -aware UX beeinflusst.

Ein Schalter verwandelt Ungewissheit in Schmerz... falsche Positive verlieren Kunden und Fehlnegative Leckwert... ein Zifferblatt lässt Sie die Erfahrung stattdessen gestalten.... du kannst Angebote verstecken... langsame Flüsse... ,... entfernen hohe Abkürzungen von -... aktuelle alternative Pfade... und harte Sperrungen für die Fälle reservieren, die es rechtfertigen.

Das ist, was StyloBot UI für ist..-Detektion wird früh in der Anfrage verfügbar ist. ,-det dann Ihre Anwendung entscheidet, was das für die Seite bedeuten sollte.

Der Nächste in der Release-Serie Ungebundenes Wachstum in langen --Diensten finden und behebenDie Verlässlichkeit rework, die StyloBot.'s Vektor-Ähnlichkeitsschicht aus einer Zeitbombe 13 GB LOH in etwas verwandelt hat, das Sie auf einem Pi unbefristet laufen lassen können. Verhalten--Bewusstsein TypScript UI nimmt das gleiche Detektionsergebnis in Express-,-Fastify-,- und den Browser für Client-MSC2-seitige Anpassung

Finding related posts...
logo

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