*StyloBot: 反制冲锋枪{(}Part 1)
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 从来没有达到您的后端@. 或者使用中间器械来建立行为路径直接进入您的应用程序层 @.
为何存在
现今网络工程中最棘手的问题之一,
问题刚刚改变了... .... 三年前, 您可以在用户“ -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"
这里的哲学很简单
- 观察许多信号 -UA,标题MS K2IPMPK3行为模式,横跨-层一致性
- 结合他们 托我一个信号 . 综合证据
- 让他们互动 @-}一个完美的UA是可疑的,如果IP是一个数据中心 ~.#标题是怀疑 如果他们丢失了真实@' re missing real_-browser marks%.}
- 随时间变化的适应 “- 模式衰变”“. 出现新模式 ” @. 不断学习$.
将引擎变成 小型探测器网络@,_} 每一个共同决定的提交证据都构成一个共同的决定 =-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, 超常重量将调整“. ”
通知@:
两次吃力运动 @-_BARBAR_在所有的探测器前#)}和迟到的(> 都说""{Human@"}加上#MS K7}信任 *.}
LLM不同意 @- 它发现了静态探测器失灵的型式 ~. 它的“+2.13 加权撞击部分地对抗了超光速 ~' ~ -3.46.
无指纹 “-”客户端Side 返回了“0” 因为JS在真实的浏览器中“,” 会添加更多的人类信号“MS K5”
最后判决@: @ 允许 综合证据仍有利于人类,
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 @ 概览@ ). @ 下一部分挖掘更深@: @%
- 部分#2: 博特人是如何有智能的? @ -+Bot探测的新疆域
- 部分#3: 行为分析
- 部分#4:客戶端@-侧指纹
- 部分#5在真实时间里学习体重=-
- 部分#6*:LLM内部检测器
- 部分#7*:* 学习系统正确解释
未来路线图#:
- 与矢量嵌入匹配的 RAG-基模式
- 当地小型模型推论 拉拉马沙尔普 曼斯克诺
- 探测新攻击模式的语义相似性
如果你想要机器人探测器,你可以 理解, 扩展,和 任意在任何地方运行本系列是给你的 .
工业阅读
如果你想潜入 为什么机器人探测很困难 研究上说什么
Bot 探测 < & evasion >
- 《植物交通状况报告》 -=YTET -伊甸园字幕组=- 翻译:
- OWASP: 植物管理 安全基本要点
- Cloudflare:Bot探测概览 工业观点
网络指纹打印
- JA3: SSLMS K1TLS 客户端指纹 - TLS 簽署符合 {(} 標準)}
- TCP/IP 指纹@:pMS K2f参考 - 网络- 猎人OS检测
- HTTP/2指纹技术 - HTTP/2浏览器的不同
行为分析 * @&非正常检测
- 时间序列中外星探测数据@(ACM) 统计基金会
- 入侵探测中的Markov链条 州过渡建模
LLM- 表示威胁\ &数据中毒
- 机器学习的毒害攻击数据 @(arXiv:}@1811.03728) “-”为什么刮船瞄准你的数据?
- 从大语言模型中提取培训数据 为什么机器人想要你的内容?
- 网络编辑和版权问题 法律角度
无头浏览器检测
- 播放器检测 - 如何识别无头浏览器
- 指纹: @&_Evasion 端口检测技术
项目链接
- GitHub: 完全 docs https @://githubu.com}/scottgal}MS K3stylobot 。
- Nuget: 安装软件包 https @:// @www@._nuget./{/多半是平庸的 mostlylucid.bot检测
- **多克·哈勃 : *** YARPYARP 网关 https @://hub.dockerMS K2com}/r}/scottgal /stylobotMS6开关
unlicense {-} 公共域 <% . } 无论你想怎样使用它\ MS K2\ {