*StyloBot: 反制冲锋枪{(}Part 1) (中文 (Chinese Simplified))

*StyloBot: 反制冲锋枪{(}Part 1)

Monday, 08 December 2025

//

10 minute read

Scrapers即将开始使用 AI 模拟真实用户@-, 所以我建了一个机器人探测器, 可以学习 @, 适应#, 并反击\ .

读取部件 @ 2: @ how Bots got smarterer @ MPK1 @ the new Front in Bot 偵測中的新邊界

“👉”请看Live :StyloBot.net。 @ -_ 这是真正的生产系统 在单毫秒内检测您的请求\ MS K1\ CPU}- 仅@ ,}没有 GPU需要吗?

密钥概念@: @行为运行_. 这将启用一个新的类别 {-} 。 在这样的类别中, 检测器和学习系统根据所学行为模式反射路线交通的透明性\ ,} 可调适 < MS K2 teams"}\ * ,} 不是静态规则=.} YARP 网关, bots 从来没有达到您的后端@. 或者使用中间器械来建立行为路径直接进入您的应用程序层 @.

Nuget 元数 吉特胡布 嵌入器


为何存在

现今网络工程中最棘手的问题之一,

问题刚刚改变了... .... 三年前, 您可以在用户“ -Agent string@.” 上用正则字来堵住“ I95%+Bots” 用正则词阻塞“ MSSK1” 的bots, 不是因为机器人自己变聪明了 “ MS K5” 而是因为他们 大型语言模式使大规模模仿真正的用户行为变得微不足道.LLM-Phower does @'T 盲目地要求相同的路径。 它理解您的网站结构@,}当被屏蔽时,您会适应 #,A和请求页面按现实的顺序#.I it'Cs除整体行为外无法与人类区分 除了%.}

  • 流动居民代理物
  • 完全有效的浏览器指纹
  • 现实的鼠鼠运动
  • 执行 JavaScript
  • 屏蔽时适应

商业解决方案@,}(但最昂贵的 @(£3QK-£50KKK4}月度是典型的,取决于规模大小 <),>关闭{-_source,你永远不会真正知道什么是'}在引擎下发生吗?.}它们有一个限制=:}它们大多数是为“2022}威胁风景”而建造的 '*MSKK13#没有头顶的浏览器,}分发的近身~).}他们停留在以下之前

我想要的是不一样的东西

  • 开放 - 您可以阅读@,稽核 @, 并修改每个侦测规则
  • 当地当地 @-_No {3}\rd}-}party API calls@,}没有数据离开您的基础设施
  • 可理解 @ -_ 可解释的决定@,}不是黑的-box ML 模式
  • 易于推广 添加用于您特定威胁表面的自定义探测器
  • 要运行的便宜 @- CPU, 不需许可证费用 (是, 即使是在草莓皮4上
  • 为V4而建 处理现代的LLM- 驱动边境 , 不只是昨天

于是我建了 斯泰罗博特Name @ - @ a mostlearch bott 检测引擎, 用于 profession .NET @ MOSK3 Free,} 未授照的@ MS K5, 由地面上设计, 以迎接新的 Bot 时代 @.

它开始简单 …,然后发展成更有趣的东西



具体实例 @( @ what this actually catches_)

这里的’是一个真实的 -世界情景:

一个擦破的口香糖 :

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120

貌似合法 .

但它却 遗忘 染色体头总是会发送@: @%

Sec-Fetch-Mode

及其 Accept-Language 标题与所声称的本地端相匹配@. @

申请率明显是自动的 @.}

一个信号是精细的. 2个信号是可疑的 □MSK13个信号是一个图案}*.

系统在 @100_毫秒@-_没有AI需要#.}下标注它

这是整个设计的基础 : @ ’ @ t依赖一个大的@ MS K1 @ bot 或不是” @ model @ MPK3} 累积证据=.{


该系统的哲学

这个项目的核心是 @,}这个项目其实是关于机器人检测的 将交通作为生活系统处理 而不是一连串的孤立请求@. @%

为什么现在这样重要? LLM- 动力型机器人是 @'}t dumb.}它们调整了♫.}(一个LLM机撞到你的API},}得到速率*-lite{,} 更改用户=-}Agenti,} 旋轉IPMSKO9}要求相关产品@(}就像人类一样 ),}然后系统提取数据 *. • Static 规则能跟上'}但适应性系统可以.

现代搬运工的行为就像有机体一样 他们学习了",\Q+MTate@,"调查弱点 ,和对压力的反应 所以防御必须进化太高"MS K5"

