资讯动态

anti-mage的assess包API完全参考:Evaluate与Decode两个入口的完整用法和示例

发布时间:2026/10/9 1:43:39 来源:尧图企业网站定制
anti-mage的assess包API完全参考Evaluate与Decode两个入口的完整用法和示例【免费下载链接】anti-mageFor detecting anti-detect browsers and spoofed profiles through runtime coherence analysis.项目地址: https://gitcode.com/gh_mirrors/an/anti-mage本文带你一次性读懂anti-mage的assess包——这个包是整个反检测浏览器检测工具链中做运行时一致性分析的进程内入口。它只暴露两个入口assess.Evaluate把你已采集到的观测数据直接判定打分assess.Decode则安全地解析来自被检测环境的 JSON 载荷。掌握这两个入口你就能在自己的 Go 项目里嵌入一套无需特征库、只靠自相矛盾来抓异常环境的评分能力。anti-mage用一个 0–100步长为 10的分数衡量一个浏览器环境有多自洽分数越高说明该环境自我矛盾越多。全部源码见 readme.md。 一分钟看懂两个入口分别解决什么问题assess是你手里已经有数据时的入口。它把数据喂给底层引擎位于 internal/scan/换回一个判定 一个分数 一句人话解释。入口你给它什么它还你什么典型场景assess.Evaluate(env)进程内构造好的Environment结构体Assessment判定/分数/说明你自己采集完数据直接打分assess.Decode(b)被检测环境 POST 上来的 JSON 字节一个只含安全字段的Environment接收外部载荷再交给Evaluate两者常被串联使用Decode负责安全地读Evaluate负责正确地判。 入口一assess.Evaluate —— 从观测数据直接得到判定Evaluate是一个纯函数没有全局状态、不读时钟、不碰文件系统、不发网络请求对恶意输入也是总能返回、绝不 panic的。签名如下见 assess/assess.go#L115a : assess.Evaluate(env)1. 构造 Environment核心是Observations一张以探针 id为键的观测表每条观测带一个状态和一段原始 JSON 值见 assess/assess.go#L21-L24。env : assess.Environment{ Observations: map[string]assess.Observation{ scope.main: {Status: assess.StatusOK, Value: mainThreadFacts}, native.tostring: {Status: assess.StatusOK, Value: accessorSources}, font.resolved: {Status: assess.StatusUnsupported}, }, FontControls: controls, // 由你在提问前选定 OffsetDates: dates, // 由你在提问前选定 ElapsedMS: int(time.Since(issued) / time.Millisecond), }⚠️ 只有StatusOK会被当作证据StatusUnsupported、StatusError、空状态一律不计入打分见 assess/assess.go#L14-L19。浏览器没答上来永远不会被扣分。三个状态常量一览状态含义是否计入证据assess.StatusOK成功读到✅ 是assess.StatusUnsupported该环境不支持此接口❌ 否assess.StatusError读取出错❌ 否2. 用 Findings 补充库没采集的证据Findings让你把自己算出来的结论并入同一个分数见 assess/assess.go#L40-L44。每个Finding带一个名字和一个VerdictVerdict含义assess.Consistent一致不加分assess.Contradiction矛盾显著抬分assess.Modified表面被改写抬分assess.Unverified参考数据缺失不进分母assess.Inconclusive读不出结论只降低置信度Findings与Observations会被折叠进同一个分数一个Contradiction带来的抬升和库自己发现的矛盾等价。3. 读回判定有序、可比较、可当策略用Evaluate返回的Assessment携带有序的Determination见 assess/assess.go#L59-L113因此策略就是一次比较if a.Determination.AtLeast(assess.Discrepant) a.Score 30 { reject() // 已出现矛盾且分数越过阈值 } if !a.Determination.Established() { tooLittleWasRead() // 读到的太少任何方向都不敢下结论 }Determination从弱到强共 5 级等级常量直觉0NotEvaluated什么都没读到此判定不代表任何结论1Insufficient没有矛盾但证据太少两个方向都不敢说2Coherent读到的部分与它自称的平台全部吻合3Discrepant出现一处不可能同时为真的矛盾4Instrumented环境看起来被改写了隐私/无障碍/内容拦截工具也会落到这一档 入口二assess.Decode —— 安全解析外部 JSON 载荷当观测数据以 JSON 形式从被检测环境传来时用Decode读取见 assess/decode.go#L12-L56env, err : assess.Decode(body) if err ! nil { // 只有不是 JSON 对象才返回 ErrNotAnObject } a : assess.Evaluate(env)它的安全边界是这个包的设计精髓✅ 只读nonce顶层与probes/observations两个字段二者视为同一字段见 assess/decode.go#L10。❌绝不从载荷里取走elapsedMs、offsetDates、fontControls、findings——这些提问、时钟、补充证据必须由调用方自己选定不能由被检测环境自证。 对乱码/截断载荷能读多少算多少不 panic只有整体不是 JSON 对象时才返回ErrNotAnObject。 最小可运行示例下面两段取自官方示例 assess/example_test.go可直接照搬① 进程内直接判定a : assess.Evaluate(assess.Environment{ Observations: map[string]assess.Observation{ scope.main: {Status: assess.StatusOK, Value: mainThreadFacts}, native.tostring: {Status: assess.StatusOK, Value: accessorSources}, }, FontControls: controls, OffsetDates: dates, ElapsedMS: int(time.Since(issued) / time.Millisecond), }) fmt.Println(a.Determination, a.Score, len(a.Supplied))② 解析外部载荷再判定body : []byte({v:1,nonce:n1, probes:{auto.residue:{status:ok,value:{webdriver:true}}}}) env, _ : assess.Decode(body) fmt.Println(assess.Evaluate(env).Determination) // → instrumented⚖️ 分数 Score 意味着什么Score是一个 0–100、步长为 10 的估计值见 assess/assess.go#L240-L248衡量的是一组独立证据而非单项检查单调只有证据能抬升它没有任何证据能降低它量化步长固定为 10你设的阈值不会漂移保守从不因缺少某功能而给分0只表示没有读到矛盾绝不等于未被改写。评分细节由底层引擎实现完整分节顺序见 internal/scan/scan.go。 相关源码与模块路径想继续深入从这几处入手即可进程内入口与打分assess/assess.go载荷安全解析assess/decode.go官方示例可直接运行assess/example_test.go底层一致性分析引擎internal/scan/经过核实的常量参考表reference/字体族解析作为下限而非结论osfont/回环 HTTP 服务选输入、守时钟server/ 如需获取完整代码git clone https://gitcode.com/gh_mirrors/an/anti-mage项目要求Go 1.24且零外部依赖。掌握Evaluate与Decode这两个入口你就拥有了把运行时一致性分析嵌进任意 Go 服务的全部钥匙Decode保证只读该读的Evaluate保证只判该判的。【免费下载链接】anti-mageFor detecting anti-detect browsers and spoofed profiles through runtime coherence analysis.项目地址: https://gitcode.com/gh_mirrors/an/anti-mage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