这里的哲学很简单

  1. 观察许多信号 -UA,标题MS K2IPMPK3行为模式,横跨-层一致性
  2. 结合他们 托我一个信号 . 综合证据
  3. 让他们互动 @-}一个完美的UA是可疑的,如果IP是一个数据中心 ~.#标题是怀疑 如果他们丢失了真实@' re missing real_-browser marks%.}
  4. 随时间变化的适应 “- 模式衰变”“. 出现新模式 ” @. 不断学习$.

将引擎变成 小型探测器网络@,_} 每一个共同决定的提交证据都构成一个共同的决定 =-c .Q#政策变成可作曲流 =%,}不是硬性的-\ccoded rules *}.}

系统是建设成这样的 NAME OF TRANSLATORS 校正*,* 其长期目标就是行为不像防火墙,更像一个 免疫系统@:#快速在边缘@,#智能核心 #,# 并总是学习#.}


StyloBot如何避免它? )?

大多数系统依靠一两个信号 :

  • @" @Block 如果用户@-# Agency 表示“' @bot}'" @ 现代机器人使用真正的用户@-}代理字符串 @.
  • **@"_Block 如果速率@ >} X 请求 /sec="} 智能机能的机器人加速速度 . 你'会阻断真正的能量
  • "#Block 如果 IP 在数据中心@"} 住家代理网络有真正的家庭 ISPs.}祝你好运
  • *" @ block 如果 JavaScript 執行@ ' @ t執行 "} 无头浏览器执行 JS完全精细的JS=.}

模式@: @% 任何单一的信号都可以被假冒@. @% 解决方案#: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}不要依赖一个信号...

StyloBot 将许多微弱信号结合到一个强烈的判断中。 一个完美的用户=-}Agency is fine . a perfect United Yus@-_Agent 加加 a 数据中心IP 加加 缺少的安全信头 加加 请求率异常 加加 -=YTET -伊甸园字幕组=- 翻译:


它是如何工作的 @ ( @ 短版本@ MS K1 @

请求通过几个小型探测器流出 每件都提供一点证据

但三个负责检查文件的代理商... ... , - 登机通行证...

flowchart TB
    subgraph Request["Incoming Request"]
        R[HTTP Request]
    end

    subgraph FastPath["Fast Path (< 100ms)"]
        UA[User-Agent Check]
        HD[Header Analysis]
        IP[Datacenter IP Lookup]
        RT[Rate Anomalies]
        HE[Heuristic Model]
    end

    subgraph SlowPath["Slow Path (Async Learning)"]
        LLM[LLM Reasoning]
        Learn[Weight Learning]
    end

    subgraph Output["Decision"]
        Score[Risk Score 0-1]
        Action[Allow / Throttle / Block]
    end

    R --> UA & HD & IP & RT
    UA & HD & IP & RT --> HE
    HE --> Score --> Action

    HE -.-> LLM -.-> Learn
    Learn -.->|updates weights| HE

    style FastPath stroke:#10b981,stroke-width:2px
    style SlowPath stroke:#6366f1,stroke-width:2px
    style Output stroke:#f59e0b,stroke-width:2px

快速路径 @ (< @ @ I100 @ ms@ MS K2 @

同步运行@ . @ does’}没有减慢您的 App.}

  • 已知机器人模式
  • 丢失页眉的人总是发送真正的浏览器
  • 数据中心IPs @(AWS/AzureMS K2GCP})
  • 比率上升
  • UA “+” 信头之间不一致

这一渔获量 80% 机器人的瞬间.

慢路@( @Async_)}%

在背景中运行@. @%

  • 富营养模式,具有学习体重
  • LLM 推理 奥拉马
  • 更新模式声誉
  • 忘记陈旧的信号

这抓住了适应性生物体 和大多数人 思考 在用户@- @Agent_".}上他们正在追逐“"regex ”


尝试在 @ 10 @ 秒数

当地安装

dotnet add package Mostlylucid.BotDetection
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddBotDetection();

var app = builder.Build();
app.UseBotDetection();
app.Run();

万事通,万事如意

先看《生命第一》

您不想安装吗? ?@ 访问 stylobot @ . @ net 在动作中看到生产系统“. 提交请求” “, ” 请在单一毫秒内用完整早期的\ -\ @ exit 启用@ MS K3} 没有注册@ I, 完全交互性"— it's real deal decrious *.}


**它检测到什么? (At a Glance )}

@ _检查# }它发现什么 # >
用户@-}代理 -=YTET -伊甸园字幕组=- 翻译:
页眉 失踪的安保信头 无法组合
IPIP 实施伙伴 @ #云端主机假装是@“#家用用户 @MS K2} @MSC3#
利率率比率 @ 自动爆破 #, 分散的刮痕#
一致性 @ @ @ “ @ @ Chrome@ MS K2# 没有Chrome @ I’ @ 实际信头设置 @ MPK4 @

恒度是潜伏的特征, 1个 符号一致性@.


真正的检测结果 @(_Broken down@)

这里的' @% action 真正的检测看上去像 @ -} 实际数据来自 stylobot% . @ net 您可以在现场测试来生成同样的结果@ .} 显示的延迟时间是真实的 CPU @ MS K3 @ 仅表现@ MPK4 不为可见性减速 @ I.}

摘要摘要

{
  "policy": "fastpath",
  "isBot": false,
  "isHuman": true,
  "humanProbability": 0.8,
  "botProbability": 0.2,
  "confidence": 0.76,
  "riskBand": "Low",
  "recommendedAction": { "action": "Allow", "reason": "Low risk (probability: 20%)" },
  "processingTimeMs": 50.7,
  "detectorsRan": ["UserAgent", "Ip", "Header", "ClientSide", "Behavioral", "Heuristic", "VersionAge", "Inconsistency"],
  "detectorCount": 8,
  "earlyExit": false
}

“8”探测器在“51”中运行。 “- ” 指“'” 在多个证据来源平行执行“MS K2 ”

探测器贡献

每个探测器都具有加权撞击力 . 负 = 人类信号 MS K2 阳性 NSK3 bot 信号=. *

@ Q# 检测器@ Q 撞击 * Q 重量 # Q#
用户代理 @ @ -0.20 @ @ I @ @ *1.0# @ * MS K4# *% } 用户@- @ agents seemed normal # MSKO8#
页眉 @-0.15}# } @MS K3 -0.15 #信头似乎正常 #
行为 请求模式看起来正常
华量主义 -0.77 2.0 -1.54 @ @ @ 88% @ 人类可能性 @ I(16_ 功能 @ MPK3} @ O
客户服务 @ @ -0.05 @ @ I @ *0.8# # # @ @ *-0.04# @ < # 指纹似乎是合法的@ #
版本时代 }浏览器=/OS 版本现为 @
不一致 @ @ -0.05 @ @ I @ @ *0.8# @ * MS K4 @ * -0.04 @ *没有头巾@ @ 无头巾 @ MPK7 @ 乌阿不一致 # @
IPIP 实施伙伴 @ #当地主机@(#中性

缩略 湿性检测仪 使用“16”功能达到 “88%”人类信任度=.}

收集的信号

每个探测器都发出信号 输入超光速模型的信号

{
  "ua.is_bot": false,
  "ua.raw": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
  "ip.is_local": true,
  "ip.address": "::1",
  "header.has_accept_language": true,
  "header.has_accept_encoding": true,
  "header.count": 16,
  "fingerprint.integrity_score": 1,
  "behavioral.anomaly": false,
  "heuristic.prediction": "human",
  "heuristic.confidence": 0.77,
  "versionage.analyzed": true
}

这些信号长期存在,并随着时间的推移对学习系统进行培训。

类别分类细目

最后决定的累计分数(按类别分列)

|类分 | 得分 | 重量| 记号 MS K4 * |----------|-------|--------|-------| @2.0#|}最强的人类信号 1.0}正常浏览器UA=| @1.0}@|}所有预期的会头都到场了 @MS K6# | 行为举止 @|} @MS K2 @#| @ 1.0#没有率反常现象 @|# “|”客户端Side {|} @-0.04|} 0.8} 收到有效指纹 | 0.8 @|当前浏览器版本 @MS K6 校对:Soup @|_IP |}(IP IP IMSK1) 200)}#0.00Q} @MS K3Q} (0.5Q) ∮ @|Q 本地主机 @MSC6DV 中性@)#|#

加权总分数=:}-2.11 强烈的人类信号

注:: 这是演示文稿 ' fastpath 政策策略运行时 全部 显示度检测器@. 在有早期退出功能的实际生产中 @,高/-信任请求退出 在“10”下@ .} 这里的@ MS K1 @ ms is because demod 模式会中断早期退出以显示所有贡献% . @ action

使用 LLM ) 的完整管道 {(} Demo 模式

用于比较 @,_在这里 @ '%s demo 包括LLM推理在内的完整管道 有分歧的:

{
  "policy": "demo",
  "isBot": false,
  "isHuman": true,
  "humanProbability": 0.87,
  "botProbability": 0.13,
  "confidence": 1.0,
  "botType": "Scraper",
  "riskBand": "Low",
  "recommendedAction": { "action": "Allow", "reason": "Low risk (probability: 13%)" },
  "processingTimeMs": 1370,
  "aiRan": true,
  "detectorsRan": ["UserAgent", "Ip", "Header", "ClientSide", "Behavioral",
                   "VersionAge", "Inconsistency", "Heuristic", "HeuristicLate", "Llm"],
  "detectorCount": 10
}

@10探测器在@1.4秒 法学硕士跑来跑去 有不同意见 与超自然理论的结合

@ Q# 检测器@ Q 撞击 * Q 重量 # Q#
法学硕士 +0.85 2.5 +2.13 @ @ @ "# Chrome 在 Bots@ MS K2 @ cookies @ I+ @ refererger 怀疑@" @ @ @ @
超饱性时间 @ # 人类7#(}有所有证据的 ) # #
华量主义 @ } @ @ @ @ 人类可能性#(16 @ 特质 @ ) @ @ * *
用户代理 @ @ -0.20 @ @ I @ @ *1.0# @ * MS K4# *% } 用户@- @ agents seemed normal # MSKO8#
页眉 @-0.15}# } @MS K3 -0.15 #信头似乎正常 #
行为 请求模式看起来正常
客户服务 @ @ 0.00 @ @ I @ *1.8# @ * # *没有指纹@ # #等待JS=# @* #
版本时代 }浏览器 @/OS版本
不一致 @ @ -0.05 @ @ I @ @ *0.8# @ * MS K4 @ * -0.04 @ *没有头巾@ @ 无头巾 @ MPK7 @ 乌阿不一致 # @
IPIP 实施伙伴 @ @ 0.00 @ @ I @ *0.5# # # @ @ @ @ 本地主机@( @ non性 @MS K8 @ @ _ #

这是一件有趣的案子, LLM将它标记为潜在的机器人 而所有静态探测器都说人类 :

{
  "ai.prediction": "bot",
  "ai.confidence": 0.85,
  "ai.learned_pattern": "Browser string suggests Chrome, common in bots. Presence of cookies and a specific referer also points to a potential bot."
}

LLM' 推理被记录为反馈到学习系统中的信号。 如果这种模式继续出现,并被确认为肉毒杆菌流量。 I, 超常重量将调整“. ”

通知@:

  1. 两次吃力运动 @-_BARBAR_在所有的探测器前#)}和迟到的(> 都说""{Human@"}加上#MS K7}信任 *.}

  2. LLM不同意 @- 它发现了静态探测器失灵的型式 ~. 它的“+2.13 加权撞击部分地对抗了超光速 ~' ~ -3.46.

  3. 无指纹 “-”客户端Side 返回了“0” 因为JS在真实的浏览器中“,” 会添加更多的人类信号“MS K5”

  4. 最后判决@: @ 允许 综合证据仍有利于人类, botType: "Scraper" 意指它' 正在被监视@.

分类细目显示张力@: @%

|类分 | 得分 | 重量| 记号 *MS K4 * |----------|-------|--------|-------| | 华量主义 @| @ @ -3.46 @ @ *|# @ *4.5# # 强大的人类信号 @MS K5# | 大赦国际 @| @ +2.13 @ @ @ I| @ @ *2.5# MS K4 @ LLM说:bot@| @ 1.0}正常浏览器 | @|#标题@|_ -0.15} @MS K3} @1.0 所有信头都到场了$|# @1.0}(正常模式) | “|”客户端Side {|} @0.00|}1.8\an8}@|}没有指纹,也没有指纹 0.8+|+当前版本 @|# 校对:Soup @|#IP IP #|#%0.00#@|0.5} @MS K5#当地主机#|#

加权总分数=:}-1.86 @→_人类赢%,}但LLM#'_反对者已注意到@.{

关键洞察力: 系统盲目信任任何单一的检测器@. @ 当他们不同意,}证据是加权的,多数人赢得了#-}但是少数派的意见会被记录下来

重要的: 此verbose 输出为 demo@ - @ only @ MS K1 @ 在 producting\ @ MPK2} 您可以通过 HTTP 信头 {(} 获得微小响应 。X-Bot-Confidence, X-Bot-RiskBand@ , @ etc@ MS K1} 或者简单 context.IsBot() ưμ㼯A


利用成果

if (context.IsBot())
    return Results.StatusCode(403);

var score = context.GetBotConfidence();  // 0.0-1.0
var risk  = context.GetRiskBand();       // Low/Elevated/Medium/High

保护终点

app.MapGet("/api/data", Secret).BlockBots();
app.MapGet("/sitemap.xml", Sitemap)
   .BlockBots(allowVerifiedBots: true);

风险水平指导行动*:

建议采取的行动 | | -------- | ---------- | ------------------ | @| 低 | MS K2 @#0.3 | 允许 *| / 比例为 @-限制@| -=YTET -伊甸园字幕组=- 翻译: @|}高音 | MS K2 *#0.7 #| #Block@|#


AI 检测 (Optional)

不需要@- @}但对于抓取高级自动化很有用 @ .#

超强检测器 @(Fast,学习@)

该系统包括一种休眠检测器,它利用动态学习重量的后勤回归来进行逻辑回归。 它从明智的默认开始,根据探测反馈进化。

典型的延缓度 : # 1-5#

{
  "BotDetection": {
    "AiDetection": {
      "Heuristic": {
        "Enabled": true,
        "LoadLearnedWeights": true,
        "EnableWeightLearning": true
      }
    }
  }
}

以动态方式提取特性@-}新的模式会自动获得默认重量,并随着时间的流逝而学习#.}系统会发现什么重要 贵国的 交通 #.#

Ollama LLM @ (# 深智原因 @)#

捕捉快速规则的蒸发机器人 奥拉马 本地 LLM 推断@. @%

ollama pull gemma3:1b
{
  "BotDetection": {
    "AiDetection": {
      "Provider": "Ollama",
      "Ollama": { "Model": "gemma3:1b" }
    }
  }
}

AI 是 失败的-# safe -,如果它"'s down" <,BARBAR 继续正常的检测>.}


学习系统@:适应性 @,不触发%-快乐

静态区块列表正在变换 stale @ . @ 攻击者调整@ MS K1} @ 所以这个系统学习了 .

flowchart LR
    N[Neutral] -->|repeated bad activity| S[Suspect]
    S -->|confirmed| B[Blocked]
    B -->|no activity| S
    S -->|stays clean| N

    style B stroke:#ef4444,stroke-width:2px
    style S stroke:#eab308,stroke-width:2px
    style N stroke:#10b981,stroke-width:2px

模式随着时间的流逝而衰变+:

  • 实施伙伴被重新分配
  • 错误配置的脚本得到修正
  • 交通量自然变化

永久合法用户@. @%

{
  "BotDetection": {
    "Learning": {
      "Enabled": true,
      "ScoreDecayTauHours": 168,
      "GcEligibleDays": 90
    }
  }
}

YARP 网关:对您的应用程序的边缘保护

这里还有 ’ Docker- 首个 YARP 反向代理 运行检测 之前 请求按下您的 App.

flowchart LR
    I[Internet] --> G[YARP Gateway]
    G -->|Human| App[Your App]
    G -->|Search Engine Bot| App
    G -->|Malicious| Block[403]

用一条线运行它 :

docker run -p 80:8080 \
  -e DEFAULT_UPSTREAM=http://your-app:3000 \
  scottgal/mostlylucid.yarpgateway

有关#:的工作

  • Linux 语言
  • MACOS macOS 大陆体
  • 视窗
  • 草莓皮皮・)

用于自定义路由@: @%

services:
  gateway:
    image: scottgal/mostlylucid.yarpgateway
    volumes:
      - ./yarp.json:/app/config/yarp.json

合理生产配置

{
  "BotDetection": {
    "BotThreshold": 0.7,
    "BlockDetectedBots": true,
    "EnableAiDetection": true,
    "Learning": { "Enabled": true },
    "PathPolicies": {
      "/api/login": "strict",
      "/sitemap.xml": "allowVerifiedBots"
    }
  }
}

这是往何去

本部分为 1 @ @ MS K1 @ 概览@ ). @ 下一部分挖掘更深@: @%

未来路线图#:

  • 与矢量嵌入匹配的 RAG-基模式
  • 当地小型模型推论 拉拉马沙尔普 曼斯克诺
  • 探测新攻击模式的语义相似性

如果你想要机器人探测器,你可以 理解, 扩展,和 任意在任何地方运行本系列是给你的 .


工业阅读

如果你想潜入 为什么机器人探测很困难 研究上说什么

Bot 探测 < & evasion >

网络指纹打印

行为分析 * @&非正常检测

LLM- 表示威胁\ &数据中毒

无头浏览器检测


项目链接


unlicense {-} 公共域 <% . } 无论你想怎样使用它\ MS K2\ {

Finding related posts...
logo

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