使用 NGINX 作为 AI 代理实现指南一、概述1. 背景A. AI 时代的新挑战人工智能（AI）技术的快速发展创造了一个复杂的生态环境。组织开始将多个大型语言模型（LLM）提供商结合起来，并管理具有不同 API 规范的多个模型端点，以构建 AI 驱动的应用程序。这种多模型并存的环境催生了 AI Gateway 和 AI Proxy 的兴起。B. AI Proxy 的定义AI Proxy 是 AI Gateway 的简化实现，是位于应用程序与 AI 模型之间的专用基础设施组件，用于编排和保护 AI 请求的流向。2. 核心功能A. 流量控制流量控制是 AI Proxy 的核心功能，它实现了身份验证与授权机制以及速率限制，有助于防止模型滥用，并确保资源的公平分配。B. 模型转换模型转换通过提供对不同 AI 模型的统一 API 入口来实现跨 AI 模型和提供商的无缝集成，从而将复杂性从客户端应用抽象掉。C. 宕机切换宕机切换系统提供高可用性，确保请求的可靠性，能够优雅地处理模型不可用或速率受限的情况。D. 流量可观测性提供全面的监控和日志记录，以维持 AI 流程中的运营可见性。对请求与响应负载进行流量审计，对于合规性验证、故障排查与模型性能分析至关重要。二、技术方案1. 系统架构使用 NGINX 结合 NJS（NGINX JavaScript）脚本实现 AI Proxy，可以提供完整的 AI 流量治理能力。graph TB Client[客户端应用] -->|OpenAI API 格式| NGINX[NGINX AI Proxy] NGINX -->|NJS 转换| Anthropic[Anthropic API] NGINX -->|直接透传| OpenAI[OpenAI API] subgraph NGINX Router[NJS 路由脚本] Transform[模型转换] RBAC[访问控制] Failover[宕机切换] Logger[Token 日志] Router --> Transform Router --> RBAC Router --> Failover Router --> Logger end style NGINX fill:#e1f5fe style Client fill:#f3e5f5 style OpenAI fill:#c8e6c9 style Anthropic fill:#fff9c42. 工作原理A. 请求流程客户端发送统一格式的 API 请求到 NGINXNJS 脚本验证用户身份和访问权限根据请求的模型类型进行路由决策如果目标模型是 Anthropic，将请求转换为 Anthropic 格式如果目标模型是 OpenAI，直接透传请求发起子请求到后端模型提供商接收响应并进行必要格式转换记录 Token 使用情况返回统一格式的响应给客户端sequenceDiagram participant C as 客户端 participant N as NGINX participant JS as NJS 脚本 participant A as Anthropic API participant O as OpenAI API C->>N: POST /v1/chat/completions N->>JS: 路由处理 JS->>JS: 验证用户权限 JS->>JS: 检查模型类型 alt Anthropic 模型 JS->>JS: 转换请求格式 JS->>A: 子请求 A-->>JS: 响应 JS->>JS: 转换响应格式 else OpenAI 模型 JS->>O: 直接透传 O-->>JS: 响应 end JS->>JS: 记录 Token 使用 JS-->>C: 返回响应三、核心实现1. 模型路由与转换A. 请求格式转换OpenAI Chat Completions API 和 Anthropic Messages API 使用不同的请求格式。需要实现转换函数：function transformAnthropicRequest(requestBody) { let maxTokens = requestBody.max_completion_tokens || requestBody.max_tokens || 512; const anthropicRequest = { model: requestBody.model, max_tokens: maxTokens, stream: requestBody.stream || false, temperature: requestBody.temperature || 1.0, top_p: requestBody.top_p }; if (anthropicRequest.temperature > 1.0) { anthropicRequest.temperature = requestBody.temperature / 2.0; } if (requestBody.stop) { anthropicRequest.stop_sequences = Array.isArray(requestBody.stop) ? requestBody.stop : [requestBody.stop]; } const systemMessages = []; const messages = []; for (let i = 0; i < requestBody.messages.length; i++) { const msg = requestBody.messages[i]; if (msg.role === "system") { systemMessages.push({text: msg.content, type: "text"}); } else { messages.push({role: msg.role, content: msg.content}); } } if (systemMessages.length > 0) { anthropicRequest.system = systemMessages; } anthropicRequest.messages = messages; return anthropicRequest; }B. 响应格式转换function transformAnthropicResponse(anthropicResponse) { const response = JSON.parse(anthropicResponse); if (response.error) { return { error: { type: response.error.type, message: response.error.message, code: response.error.code } }; } const openaiResponse = { id: response.id, object: "chat.completion", model: response.model, choices: [], usage: { prompt_tokens: response.usage.input_tokens, completion_tokens: response.usage.output_tokens, total_tokens: response.usage.input_tokens + response.usage.output_tokens } }; for (let i = 0; i < response.content.length; i++) { const content = response.content[i]; openaiResponse.choices.push({ index: i, finish_reason: response.stop_reason, message: { role: response.role, content: content.text } }); } return openaiResponse; }2. NGINX 配置A. 基础配置js_import /etc/njs/aiproxy.js; resolver 8.8.8.8; upstream openai { zone openai 64k; server api.openai.com:443 resolve; } upstream anthropic { zone anthropic 64k; server api.anthropic.com:443 resolve; } server { listen 4242; default_type application/json; location /v1/chat/completions { set $aiproxy_user $http_x_user; js_content aiproxy.route; } location /openai { internal; rewrite ^ /v1/chat/completions break; proxy_pass_request_headers off; proxy_set_header Host "api.openai.com"; proxy_set_header Content-Type "application/json"; proxy_set_header Authorization 'Bearer ${OPENAI_API_KEY}'; proxy_method POST; proxy_pass https://openai; proxy_ssl_verify on; proxy_ssl_server_name on; } location /anthropic { internal; rewrite ^ /v1/messages break; proxy_pass_request_headers off; proxy_set_header Host "api.anthropic.com"; proxy_set_header Content-Type "application/json"; proxy_set_header anthropic-version "2023-06-01"; proxy_set_header x-api-key 'Bearer ${ANTHROPIC_API_KEY}'; proxy_method POST; proxy_pass https://anthropic; proxy_ssl_verify on; proxy_ssl_server_name on; } }四、高级功能1. 访问控制A. RBAC 配置通过 JSON 文件定义用户和模型访问权限：{ "users": { "user-a": { "models": [ {"name": "gpt-5"}, {"name": "claude-sonnet-4-20250514"} ] }, "user-b": { "models": [ {"name": "gpt-5"} ] } }, "models": { "gpt-5": { "provider": "openai", "location": "/openai" }, "claude-sonnet-4-20250514": { "provider": "anthropic", "location": "/anthropic" } } }B. 权限验证流程从请求头 X-User 中提取用户标识查询用户是否存在于配置中验证用户是否有权访问请求的模型如果验证失败，返回相应的 HTTP 错误代码graph TD A[接收请求] --> B{用户是否存在} B -->|否| C[返回 403] B -->|是| D{模型是否可访问} D -->|否| E[返回 404] D -->|是| F[继续处理请求] style C fill:#ffcdd2 style E fill:#ffcdd2 style F fill:#c8e6c92. 宕机切换A. 配置扩展在用户模型配置中添加 failover 字段：{ "users": { "user-a": { "models": [ { "name": "gpt-5", "failover": "claude-sonnet-4-20250514" } ] } } }B. 切换逻辑尝试调用主模型如果主模型返回非 200 状态码检查是否配置了 failover 模型使用 failover 模型重新发起请求返回 failover 模型的响应graph TD A[请求主模型] --> B{状态码是否为 200} B -->|是| C[返回响应] B -->|否| D{是否有 Failover 配置} D -->|否| E[返回错误] D -->|是| F[请求 Failover 模型] F --> G{状态码是否为 200} G -->|是| H[返回 Failover 响应] G -->|否| E style C fill:#c8e6c9 style H fill:#fff9c4 style E fill:#ffcdd23. Token 使用日志A. 提取 Token 信息从响应中提取 Token 使用情况并设置到 NGINX 变量：if (serviceReply.status === 200) { try { const parsedResponse = JSON.parse(responseBody); if (parsedResponse.usage) { r.variables.ai_proxy_response_prompt_tokens = parsedResponse.usage.prompt_tokens || ""; r.variables.ai_proxy_response_completion_tokens = parsedResponse.usage.completion_tokens || ""; r.variables.ai_proxy_response_total_tokens = parsedResponse.usage.total_tokens || ""; } } catch (e) { r.log(`Warning: Failed to parse response body for token extraction: ${e.toString()}`); } }B. 日志格式配置在 NGINX 主配置中定义自定义日志格式：log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' 'prompt_tokens=$ai_proxy_response_prompt_tokens ' 'completion_tokens=$ai_proxy_response_completion_tokens ' 'total_tokens=$ai_proxy_response_total_tokens'; access_log /var/log/nginx/access.log main;五、部署方案1. Docker 容器部署A. 前置条件OpenAI API KeyAnthropic API KeyDocker 环境B. 部署步骤拉取 NGINX Docker 镜像docker pull nginx:1.29.1导出 API Key 到环境变量export OPENAI_API_KEY=<API_KEY> export ANTHROPIC_API_KEY=<API_KEY>创建 Docker Volume 用于密钥存储docker volume create nginx-keys启动容器docker run -it --rm -p 4242:4242 \ -v $(pwd)/config:/etc/nginx \ -v $(pwd)/njs:/etc/njs \ -v $(pwd)/templates:/etc/nginx-ai-proxy/templates \ -v nginx-keys:/etc/nginx-ai-proxy/keys \ -e NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx-ai-proxy/templates \ -e NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx-ai-proxy/keys \ -e OPENAI_API_KEY \ -e ANTHROPIC_API_KEY \ --name nginx-ai-proxy \ nginx:1.29.12. Kubernetes 集群部署可以使用类似的架构在 Kubernetes 集群中部署，使用 ConfigMap 管理 NJS 脚本和配置文件，使用 Secret 管理 API 密钥。六、测试验证1. 基本功能测试A. User A 访问 OpenAI 模型curl -s -X POST http://localhost:4242/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'X-User: user-a' \ -d '{"model":"gpt-5","messages":[{"role":"user","content":"Hello"}]}'B. User A 访问 Anthropic 模型curl -s -X POST http://localhost:4242/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'X-User: user-a' \ -d '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"Hello"}]}'C. User B 访问 OpenAI 模型curl -s -X POST http://localhost:4242/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'X-User: user-b' \ -d '{"model":"gpt-5","messages":[{"role":"user","content":"Hello"}]}'D. User B 访问 Anthropic 模型（应该失败）curl -s -X POST http://localhost:4242/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'X-User: user-b' \ -d '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"Hello"}]}'2. 宕机切换测试使用无效的 OpenAI API Key 启动容器，验证 User A 的请求是否自动切换到 Anthropic：docker run -it --rm -p 4242:4242 \ -v $(pwd)/config:/etc/nginx \ -v $(pwd)/njs:/etc/njs \ -v $(pwd)/templates:/etc/nginx-ai-proxy/templates \ -v nginx-keys:/etc/nginx-ai-proxy/keys \ -e NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx-ai-proxy/templates \ -e NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx-ai-proxy/keys \ -e OPENAI_API_KEY=bad \ -e ANTHROPIC_API_KEY \ --name nginx-ai-proxy \ nginx:1.29.1七、局限性与改进方向1. 当前方案的局限性A. 缺乏专用 AI 安全防护NGINX 作为 AI Proxy 的主要限制是缺乏专用的 AI 安全防护措施。防范针对 LLM 的特定威胁（如 prompt 注入或数据外泄攻击）通常需要专业的 AI 安全解决方案，无法仅通过 NJS 来实现最佳效果。B. 功能扩展性虽然 NJS 提供了强大的扩展能力，但对于复杂的 AI 流量治理场景，可能需要更专业的 AI Gateway 产品。2. 改进方向A. 增强安全功能集成专业的 AI 安全解决方案实现 prompt 注入检测添加敏感数据过滤B. 扩展可观测性集成 Prometheus 指标添加分布式追踪实现实时监控仪表板C. 优化性能实现连接池管理添加响应缓存优化请求批处理八、总结使用 NGINX 结合 NJS 脚本可以实现功能完善的 AI Proxy，提供模型路由与转换、访问控制、宕机切换和 Token 使用日志等核心功能。这种方案的优势在于利用 NGINX 的高性能和稳定性，为构建可控、可观测的 AI 应用入口提供了实践参考。对于需要更高级 AI 安全防护和流量治理能力的场景，可以考虑结合专业的 AI Gateway 产品，形成更完整的 AI 流量治理解决方案。参考资料使用 NGINX 作为 AI Proxy - 微信公众号
HSBC 邮件追踪像素事件技术分析一、事件概述1. 事件背景2025 年 9 月，HSBC 银行向一位客户发送实体信函，声称发送给该客户的邮件被「退回且无法送达」，要求客户更新账户中的电子邮件地址。然而，客户实际上一直正常接收银行的所有邮件。2. 核心问题HSBC 使用追踪像素来监控客户是否阅读邮件，但该技术被隐私保护工具拦截，银行错误地将「无法追踪」理解为「邮件未送达」。3. 事件严重程度用户影响：误导性通知导致客户困扰安全风险：使用未加密 HTTP 传输追踪像素隐私问题：未经同意的邮件阅读监控二、事件经过1. 初始阶段：收到误导性信函客户收到 HSBC 实体信函，内容如下：声称发给客户的邮件被「退回且无法送达」要求客户更新在线银行账户中的电子邮件地址标注为「需要采取行动」然而，客户的邮箱中实际上正常存放着来自 HSBC 的最新邮件。2. 在线验证阶段客户按照信函指示登录银行账户，发现：账户中记录的电子邮件地址完全正确无需进行任何更新3. 客服沟通阶段A. 在线客服回应通过银行应用程序与客服代表 Ankitha 进行长达一小时沟通后，对方坚持表示：「如果银行发送了这封信，您就必须更新电子邮件地址」B. 电话客服回应直接致电客户服务部门后获得不同答复：「如果您的电子邮件地址已经正确，则可以忽略我们的来信」三、技术分析1. 追踪像素工作原理HSBC 在其邮件底部嵌入了追踪像素代码： A. 追踪像素是什么追踪像素是 1×1 像素的微小图片，通常为透明或白色，用于秘密追踪邮件阅读行为。B. 工作机制sequenceDiagram participant B as 银行服务器 participant E as 邮件服务器 participant C as 客户端 participant T as 追踪服务器 B->>E: 发送含追踪像素的邮件 E->>C: 投递邮件 C->>C: 用户打开邮件 C->>T: 请求加载追踪图片 T->>B: 记录阅读事件C. 追踪像素与传统回执的区别特性传统邮件回执追踪像素用户知情需要用户同意完全隐藏信息内容已读状态阅读时间、频率、次数可靠性依赖用户选择依赖客户端设置隐私保护有用户控制无用户控制2. 问题根因分析A. 直接原因客户使用隐私保护工具拦截了追踪像素，导致 HSBC 无法收到阅读确认。B. 深层原因（5 Whys 分析）为什么 HSBC 认为邮件未送达？因为追踪像素未被触发为什么追踪像素未被触发？因为客户的隐私保护工具拦截了追踪请求为什么 HSBC 依赖追踪像素确认送达？因为监控资本主义已普遍化，银行假设追踪技术 100% 可靠为什么银行不使用更可靠的验证方式？因为便利性和隐蔽性优先于准确性为什么会产生系统性误判？因为监控资本主义已透明化，银行无法想象用户会拒绝被监控C. 核心矛盾追踪像素的设计初衷是秘密监控，而不是确认送达。两者存在本质区别：确认送达：邮件成功到达收件箱追踪像素：收件人打开了邮件（且未拦截追踪）四、安全问题1. 未加密传输风险HSBC 使用 HTTP 而非 HTTPS 协议传输追踪像素，导致以下风险：A. 网络监听风险当客户在公共 WiFi（如咖啡馆）打开银行邮件时：同一网络的其他人可看到追踪请求攻击者可获知客户使用的银行攻击者可知道客户正在查看银行邮件B. 中间人攻击风险未加密连接允许攻击者：注入恶意内容到邮件底部篡改追踪像素参数执行其他攻击行为2. 隐私侵犯问题A. 超范围数据收集追踪像素可记录：阅读时间戳阅读次数阅读频率可能的 IP 地址和设备信息B. 未经同意的监控未征求用户同意未提供关闭选项违反隐私设计原则五、系统性问题分析1. 监控资本主义普遍化问题的核心在于监控资本主义已变得如此普遍，以至于：银行假设追踪技术 100% 可靠银行无法想象用户会拒绝被监控银行将「无法追踪」等同于「无法送达」2. 邮件系统的设计原则电子邮件最初设计的核心原则：发送方无法知道收件人是否已读邮件收件人完全控制阅读行为隐私保护是内置特性追踪像素破坏了这些原则，引入了:发送方监控能力未经用户同意的数据收集隐私侵犯机制六、改进建议1. 技术层面改进A. 最低要求：使用加密连接将所有追踪像素从 HTTP 改为 HTTPS防止网络监听和数据泄露降低中间人攻击风险B. 停止依赖不可靠的代理认识到追踪像素不等于送达确认建立更可靠的邮件验证机制接受隐私保护是用户的合法选择C. 最佳实践：停止邮件监控尊重用户隐私权遵循「最小必要」数据收集原则实践银行自身发布的数据伦理原则2. 流程层面改进A. 准确的信函模板原模板错误之处：声称邮件「退回且无法送达」标注「需要采取行动」威胁要求更新电子邮件地址改进后的模板应说明：「需要确认您能收到我们的邮件」「请检查您是否收到我们的邮件」「请验证账户中的电子邮件地址是否正确」B. 真实的验证机制不使用追踪像素，而是：发送明确的验证邮件要求用户点击链接确认收到在验证过程中进行身份认证获得用户的知情同意C. 客服培训一致性统一不同渠道的回应标准培训客服理解技术限制建立问题升级机制3. 政策层面改进A. 遵循隐私原则银行应实践其公开声明的原则：仅收集适当用途的数据在设计和审批流程中嵌入隐私考虑向客户透明公开数据使用方式B. 错误透明化当系统出现误判时：承认系统限制透明解释问题根因避免误导性陈述七、经验总结1. 技术教训A. 追踪技术的局限性追踪像素不是可靠的送达确认机制隐私保护工具会干扰追踪系统设计应考虑这些限制B. 安全设计原则所有网络通信应使用加密不应假设用户会接受监控隐私保护应是默认设置2. 流程教训A. 一致性问题不同客服渠道给出矛盾建议信函模板与技术现实不符需要建立一致的沟通标准B. 用户体验问题误导性信函导致用户困扰客服无法有效解决问题需要改进问题处理流程3. 系统性反思A. 监控资本主义的透明化当监控技术变得如此普遍，以至于服务提供方无法想象用户会拒绝被监控，这标志着监控资本主义已变得「透明化」——它已成为系统设计的默认假设。B. 隐私与便利的平衡服务方希望获得尽可能多的数据用户希望保护个人隐私需要在两者之间找到平衡C. 用户的主动防御使用隐私保护工具是合法选择用户有权拒绝被监控服务方应接受并适应这一现实参考资料That's Not How Email Works, HSBC – Dan Q
智谱AI HTTP API 调用教程一、概述1. 简介A. 是什么智谱AI 提供基于 RESTful 架构的应用程序接口，通过标准的 HTTP 协议与智谱AI 的模型服务进行交互。开发者可以使用任何支持 HTTP 协议的编程语言或开发框架调用智谱AI 的各种 AI 模型。B. 为什么学跨平台兼容：支持所有支持 HTTP 协议的编程语言和平台标准协议：基于 RESTful 设计，遵循 HTTP 标准，易于理解和使用灵活集成：可以集成到任何现有的应用程序和系统中实时调用：支持同步和异步调用，满足不同场景需求C. 学完能做什么使用任何编程语言调用智谱AI 的 GLM 系列模型实现简单对话、流式响应和多轮对话功能正确处理 API 鉴权和错误响应在生产环境中安全、高效地集成智谱AI 服务二、环境准备1. 前置条件有效的智谱AI 账户已获取 API Key基本的 HTTP 请求知识至少熟悉一种编程语言（Python、JavaScript、Java 等）2. 获取 API Key步骤流程访问智谱AI 开放平台：https://bigmodel.cn注册并登录账户进入 API Keys 管理页面创建 API Key复制生成的 API Key 以供使用安全建议建议将 API Key 设置为环境变量，避免硬编码到代码中，以提高安全性。三、API 基础信息1. 请求端点通用 API 端点https://open.bigmodel.cn/api/paas/v4/Coding 专用端点使用 GLM 编码套餐时，需要使用专属端点：https://open.bigmodel.cn/api/coding/paas/v4注意：Coding API 端点仅限 Coding 场景使用，不适用于通用 API 场景。2. 请求头要求所有请求必须包含以下 HTTP 头：请求头值说明Content-Typeapplication/json指定请求体格式为 JSONAuthorizationBearer YOUR_API_KEYAPI 密钥鉴权3. 支持的鉴权方式A. API Key 鉴权最简单的鉴权方式，直接使用 API Key：curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "你好" } ] }'B. JWT Token 鉴权适用于需要更复杂权限控制的场景（具体实现请参考官方文档）。四、基础调用示例1. 简单对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "请介绍一下人工智能的发展历程" } ], "temperature": 1.0, "max_tokens": 1024 }'参数说明model：使用的模型名称，如 glm-4.7messages：对话消息列表temperature：控制输出随机性，范围 0-2，默认 1.0max_tokens：限制响应最大 token 数2. 流式响应请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "user", "content": "写一首关于春天的诗" } ], "stream": true }'流式响应特点设置 stream 参数为 true 启用流式响应响应以 Server-Sent Events（SSE）格式返回可以实时获取模型生成的内容3. 多轮对话请求示例curl --location 'https://open.bigmodel.cn/api/paas/v4/chat/completions' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "model": "glm-4.7", "messages": [ { "role": "system", "content": "你是一个专业的编程助手" }, { "role": "user", "content": "什么是递归？" }, { "role": "assistant", "content": "递归是一种编程技术，函数调用自身来解决问题..." }, { "role": "user", "content": "能给我一个 Python 递归的例子吗？" } ] }'消息角色说明system：设置系统角色和行为user：用户消息assistant：模型回复的历史消息五、常用编程语言示例1. Python 实现完整代码示例import requests import json def call_zhipu_api(messages, model="glm-4.7"): url = "https://open.bigmodel.cn/api/paas/v4/chat/completions" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } data = { "model": model, "messages": messages, "temperature": 1.0 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: return response.json() else: raise Exception(f"API调用失败: {response.status_code}, {response.text}") # 使用示例 messages = [ {"role": "user", "content": "你好，请介绍一下自己"} ] result = call_zhipu_api(messages) print(result['choices'][0]['message']['content'])环境变量配置import os from dotenv import load_dotenv load_dotenv() api_key = os.getenv("ZHIPU_API_KEY")2. JavaScript 实现使用 Fetch APIasync function callZhipuAPI(messages) { const url = 'https://open.bigmodel.cn/api/paas/v4/chat/completions'; const headers = { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }; const data = { model: 'glm-4.7', messages: messages, temperature: 1.0 }; const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(data) }); if (!response.ok) { throw new Error(`API调用失败: ${response.status}`); } return await response.json(); } // 使用示例 const messages = [ {role: 'user', content: '你好'} ]; callZhipuAPI(messages).then(result => { console.log(result.choices[0].message.content); });3. Java 实现使用 OkHttpimport okhttp3.*; import com.google.gson.Gson; import java.io.IOException; public class ZhipuAPIClient { private static final String API_URL = "https://open.bigmodel.cn/api/paas/v4/chat/completions"; private static final String API_KEY = "YOUR_API_KEY"; private final OkHttpClient client; private final Gson gson; public ZhipuAPIClient() { this.client = new OkHttpClient(); this.gson = new Gson(); } public String callAPI(Message[] messages) throws IOException { RequestBody body = RequestBody.create( MediaType.parse("application/json"), gson.toJson(new ChatRequest("glm-4.7", messages)) ); Request request = new Request.Builder() .url(API_URL) .post(body) .addHeader("Authorization", "Bearer " + API_KEY) .addHeader("Content-Type", "application/json") .build(); try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException("API调用失败: " + response); } ChatResponse chatResponse = gson.fromJson( response.body().string(), ChatResponse.class ); return chatResponse.choices[0].message.content; } } }六、错误处理1. 常见错误码错误码说明解决方案401未授权检查 API Key 是否正确429请求过于频繁降低请求频率，实施重试机制500服务器内部错误稍后重试，如持续出现请联系支持更多错误码和解决方案请参考官方 API 错误码文档。2. 错误处理最佳实践实施指数退避重试机制import time import random def call_with_retry(func, max_retries=3): for attempt in range(max_retries): try: return func() except Exception as e: if attempt == max_retries - 1: raise wait_time = (2 ** attempt) + random.random() time.sleep(wait_time)记录详细错误日志import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) try: result = call_zhipu_api(messages) except Exception as e: logger.error(f"API调用失败: {str(e)}", exc_info=True)七、实践建议1. 安全性A. API Key 管理妥善保管 API Key，不要在代码中硬编码使用环境变量或配置文件存储敏感信息定期轮换 API KeyB. 数据传输始终使用 HTTPS 协议实施适当的加密措施保护数据传输2. 性能优化A. 连接管理实施连接池和会话复用合理设置超时时间B. 并发处理使用异步请求处理高并发场景考虑使用消息队列削峰填谷3. 监控与告警A. 关键指标监控 API 调用频率和成功率跟踪响应时间和错误率B. 告警机制设置合理的告警阈值建立快速响应流程八、架构图sequenceDiagram participant Client as 客户端应用 participant API as 智谱AI API participant Auth as 鉴权服务 participant Model as GLM 模型 Client->>Auth: 1. 携带 API Key Auth->>API: 2. 验证通过 Client->>API: 3. 发送 HTTP 请求 API->>Model: 4. 调用模型推理 Model->>API: 5. 返回生成结果 API->>Client: 6. 返回 JSON 响应九、更多资源1. 官方文档API 文档：查看完整的 API 接口文档和参数说明技术支持：获取技术支持和帮助2. 相关资源核心参数文档官方 Python SDK参考资料智谱AI HTTP API 调用文档
MaR HTTP 数据包智能匹配替换工具技术分析
MaR HTTP 数据包智能匹配替换工具技术分析一、概述1. 项目背景A. 项目简介MaR（Matcher and Replacer）是一款网络安全领域的辅助工具，主要用于 HTTP 协议数据包的精确匹配和智能替换。它能够在满足特定条件时，根据用户定义的规则自动修改 HTTP 请求或响应内容，帮助安全研究人员在渗透测试过程中实现数据篡改自动化。B. 设计理念MaR 的设计理念源自 BurpSuite 原生的 Match and Replace 功能，但提供了更灵活强大的规则配置能力，支持条件匹配、正则表达式、多范围等高级特性。C. 技术栈开发语言：Java开发框架：Montoya API依赖平台：BurpSuite >= 2023.12.12. 核心价值A. 自动化程度高通过规则引擎自动处理 HTTP 流量，减少手动操作B. 灵活性强支持多种匹配范围、条件关系和正则表达式C. 易用性好提供右键快速创建规则功能，配置文件结构清晰二、系统架构1. 整体架构graph TB A[HTTP 流量] --> B[BurpSuite 拦截] B --> C[MaR 插件] C --> D{规则匹配引擎} D -->|条件满足| E[执行替换] D -->|条件不满足| F[原样转发] E --> G[修改后数据包] F --> H[原始数据包] G --> I[发送/接收] H --> I J[Config.yml] --> D K[Rules.yml] --> D L[用户界面] --> D2. 核心组件A. 规则引擎负责解析和执行用户定义的匹配替换规则B. 配置管理器管理 Config.yml 和 Rules.yml 配置文件C. UI 交互层提供规则管理和配置界面D. 消息处理器拦截和处理 HTTP 消息3. 工作流程sequenceDiagram participant U as 用户 participant B as BurpSuite participant M as MaR 插件 participant R as 规则引擎 participant C as 配置文件 U->>B: 发起 HTTP 请求 B->>M: 拦截消息 M->>C: 加载规则 C-->>M: 返回规则列表 M->>R: 匹配条件 alt 条件满足 R->>M: 执行替换 M->>B: 修改后消息 else 条件不满足 R->>M: 保持原样 M->>B: 原始消息 end B->>U: 返回响应三、功能详解1. 规则配置项MaR 的规则配置包含以下核心项目：配置项说明Name规则名称，用于标识规则C-Scope条件范围，指定在哪个部分检查条件Relationship匹配关系，支持「匹配」和「不匹配」Condition条件内容，用于判断是否执行替换C-Regex条件是否使用正则表达式M-Scope替换范围，指定在哪个部分执行替换Match匹配内容，需要被替换的内容Replace替换内容，替换后的新内容M-Regex替换是否使用正则表达式2. 支持的作用范围A. 请求相关范围request：完整请求request method：请求方法request uri：请求 URIrequest header：请求头request body：请求体B. 响应相关范围response：完整响应response status：响应状态码response header：响应头response body：响应体3. 高级配置A. 排除后缀排除指定后缀的请求，避免处理静态资源B. 阻止主机排除对指定域名的请求C. 作用域选择 MaR 应用于 BurpSuite 的哪些模块（Proxy、Repeater、Intruder 等）四、配置管理1. 配置文件位置A. Linux/Mac 用户配置文件位于：~/.config/MaR/B. Windows 用户配置文件位于：%USERPROFILE%/.config/MaR/C. 便携模式配置文件可放置在 MaR Jar 包同级目录下的 /.config/MaR/ 目录，方便离线使用2. 配置文件结构A. Config.yml全局配置文件，包含排除规则、作用范围等设置B. Rules.yml规则定义文件，存储所有匹配替换规则五、应用场景1. 参数篡改根据条件自动修改请求参数值示例场景：将普通用户 ID 修改为管理员 ID修改价格参数进行逻辑漏洞测试修改权限标识进行越权测试2. 响应修改修改响应内容绕过前端验证示例场景：修改响应状态码绕过前端限制修改返回数据测试 XSS修改错误信息探测后端逻辑3. 请求注入自动添加或修改请求/响应头示例场景：添加测试头进行鉴权绕过修改 Content-Type 进行注入测试添加自定义头部进行 CRLF 注入测试六、使用指南1. 插件安装路径：Extender - Extensions - Add - Select File - Next2. 快速创建规则在 HTTP 请求/响应编辑器中选中文本，右键选择「Create MaR Rule」快速创建规则，选中内容会自动填充到条件和匹配字段3. 规则管理界面Rules 标签页：管理所有规则Config 标签页：管理全局配置七、技术特性1. Montoya APIMaR 使用 Montoya API 开发，这是 BurpSuite 最新推出的扩展 API，提供更好的性能和稳定性要求 BurpSuite 版本 >= 2023.12.12. 正则表达式支持条件匹配和内容替换均支持正则表达式，提供强大的文本处理能力3. 条件关系支持「匹配」和「不匹配」两种条件关系，实现更灵活的规则逻辑4. 多范围处理支持同时对多个范围进行条件检查和替换操作八、项目信息1. 开发团队第一作者：EvilChen第二作者：0chencc团队：Mystery Security Team2. 项目状态Stars：271Forks：4最新版本：v1.1最后更新：2024 年 12 月 28 日3. 开源协议开源项目，可自由使用和修改参考资料MaR GitHub 仓库
WSIStreamer 云原生 WSI 流媒体服务器技术分析一、项目概述1. 项目背景WSIStreamer 是一个现代化的云原生全切片图像瓦片服务器。全切片图像通常体积巨大（1-3GB+），传统查看器需要下载整个文件才能显示单个瓦片，这在云存储场景下效率极低。2. 核心创新WSIStreamer 采用完全不同的方法：原生理解切片格式，通过 HTTP Range 请求仅获取所需的字节，立即返回 JPEG 瓦片。这实现了真正的按需流式传输，无需本地文件存储。3. 项目亮点一行命令启动服务：无需配置文件、无本地存储、无复杂设置云原生设计：直接从 S3 兼容对象存储服务生产级就绪：支持 HMAC-SHA256 签名 URL 认证多级缓存：切片、块、编码瓦片三级缓存机制二、技术架构1. 系统架构WSIStreamer 采用分层架构设计，核心是理解 WSI 格式并按需提取数据。graph TB Client[客户端浏览器] -->|HTTP 请求| Server[WSIStreamer 服务器] Server -->|Range 请求| S3[S3 兼容存储] Server -->|格式解析| Parser[Rust 解析器] Parser -->|Aperio SVS| SVS[SVS 格式] Parser -->|Pyramidal TIFF| TIFF[TIFF 格式] Server -->|JPEG 瓦片| Client Server -->|多级缓存| Cache[缓存系统] Cache --> L1[切片缓存] Cache --> L2[块缓存] Cache --> L3[瓦片缓存]2. 核心组件A. 格式解析器Aperio SVS 解析器：处理 SVS 格式医学图像Pyramidal TIFF 解析器：支持金字塔 TIFF 格式压缩支持：JPEG、JPEG 2000B. 存储适配器AWS S3 原生支持S3 兼容存储（MinIO、Ceph 等）HTTP Range 请求优化C. 缓存系统切片级缓存：默认最多 100 个切片块级缓存：减少重复的 Range 请求瓦片缓存：编码后的 JPEG 瓦片，默认 100MBD. Web 查看器基于 OpenSeadragon支持平移、缩放深色主题3. 工作流程sequenceDiagram participant U as 用户浏览器 participant W as WSIStreamer participant S as S3 存储 U->>W: 请求瓦片 /tiles/slide.svs/0/0/0.jpg W->>W: 检查缓存 alt 缓存命中 W-->>U: 返回 JPEG 瓦片 else 缓存未命中 W->>W: 解析切片文件结构 W->>S: Range 请求（仅所需字节） S-->>W: 返回图像块数据 W->>W: 解码并裁剪瓦片 W->>W: JPEG 编码 W->>W: 存入缓存 W-->>U: 返回 JPEG 瓦片 end三、技术实现1. 开发语言与框架语言：Rust 97.1%（Shell 2.3%、Dockerfile 0.6%）Web 框架：基于 Rust 异步运行时图像处理：原生 Rust 实现2. 核心功能A. Range 请求优化// 伪代码示例 async fn fetch_tile_range(s3_client: &S3Client, slide_id: &str, offset: u64, length: u64) -> Vec<u8> { s3_client.get_object() .bucket(slide_id) .range(format!("bytes={}-{}", offset, offset + length - 1)) .send() .await .body() .collect() }B. 多级缓存实现L1：切片元数据缓存（避免重复解析文件头）L2：块数据缓存（减少 Range 请求）L3：编码瓦片缓存（直接返回 JPEG）C. 认证机制支持 HMAC-SHA256 签名 URL 认证：graph LR A[客户端] -->|1. 请求签名| B[签名服务] B -->|2. 生成签名URL| A A -->|3. 带签名请求| C[WSIStreamer] C -->|4. 验证签名| C C -->|5. 返回瓦片| A3. API 设计A. RESTful 端点端点方法描述/healthGET健康检查/view/{slide_id}GETWeb 查看器/tiles/{slide_id}/{level}/{x}/{y}.jpgGET获取瓦片/slidesGET列出所有切片/slides/{slide_id}GET切片元数据/slides/{slide_id}/thumbnailGET缩略图/slides/{slide_id}/dziGETDZI 描述符B. 使用示例基本使用：# 从 S3 启动服务 wsi-streamer s3://my-slides-bucket --s3-region eu-west-3 # 自定义端口 wsi-streamer s3://my-slides --port 8080 # 使用 MinIO 等 S3 兼容存储 wsi-streamer s3://slides --s3-endpoint http://localhost:9000API 调用：# 列出切片 curl http://localhost:3000/slides # 获取切片元数据 curl http://localhost:3000/slides/sample.svs # 获取瓦片 curl http://localhost:3000/tiles/sample.svs/0/0/0.jpg -o tile.jpg # 获取缩略图 curl "http://localhost:3000/slides/sample.svs/thumbnail?max_size=256" -o thumb.jpg启用认证：# 启用 HMAC-SHA256 认证 wsi-streamer s3://my-slides --auth-enabled --auth-secret "$SECRET" # 生成签名 URL wsi-streamer sign --path /tiles/slide.svs/0/0/0.jpg --secret "$SECRET" --base-url http://localhost:3000四、部署方案1. 安装方式A. Cargo 安装cargo install wsi-streamerB. 从源码构建git clone https://github.com/PABannier/WSIStreamer.git cd WSIStreamer cargo build --releaseC. Docker 部署# 从 GitHub Container Registry 拉取 docker run -p 3000:3000 -e WSI_S3_BUCKET=my-bucket ghcr.io/pabannier/wsistreamer:latest # 使用 Docker Compose 本地开发 docker compose up --build2. 配置选项所有选项可通过 CLI 标志或环境变量设置：参数环境变量默认值描述--hostWSI_HOST0.0.0.0绑定地址--portWSI_PORT3000HTTP 端口--s3-bucketWSI_S3_BUCKET—S3 存储桶名称--s3-endpointWSI_S3_ENDPOINT—自定义 S3 端点--s3-regionWSI_S3_REGIONus-east-1AWS 区域--auth-enabledWSI_AUTH_ENABLEDfalse启用认证--auth-secretWSI_AUTH_SECRET—HMAC 密钥--cache-slidesWSI_CACHE_SLIDES100最大切片缓存数--cache-tilesWSI_CACHE_TILES100MB瓦片缓存大小--jpeg-qualityWSI_JPEG_QUALITY80JPEG 质量（1-100）--cors-originsWSI_CORS_ORIGINSany允许的 CORS 源3. 验证工具# 检查 S3 连接 wsi-streamer check s3://my-slides # 列出可用切片 wsi-streamer check s3://my-slides --list-slides # 测试特定切片 wsi-streamer check s3://my-slides --test-slide sample.svs五、技术优势1. 性能优势按需加载：仅传输需要的字节数据多级缓存：大幅减少网络请求和计算开销原生性能：Rust 实现保证内存安全和执行效率2. 架构优势无状态设计：易于水平扩展云原生：直接对接对象存储，无需本地文件系统一行命令：极简的使用体验3. 兼容性优势S3 兼容：支持 AWS S3、MinIO、Ceph 等多种存储后端格式支持：Aperio SVS 和 Pyramidal TIFFWeb 标准：输出标准 JPEG 瓦片，兼容任何浏览器六、应用场景1. 医学影像数字病理学：全切片病理图像查看远程会诊：云端的图像共享和协作教学演示：医学教育和培训2. 科研领域高分辨率图像分析：不需要下载整个文件大规模图像数据集：云端存储和按需访问3. 归档系统长期存储：将大型图像归档到 S3 等对象存储按需访问：需要时才提取特定区域七、项目生态1. 版本信息最新版本：v0.4.0（2025 年 1 月 14 日发布）开源协议：MIT项目热度：127 stars，1 fork2. 开发活跃度54 次提交4 个版本发布持续维护中3. 相关链接GitHub：https://github.com/PABannier/WSIStreamercrates.io：https://crates.io/crates/wsi-streamerDocker 镜像：https://github.com/PABannier/WSIStreamer/pkgs/container/wsistreamer八、技术总结WSIStreamer 是一个设计精良的云原生图像流媒体服务器，通过巧妙的架构设计解决了大型医学图像的按需访问问题。其核心优势在于：Range 请求优化：仅传输需要的数据，极大节省带宽多级缓存：三层缓存机制确保高性能极简部署：一行命令即可启动服务云原生：直接对接 S3 存储，无本地依赖该项目展示了 Rust 在系统级编程中的优势，通过内存安全和高性能特性，构建了一个可靠、高效的图像服务解决方案。对于需要处理大型图像的医学影像、科研等领域，WSIStreamer 提供了一个极具价值的开源选择。参考资料WSIStreamer GitHub RepositoryWSIStreamer on crates.ioProject Discussion on Hacker News
Hetty HTTP 安全研究工具技术分析一、概述1. 项目简介Hetty 是一个专为安全研究设计的 HTTP 工具包，旨在成为 Burp Suite Pro 等商业软件的开源替代方案。该项目针对信息安全（infosec）和漏洞赏金（bug bounty）社区的需求，提供强大的 HTTP 流量拦截和分析功能。2. 核心定位A. 开源替代方案Hetty 的核心目标是提供与商业工具 Burp Suite Pro 相当的功能，但以开源 MIT 许可证发布，让所有人都能免费使用。B. 目标用户群体信息安全研究人员漏洞赏金猎人渗透测试工程师Web 应用安全审计人员3. 项目背景Hetty 由 dstotijn 开发，使用 Go 语言编写，目前处于活跃开发状态。项目采用 MIT 许可证，鼓励社区贡献和二次开发。二、核心功能1. MITM HTTP 代理A. 流量拦截中间人攻击（MITM）代理功能完整记录 HTTP/HTTPS 请求和响应支持高级搜索和日志过滤B. 证书管理自动生成根 CA 证书支持自定义证书路径可通过 cert 子命令管理证书2. HTTP 客户端A. 请求编辑手动创建和编辑 HTTP 请求重放代理拦截的请求支持修改请求头、请求体等B. 请求发送直观的请求构建界面支持各种 HTTP 方法实时查看响应结果3. 拦截模式A. 请求拦截拦截发往目标服务器的请求手动审查和修改请求内容支持发送、接收或取消操作B. 响应拦截拦截服务器返回的响应查看和修改响应内容用于测试注入漏洞等场景4. 项目管理A. Scope 功能定义测试范围，保持工作有序基于域名、路径等规则过滤避免测试范围外的请求B. 数据库存储基于 SQLite 的项目数据库每个项目独立存储数据便于管理和切换不同项目5. Web 管理界面A. 用户界面易用的基于 Web 的管理界面实时显示代理日志直观的请求/响应查看器B. 功能布局代理日志视图请求编辑器项目设置面板三、技术架构1. 系统架构graph TB Client[客户端浏览器] -->|HTTP请求| Hetty[Hetty 代理] Hetty -->|转发请求| Target[目标服务器] Target -->|响应| Hetty Hetty -->|返回响应| Client Hetty -->|数据存储| Database[(SQLite 数据库)] Hetty -->|用户交互| WebUI[Web 管理界面] User[安全研究人员] -->|访问| WebUI2. 核心组件A. 代理服务器监听指定端口（默认 8080）处理 HTTP/HTTPS 流量实现 MITM 功能B. GraphQL 服务提供 API 接口支持数据查询和操作与前端界面交互C. 数据库层SQLite 存储项目隔离持久化日志数据D. Web 界面现代化单页应用实时数据更新响应式设计3. 技术栈组件技术选型说明后端语言Go高性能、并发支持好数据库SQLite轻量级、无需额外部署Web 框架内置 HTTP 服务器简化部署前端现代化 JavaScript交互友好代理协议HTTP/HTTPS标准协议支持四、安装部署1. 系统要求A. 操作系统macOS（支持 Homebrew）Linux（各发行版）Windows（支持 Scoop）B. 运行环境端口 8080 可用（可配置）文件系统写入权限（用于证书和数据库）网络连接2. 安装方式A. macOS（推荐）使用 Homebrew 安装：brew install hettysoft/tap/hettyB. Windows使用 Scoop 安装：scoop bucket add hettysoft https://github.com/hettysoft/scoop-bucket.git scoop install hettysoft/hettyC. Linux从 GitHub Releases 下载对应架构的二进制文件，移动到 PATH 目录。D. Docker 部署使用 Docker 运行：docker run -v $HOME/.hetty:/root/.hetty -p 8080:8080 \ ghcr.io/dstotijn/hetty:latest参数说明：-v $HOME/.hetty:/root/.hetty：挂载数据卷，持久化证书和数据库-p 8080:8080：端口映射3. 配置选项A. 命令行参数hetty [flags] [subcommand] [flags]B. 主要选项选项默认值说明--cert~/.hetty/hetty_cert.pem根 CA 证书路径--key~/.hetty/hetty_key.pem根 CA 私钥路径--db~/.hetty/hetty.db数据库文件路径--addr:8080HTTP 服务器监听地址--chromefalse自动启动 Chrome 并配置代理--verbose-启用详细日志--json-以 JSON 格式输出日志--version, -v-输出版本号--help, -h-显示帮助信息C. 子命令cert：证书管理3. 使用流程A. 启动 HettyhettyB. 配置浏览器代理设置 HTTP 代理为 127.0.0.1:8080设置 HTTPS 代理为 127.0.0.1:8080导入 Hetty 生成的 CA 证书到浏览器受信任列表C. 访问管理界面打开浏览器访问：http://127.0.0.1:8080D. 开始测试配置项目 Scope浏览目标网站在 Hetty 中查看拦截的请求使用 HTTP 客户端重放或修改请求五、功能特性详解1. 高级搜索A. 搜索功能支持多条件组合搜索快速定位特定请求基于请求头、响应内容等字段过滤B. 过滤选项按状态码过滤按内容类型过滤按 URL 模式过滤2. Scope 管理A. Scope 定义规则基于域名的包含/排除规则支持通配符匹配实时生效B. Scope 作用限制测试范围，避免误操作过滤无关流量提高工作效率3. 请求重放A. 重放功能从日志中选择请求一键重放支持修改后重放B. 应用场景参数模糊测试权限绕过测试注入漏洞验证4. 拦截模式A. 拦截设置开启/关闭拦截设置拦截规则选择拦截方向（请求/响应）B. 拦截操作查看完整请求/响应修改内容发送、丢弃或转发六、与 Burp Suite 对比1. 功能对比功能HettyBurp Suite ProMITM 代理✅✅请求重放✅✅拦截模式✅✅Intruder（模糊测试）❌✅扫描器❌✅价格免费（MIT）商业付费开源✅❌跨平台✅✅2. 优势分析A. Hetty 优势完全开源免费轻量级部署现代化界面活跃开发中B. Burp Suite Pro 优势功能更全面成熟的工具生态丰富的插件系统企业级支持3. 适用场景A. 选择 Hetty预算有限的安全研究人员需要自定义和扩展功能偏好开源工具轻量级需求B. 选择 Burp Suite Pro需要完整的功能集企业级应用需要官方技术支持复杂的渗透测试场景七、实际应用场景1. 漏洞赏金 huntingA. 工作流程配置目标域名的 Scope浏览目标应用，收集端点使用拦截功能测试参数重放请求进行模糊测试分析响应发现漏洞B. 常见漏洞类型SQL 注入XSS 跨站脚本CSRF 跨站请求伪造权限绕过信息泄露2. 渗透测试A. 测试准备部署 Hetty 代理配置测试目标 Scope导入 CA 证书B. 测试执行拦截并分析流量修改请求测试漏洞重放请求验证发现导出测试报告3. 安全研究A. 流量分析研究 Web 应用行为分析 API 接口挖掘未知漏洞B. 工具开发基于 Hetty 开发插件扩展功能集成到工作流八、项目状态与发展1. 当前状态A. 开发状态项目处于活跃开发中持续更新功能社区贡献欢迎B. 发布渠道GitHub ReleasesHomebrew Tap（macOS）Scoop Bucket（Windows）Docker RegistryDocker Hub2. 社区支持A. 问题反馈GitHub Issues：Bug 报告和功能请求GitHub Discussions：问答和故障排除B. 社区交流Discord 服务器贡献指南行为准则3. 未来规划A. 功能路线图更强大的拦截功能插件系统更多扫描器功能性能优化B. 社区发展文档完善教程和示例用户反馈收集九、最佳实践1. 使用建议A. 项目管理为每个测试目标创建独立项目合理配置 Scope，避免干扰定期备份数据库文件B. 证书管理测试完成后删除导入的 CA 证书生产环境不要使用测试证书保护好私钥文件C. 安全注意事项仅在授权环境中使用不要在公共网络暴露代理妥善处理测试数据2. 工作流优化A. 与其他工具配合结合浏览器开发者工具配合命令行工具（curl）集成到自动化测试流程B. 高效使用技巧熟练使用搜索和过滤合理设置 Scope利用重放功能提高效率十、总结Hetty 是一个有潜力的开源 HTTP 安全研究工具，作为 Burp Suite Pro 的替代方案，它提供了核心的 MITM 代理、请求拦截和重放功能。虽然目前在功能完整性上与商业工具还有差距，但其开源性质和活跃开发使其成为预算有限的安全研究人员的理想选择。对于漏洞赏金猎人和渗透测试工程师来说，Hetty 提供了足够的功能来完成日常的 Web 应用安全测试工作。随着项目的不断发展，未来有望成为更加强大和完整的开源安全测试平台。参考资料Hetty GitHub 仓库Hetty 官方文档
httpx HTTP 多用途探测工具技术分析一、概述1. 简介httpx 是由 ProjectDiscovery 团队开发的一款快速且多用途的 HTTP 工具包，它允许使用 retryablehttp 库运行多种探测。该工具设计用于在增加线程数量的同时保持结果可靠性。2. 核心特点A. 技术优势简单且模块化的代码库，易于贡献快速且完全可配置的标志以探测多个元素支持多种基于 HTTP 的探测智能的 HTTPS 到 HTTP 自动回退机制支持 hosts、URL 和 CIDR 作为输入处理边界情况，包括重试、退避等，以应对 WAF（Web 应用防火墙）B. 应用场景网络资产发现安全测试和渗透测试Bug 赏金狩猎OSINT（开源情报）收集管道化批量处理二、支持的探测类型httpx 提供了丰富的探测选项，默认启用的探测包括：探测类型默认启用描述URL是目标 URLTitle是页面标题Status Code是HTTP 状态码Content Length是响应内容长度TLS Certificate是TLS 证书信息CSP Header是内容安全策略头Line Count是响应行数Word Count是响应词数Location Header是重定向位置Web Server是Web 服务器信息Web Socket是WebSocket 支持Response Time是响应时间Request Method是请求方法Body Hash是响应体哈希Header Hash是响应头哈希URL Scheme是URL 方案（http/https）可选探测类型：IP：主机 IP 地址CNAME：CNAME 记录Raw HTTP：原始 HTTP 响应HTTP2：HTTP/2 支持HTTP Pipeline：HTTP 管道支持Virtual host：虚拟主机探测Paths：路径探测Ports：端口探测Favicon Hash：网站图标哈希Probe Status：探测状态Redirect chain：重定向链JARM Hash：JARM 指纹哈希ASN：自治系统号CDN：CDN/WAF 检测三、安装与配置1. 系统要求httpx 需要 Go >= 1.24.0 版本才能成功安装。2. 安装方法go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest3. Docker 方式docker pull projectdiscovery/httpx4. 配置文件默认配置文件路径：$HOME/.config/httpx/config.yaml四、核心架构1. 工作原理graph TB A[输入源] --> B{输入类型} B -->|hosts| C[DNS解析] B -->|URLs| D[URL标准化] B -->|CIDR| E[IP枚举] C --> F[目标队列] D --> F E --> F F --> G[线程池 默认50线程] G --> H[HTTP探测引擎] H --> I{探测类型} I -->|默认| J[基本探测] I -->|可选| K[高级探测] J --> L[结果收集] K --> L L --> M{输出格式} M -->|JSON| N[JSONL输出] M -->|CSV| O[CSV输出] M -->|标准| P[终端输出] H -->|WAF检测| Q[重试/退避] Q --> H2. 探测流程sequenceDiagram participant C as 客户端 participant H as httpx participant T as 目标服务器 participant WAF as WAF/防火墙 C->>H: 提供目标列表 H->>H: 解析和标准化输入 H->>T: HTTPS 探测 alt HTTPS 成功 T-->>H: HTTPS 响应 H->>H: 执行探测 else HTTPS 失败 H->>T: HTTP 回退探测 alt HTTP 成功 T-->>H: HTTP 响应 H->>H: 执行探测 else HTTP 失败 H->>H: 重试/退避 H->>WAF: WAF 绕过处理 end end H-->>C: 返回探测结果五、使用方法1. 基本用法# 显示帮助 httpx -h # 探测单个目标 httpx -u https://example.com # 探测多个目标 httpx -u https://example.com -u https://example.org # 从文件读取目标 httpx -l targets.txt2. 输出控制# JSON 格式输出 httpx -l targets.txt -json -o results.json # CSV 格式输出 httpx -l targets.txt -csv -o results.csv # 仅输出状态码 httpx -l targets.txt -status-code # 输出多个探测字段 httpx -l targets.txt -status-code -title -server -tech-detect3. 高级探测# 探测自定义端口 httpx -l targets.txt -ports http:8080,https:8443 # 探测虚拟主机 httpx -l targets.txt -vhost # 截图功能 httpx -l targets.txt -screenshot # TLS 指纹探测 httpx -l targets.txt -tls-grab -jarm4. 匹配与过滤# 匹配特定状态码 httpx -l targets.txt -mc 200,301,302 # 匹配特定字符串 httpx -l targets.txt -ms "admin" -ms "login" # 匹配特定响应时间 httpx -l targets.txt -mrt "< 1" # 过滤重复响应 httpx -l targets.txt -filter-duplicates # DSL 条件过滤 httpx -l targets.txt -fdc "status_code==200 && content_length>1000"5. 认证支持httpx 支持基于域名的认证，通过密钥文件配置：# secrets.yaml id: example-auth info: name: Example Auth Config static: - type: Header domains: - api.example.com headers: - key: X-API-Key value: secret-key-here - type: BasicAuth domains-regex: - ".*\\.internal\\.com$" username: admin password: secret使用方式：httpx -l targets.txt -sf secrets.yaml支持的认证类型：BasicAuth：基本认证BearerToken：Bearer 令牌Header：自定义请求头Cookie：Cookie 认证Query：查询参数认证六、作为库使用httpx 可以作为 Go 库使用：package main import ( "context" "fmt" "log" "github.com/projectdiscovery/httpx/internal/httpx" "github.com/projectdiscovery/httpx/runner" ) func main() { // 创建选项 options := httpx.Options{ Methods: []string{"GET", "POST"}, StatusCode: true, Title: true, Server: true, } // 验证选项 if err := options.Validate(); err != nil { log.Fatal(err) } // 创建 runner r, err := runner.New(&runner.Options{ Options: options, Output: os.Stdout, }) if err != nil { log.Fatal(err) } defer r.Close() // 执行探测 if err := r.RunEnumeration(context.Background(), []string{"https://example.com"}); err != nil { log.Fatal(err) } }七、性能优化1. 并发控制# 设置线程数（默认 50） httpx -l targets.txt -threads 100 # 设置速率限制（默认 150 req/s） httpx -l targets.txt -rate-limit 200 # 设置每分钟速率限制 httpx -l targets.txt -rate-limit-minute 100002. 超时与重试# 设置超时时间（默认 10 秒） httpx -l targets.txt -timeout 5 # 设置重试次数 httpx -l targets.txt -retries 3 # 设置请求延迟 httpx -l targets.txt -delay 100ms3. 优化选项# 禁用回退，探测两种协议 httpx -l targets.txt -no-fallback # 禁用自动 CDN 检测 httpx -l targets.txt -cdn false # 限制响应大小 httpx -l targets.txt -response-size-to-read 1048576八、典型应用场景1. 资产发现# 子域名存活探测 cat subdomains.txt | httpx -silent -status-code -title # IP 段 HTTP 服务发现 echo "192.168.1.0/24" | httpx -ports 80,443,80802. 安全测试# 查找敏感页面 httpx -l urls.txt -path admin,login,wp-admin -status-code -mc 200 # 技术栈识别 httpx -l targets.txt -tech-detect -json # 截图收集 httpx -l targets.txt -screenshot -store-response-dir screenshots3. Bug 赏金狩猎# 探测未授权端点 httpx -l targets.txt -paths common-paths.txt -status-code -mc 200,403 # 查找信息泄露 httpx -l targets.txt -ms "Error" -ms "Exception" -ms "Warning"4. 批量处理# 管道模式 cat targets.txt | httpx -stream | grep "200" # 组合其他工具 subfinder -d example.com | httpx -silent -title | nuclei九、注意事项1. 免责声明本项目处于活跃开发中，预期会有破坏性更改更新前请查看变更日志该工具主要设计为独立 CLI 工具，作为服务运行可能存在安全风险2. 特定标志使用以下标志应用于特定用例，不应与其他探测默认运行：-ports：端口探测-path：路径探测-vhost：虚拟主机探测-screenshot：截图-csp-probe：CSP 域名探测-tls-probe：TLS 域名探测-favicon：Favicon 哈希-http2：HTTP/2 探测-pipeline：HTTP 管道-tls-impersonate：TLS 伪装3. 输入模式支持 Burp Suite XML 导出：-l burp-export.xml -im burp自定义解析器支持多种协议：doh、tcp、udp格式：protocol:resolver:port（如 udp:127.0.0.1:53）十、社区与生态1. 项目数据Stars：9.4kForks：1k贡献者：100+使用者：256 个项目最新版本：v1.7.4（2025 年 12 月）2. 技术栈Go 61.7%HTML 37.9%其他 0.4%3. 相关工具retryablehttp-go：底层 HTTP 客户端库nuclei：漏洞扫描工具subfinder：子域名发现工具参考资料httpx GitHub 仓库httpx 官方文档ProjectDiscovery 团队
UAT-8837 组织利用 Sitecore 零日漏洞攻击技术分析一、新闻概述1. 标题中国关联黑客组织 UAT-8837 利用 Sitecore 零日漏洞获取初始访问权限2. 发布时间2026 年 1 月 16 日3. 来源BleepingComputer，基于 Cisco Talos 安全研究报告二、核心内容1. 事件摘要A. 主要内容一个追踪代号为 UAT-8837 的中国关联高级威胁组织，正专注于攻击北美地区的关键基础设施系统，通过利用已知漏洞和零日漏洞获取初始访问权限。B. 核心亮点利用 Sitecore ViewState 反序列化零日漏洞（CVE-2025-53690）针对北美关键基础设施的初始访问攻击使用大量开源工具和 LOTL（Living Off The Land）技术目标是获取凭证和 Active Directory 拓扑信息2. 关键信息A. 漏洞编号CVE-2025-53690（Sitecore ViewState 反序列化零日漏洞）B. 重要数据活跃时间：至少从 2025 年开始目标区域：北美关键基础设施攻击目的：获取初始访问权限C. 涉及产品Sitecore 产品Windows 系统Active Directory3. 背景介绍A. 相关组织Cisco Talos 研究人员在之前的报告中还提到了另一个中国关联组织 UAT-7290，该组织自 2022 年以来活跃，同样负责获取访问权限，但还涉及间谍活动。B. 相关上下文Mandiant 研究人员在 2025 年 9 月初报告称 CVE-2025-53690 为正在被积极利用的零日漏洞，在攻击中观察到了名为 WeepSteel 的侦察后门部署。三、详细报道1. 主要内容A. 攻击流程UAT-8837 的攻击通常从以下两种方式开始：利用泄露的凭证利用服务器漏洞在最近的事件中，威胁者利用了 CVE-2025-53690，这是 Sitecore 产品中的一个 ViewState 反序列化零日漏洞。B. 攻击技术ViewState 反序列化攻击凭证窃取和滥用Active Directory 枚举和侦察远程命令执行（WMI、DCOM）C. 后渗透活动使用 Windows 原生命令进行主机和网络侦察禁用 RDP RestrictedAdmin 以便利凭证收集人工键盘操作执行各种命令收集敏感数据2. 技术细节A. 攻击链路graph LR A[初始访问] --> B{攻击向量} B -->|泄露凭证| C[凭证登录] B -->|漏洞利用| D[零日漏洞] D --> E[CVE-2025-53690] E --> F[ViewState 反序列化] F --> G[部署 WeepSteel 后门] C --> H[网络侦察] G --> H H --> I[凭证窃取] I --> J[AD 枚举] J --> K[横向移动] K --> L[数据窃取]B. 工具清单凭证窃取工具：GoTokenTheft：窃取访问令牌Rubeus：滥用 KerberosCertipy：收集 Active Directory 相关凭证和证书数据Active Directory 枚举工具：SharpHound：枚举用户、组、SPN、服务账户和域关系Certipy：证书相关枚举setspn：服务主体名称枚举dsquery、dsget：目录服务查询远程执行工具：Impacket：通过 WMI 和 DCOM 执行远程命令Invoke-WMIExec：WMI 命令执行GoExec：Go 编写的执行工具SharpWMI：Sharp 编写的 WMI 工具攻击者在检测阻止执行时会循环使用这些工具隧道和持久化工具：Earthworm：创建反向 SOCKS 隧道，将内部系统暴露给攻击者控制的基础设施DWAgent：用于维持访问权限和部署额外负载的远程管理工具C. 攻击目标根据执行的命令分析，攻击者的主要目标包括：凭证收集Active Directory 拓扑和信任关系安全策略和配置信息密码和设置信息D. 供应链攻击风险至少在一次入侵中，黑客窃取了受害者使用的产品 DLL 文件，这可能用于未来的木马化植入和供应链攻击。3. 数据与事实A. 组织归属Cisco Talos 对 UAT-8837 与中国运营的关联有中等信心，评估基于与其他已知中国关联威胁组织的战术、技术和程序（TTP）重叠。B. 检测绕过UAT-8837 主要使用开源系统和 LOTL 实用程序，不断循环变体以逃避检测。四、影响分析1. 行业影响A. 安全趋势零日漏洞利用持续威胁关键基础设施ViewState 反序列化成为 Web 应用攻击的重要向量LOTL 技术的使用增加了检测难度B. 攻击趋势针对初始访问的攻击组织专业化分工凭证窃取和 AD 枚举成为攻击的标准流程供应链攻击风险上升2. 用户影响A. Sitecore 用户需要立即检查是否存在 CVE-2025-53690 漏洞监控异常的 ViewState 处理活动加强 Active Directory 安全监控B. 关键基础设施北美地区的能源、交通、通信等行业是主要目标需要加强凭证管理和访问控制建立完善的入侵检测和响应机制C. 防御建议及时修补已知漏洞监控异常的网络活动和命令执行实施 Active Directory 安全最佳实践使用多因素认证加强凭证保护3. 技术趋势A. 攻击技术方向持续利用零日漏洞获取初始访问更多使用开源工具和 LOLBins 降低攻击成本人工键盘操作和自动化工具结合使用B. 防御技术方向需要更好的行为分析和异常检测加强 Web 应用输入验证和反序列化安全实施 Zero Trust 架构减少横向移动风险五、各方反应1. 官方回应Cisco Talos 发布了详细的安全研究报告，提供了攻击中使用的命令和工具示例，以及 UAT-8837 活动的入侵指标（IOC）列表。2. 业内评价A. Mandiant 报告Mandiant 研究人员在 2025 年 9 月初首次报告了 CVE-2025-53690 的主动利用情况，观察到 WeepSteel 侦察后门的部署。B. Cisco Talos 分析Cisco Talos 强调了该组织的专业化和工具链的多样化，指出其持续改进检测绕过技术。3. 用户反馈A. 安全关注Sitecore 用户需要紧急评估漏洞风险关键基础设施运营商应加强安全监控B. 防御挑战LOTL 技术的检测难度较高需要综合使用多种安全工具和策略六、相关链接1. 官方公告Cisco Talos 安全研究报告Mandiant CVE-2025-53690 报告Sitecore 安全公告2. 相关报道BleepingComputer 原始报道Cisco AsyncOS 零日漏洞修补报告VMware ESXi 零日漏洞分析3. 技术文档ViewState 反序列化漏洞原理Active Directory 安全最佳实践LOTL 攻击检测指南七、技术深度解析1. ViewState 反序列化漏洞A. 漏洞原理ViewState 是 ASP.NET Web 表单中用于保持页面状态的技术。当应用程序使用不安全的反序列化配置时，攻击者可以构造恶意的 ViewState 数据，在服务器端反序列化过程中执行任意代码。B. 攻击流程攻击者分析目标 Sitecore 应用程序识别 ViewState 处理端点生成恶意序列化 payload发送包含恶意 ViewState 的请求服务器反序列化 payload 并执行恶意代码部署后门并建立持久化访问C. 防御措施启用 ViewState MAC（消息认证代码）使用强密钥加密 ViewState禁用不必要的 ViewState 功能实施输入验证和输出编码定期更新 .NET 框架和 Sitecore 版本2. Active Directory 攻击技术A. 凭证窃取攻击者使用多种工具窃取凭证：LSASS 内存转储分析Kerberos 票据窃取和重放证书私钥提取NTLM 哈希获取B. 权限提升Kerberoasting 攻击Golden Ticket 创建SID History 注入ACL 滥用C. 横向移动WMI 和 DCOM 远程命令执行PSExec 和 WMIExecSMB 和 WinRM 利用计划任务和服务创建3. 检测和响应A. 入侵指标异常的 ViewState 处理活动异常的进程执行模式大量的 AD 枚举查询异常的网络连接和数据传输B. 日志监控Web 服务器访问日志Windows 事件日志（事件 ID 4624、4625、4672、4648 等）PowerShell 脚本块日志网络流量日志C. 应急响应隔离受影响的系统收集和保存证据分析攻击范围和影响重置泄露的凭证修补漏洞并加强安全措施监控持续的异常活动参考资料China-linked hackers exploited Sitecore zero-day for initial accessCisco Talos Intelligence BlogMandiant CVE-2025-53690 Analysis
移动魔百盒 OTT 流媒体鉴权机制技术分析
移动魔百盒 OTT 流媒体鉴权机制技术分析一、概述1. 事件背景移动魔百盒是中国移动推出的 OTT（Over-The-Top）机顶盒设备，通过互联网协议传输视频内容，而非传统的 IPTV 专网传输。该设备将认证信息存储在本地，使得设备可以在任意网络环境下播放内容。2. 核心发现通过技术分析发现，魔百盒使用 HTTP 单播流传输视频内容，认证信息存储在设备本地。通过抓包分析可以获取播放地址，实现跨设备观看直播电视节目。二、系统架构分析1. 技术架构graph TB subgraph 魔百盒设备 A[认证模块] --> B[AuthInfo] C[APP客户端] --> D[频道列表] E[播放器] --> F[HTTP流] end subgraph 网络传输 F --> G[Wireshark抓包] G --> H[CSV导出] H --> I[Python脚本处理] end subgraph 第三方设备 I --> J[播放列表] J --> K[任意播放器] K --> L[视频服务器] end L --> F2. 传输协议分析A. 协议类型传输协议：HTTP 单播流编码格式：H.264/H.265 视频编码容器格式：TS（Transport Stream）或 FLVB. 流量特征每个频道独立的 HTTP 流包含鉴权参数的 URL实时流式传输，非下载三、鉴权机制1. 认证信息存储sequenceDiagram participant 设备 as 魔百盒设备 participant 认证服务器 as 移动认证服务器 participant CDN as 视频CDN 设备->>认证服务器: 请求 AuthInfo 认证服务器-->>设备: 返回鉴权令牌 设备->>CDN: HTTP 请求 (携带 AuthInfo) CDN->>认证服务器: 验证令牌 认证服务器-->>CDN: 验证通过 CDN-->>设备: 返回视频流2. 鉴权参数特征A. AuthInfo 结构每个节目独立的 AuthInfo包含设备标识、时间戳、签名等参数有效期未知（测试显示至少 48 小时）B. 安全机制设备绑定：AuthInfo 与特定设备关联时效性：包含过期时间参数签名验证：防止 URL 被篡改四、技术实现1. 抓包分析方法A. 工具准备# 安装 Wireshark sudo apt install wireshark # 启动抓包 sudo wiresharkB. 过滤规则# HTTP 流过滤 http.request.method == "GET" && http.request.uri contains ".m3u8" # 目标服务器过滤 ip.addr == [CDN IP地址]2. 数据提取流程graph LR A[Wireshark抓包] --> B[导出CSV] B --> C[Python脚本解析] C --> D[提取URL] D --> E[生成M3U播放列表] E --> F[导入播放器]3. Python 处理脚本示例import csv import re def extract_urls_from_csv(csv_file): """从 Wireshark 导出的 CSV 中提取播放 URL""" urls = [] with open(csv_file, 'r') as f: reader = csv.DictReader(f) for row in reader: url = row.get('_ws.col.Info') if '.m3u8' in url or '.flv' in url: urls.append(url) return urls def generate_m3u_playlist(urls, output_file): """生成 M3U 播放列表""" with open(output_file, 'w') as f: f.write('#EXTM3U\n') for idx, url in enumerate(urls, 1): f.write(f'#EXTINF:-1,Channel {idx:03d}\n') f.write(f'{url}\n') # 使用示例 urls = extract_urls_from_csv('capture.csv') generate_m3u_playlist(urls, 'playlist.m3u')五、优缺点分析1. 优点A. 网络独立性不依赖路由器转发或内网限制可在任意网络环境下使用支持移动网络播放B. 设备兼容性支持任意支持 HTTP 流的播放器可在手机、电脑、电视等设备观看不局限于专用硬件C. 内容质量单播流保证带宽充足画质和流畅度优于传统 IPTV2. 缺点A. 稳定性问题鉴权有效期不确定可能随时被服务商封禁依赖第三方 CDN 服务B. 技术限制需要物理访问魔百盒设备频道列表需要手动获取缺少电子节目单（EPG）信息C. 法律风险可能违反服务条款存在版权和法律风险仅供技术研究和学习使用六、技术总结1. 系统特点移动魔百盒采用 OTT 架构，将认证信息存储在设备本地，通过 HTTP 单播流传输视频内容。这种设计既保证了内容的安全性（通过鉴权机制），又提供了良好的用户体验（高质量流媒体）。2. 安全考虑AuthInfo 的有效期机制防止长期滥用设备绑定机制限制共享范围但本地存储仍存在被提取的风险3. 应用场景个人学习和研究理解 OTT 流媒体架构学习 HTTP 流媒体协议参考资料小鲸社长 on X: 移动魔百盒技术分析
Cloudflare Radar 2025 互联网发展回顾技术分析一、新闻概述1. 标题Cloudflare Radar 2025 年度回顾：生成式 AI 爆发、IPv6 采用率持续增长、超大规模 DDoS 攻击激增2. 发布时间2025 年3. 来源Cloudflare Radar 官方二、核心内容1. 事件摘要A. 主要内容Cloudflare 发布 2025 年度互联网回顾报告，通过其全球网络观测到的数据，展示了过去一年互联网的发展趋势和变化。B. 核心亮点生成式 AI 持续爆发式增长，Claude、Perplexity 和 Gemini 成为 ChatGPT 的主要竞争对手Google 仍稳居流量榜首，Instagram 和 YouTube 在 2025 年进入前十后量子加密技术使用率快速提升超大规模 DDoS 攻击规模增长约 10 倍RPKI 有效 IPv4 路由全球份额增长至 53.9%2. 关键信息A. 数据范围基于 Cloudflare 全球网络数据覆盖 2025 年全年互联网流量包含 1.1.1.1 公共 DNS 的聚合数据B. 涉及领域流量增长与互联网服务生成式 AI 发展协议采用（HTTP/3、IPv6、后量子加密）安全威胁与防护移动与桌面设备趋势3. 背景介绍A. Cloudflare RadarCloudflare Radar 是 Cloudflare 推出的互联网洞察平台，通过其全球网络数据提供互联网流量、安全、连接性等多维度分析。B. 相关上下文2025 年是生成式 AI 快速普及的一年，同时网络安全威胁持续演进，Cloudflare 作为全球领先的 CDN 和安全服务提供商，其数据具有行业代表性。三、详细报道1. 主要内容A. 互联网流量增长互联网流量持续增长，反映了人们对互联网的依赖程度不断加深。流量趋势线从 1 月中旬开始，排除了新年后工作和学校回归后互联网活动正常化的影响。B. 互联网服务排名变化生成式 AI 在 2025 年持续爆发式增长：Claude、Perplexity 和 Gemini 成为 ChatGPT 的主要竞争对手社交媒体方面，在 Facebook、Instagram 和 TikTok 三大巨头之后，Snapchat 的表现超过了 X元宇宙领域，Roblox 仍然保持领先地位整体而言，Google 仍然位居榜首，但 Instagram 和 YouTube 在 2025 年进入前十C. SpaceX Starlink 流量趋势SpaceX Starlink 继续为服务不足或未服务的地区提供卫星互联网连接。Cloudflare 分析了其自治系统（AS14593）在 2025 年期间的聚合请求流量。D. IPv4 流量分布可视化使用希尔伯特曲线对互联网 IPv4 地址空间进行可视化展示，展示从 2025 年 1 月 1 日到 12 月 2 日的聚合流量，IP 地址聚合在 /20 级别，每个单元格代表来自 4096 个 IPv4 地址的流量。E. 后量子加密Cloudflare Research 团队自 2017 年开始研究后量子密码学。2022 年 10 月，Cloudflare 在其网络上默认启用了后量子密钥协商，随着浏览器默认支持的启用，使用率快速增长。F. 已验证机器人流量趋势Cloudflare Radar 的机器人目录跟踪了十几个类别中的数百个已验证机器人，每个机器人都表现出独特的流量模式。2. 技术细节A. AI 爬虫与爬取比例爬取到引用比例指标首先根据 User-Agent 标头映射 HTML 页面的爬取请求，根据 Referer 标头映射 HTML 页面的引用请求，按平台分类。Y 轴使用对数刻度以便更好地可视化所有包含的系列。B. AI 机器人流量分类AI 机器人主要出于三个目的爬取内容：训练：爬取网站以收集用于进一步训练大语言模型（LLM）的内容搜索：检索内容以支持聊天平台搜索功能以及检索增强生成（RAG）用户操作：作为用户指示的任务或操作的一部分访问 Web 内容C. Workers AI 模型与任务流行度Cloudflare 与 AI 模型提供商密切合作，确保 Workers AI 在模型发布后尽快支持这些模型。2025 年初，Radar 开始提供对公开可用支持的模型流行度以及这些模型执行的任务类型的可见性。D. AI 机器人流量份额将 HTML 内容的请求流量分类为来自人类、AI 机器人或其他类型的机器人（非 AI）。显示 AI 机器人的流量份额在全年中的变化情况。graph TB subgraph AI_Bots["AI 机器人流量分类"] Training[训练型] Search[搜索型] UserAction[用户操作型] end subgraph Purpose["爬取目的"] Training --> LLM[大语言模型训练] Search --> RAG[检索增强生成] UserAction --> Task[用户任务执行] end subgraph Content["内容类型"] HTML[HTML页面] API[API接口] end AI_Bots --> Purpose Purpose --> ContentE. iOS 与 Android 分布Apple 的 iOS 和 Google 的 Android 仍然是使用最广泛的移动设备操作系统。但采用率在世界各地差异显著：Android 流量份额峰值达 97%，iOS 流量份额峰值达 70%。F. HTTP 版本分布HTTP/3 于 2024 年完成标准化，运行在 QUIC 传输协议之上。使用 QUIC 可以减轻丢包影响、更快建立连接并提供默认加密。G. API 客户端语言流行度Cloudflare 观察到的动态流量中超过一半与 API 相关，并且随时间持续增长。Go 语言位居榜首，20% 的自动化 API 请求由基于 Go 的客户端发出。H. 搜索引擎市场份额使用 Referer 标头识别向客户站点和应用程序发送流量的搜索引擎。搜索引擎市场份额数据作为整体聚合展示，也按设备类型和操作系统细分。I. 浏览器市场份额使用 User Agent 和 Client-Hints HTTP 标头中的信息识别发出内容请求的浏览器以及关联的操作系统。3. 数据与事实A. IPv6 采用率分析了 2025 年通过 IPv6 发出的双栈内容请求，计算全球聚合 IPv6 采用率。B. 互联网质量下载速度、上传速度、空闲延迟和负载延迟测量的分布。C. 移动与桌面设备2025 年，全球超过 70% 的人口使用智能手机，在许多国家，它们是互联网访问的主要手段。今年发现近 117 个国家/地区的流量大部分来自移动设备。D. 缓解流量显示 2025 年期间 Cloudflare 每日缓解的全球流量百分比，以及作为 DDoS 攻击或 WAF 托管规则缓解的流量百分比。E. 机器人流量来源查看 Cloudflare 在 2025 年观察到的机器人流量，发现 0% 来自前 10 个国家/地区，其中很大一部分来自与云平台提供商关联的网络。F. 最受攻击的垂直行业展示每周计算的针对每个类别的缓解流量占全球缓解流量的百分比。G. 路由安全2025 年期间，全球 RPKI 有效 IPv4 路由份额增长至 53.9%，比 2024 年增长 3.9 个百分点。H. 超大规模 DDoS 攻击规模进展将超大规模网络层攻击定义为在第 3/4 层运行且峰值超过每秒 1 太比特（1 Tbps）或每秒 10 亿包（1 Bpps）的攻击。2025 年期间，峰值攻击规模在两个指标上都显著增长，从字节角度增长约 10 倍，从包角度增长超过 7 倍。graph LR A[2025年初] -->|10倍增长| B[2025年末] A1[~0.1 Tbps] --> B1[~1 Tbps] A2[~0.14 Bpps] --> B2[~1 Bpps] style B fill:#ff9999 style B1 fill:#ff6666 style B2 fill:#ff6666四、影响分析1. 行业影响A. AI 竞争格局生成式 AI 市场从 ChatGPT 一家独大转向多强并立，Claude、Perplexity、Gemini 等竞争对手快速崛起，推动整个行业向更开放、更多元的方向发展。B. 技术趋势HTTP/3 和 QUIC 协议的快速普及改善了网络性能IPv6 采用率持续增长，为互联网可扩展性奠定基础后量子加密技术的提前布局为量子计算威胁做好准备C. 安全态势超大规模 DDoS 攻击的激增表明网络威胁日益严重，企业和组织需要更强大的防护能力。2. 用户影响A. 现有用户更快速的互联网连接体验（HTTP/3 普及）更安全的网络通信（后量子加密）更多样化的 AI 工具选择B. 潜在用户Starlink 等卫星互联网服务覆盖更多偏远地区移动设备成为主要上网方式C. 开发者Go 语言成为 API 客户端的首选需要关注 AI 机器人流量管理3. 技术趋势A. AI 与网络AI 机器人的流量快速增长，对网站和内容创作者既是机遇也是挑战。需要通过 robots.txt 等手段合理控制爬取行为。B. 协议演进HTTP/3 取代 HTTP/2 的趋势加速IPv6 采用率稳步提升后量子加密从实验走向实用C. 安全挑战DDoS 攻击规模呈指数级增长邮件安全威胁持续演进路由安全（RPKI）逐步普及五、各方反应1. Cloudflare 官方观点Cloudflare 强调后量子密码学研究的重要性，并已在网络上默认启用后量子密钥协商。同时持续跟踪 AI 机器人流量，为网站运营者提供洞察。2. 业内评价A. 专家观点生成式 AI 的快速发展正在重塑互联网流量格局，传统搜索引擎面临来自 AI 聊天平台的竞争压力。B. 社区反馈AI 机器人的爬取行为引发争议，部分内容创作者担忧未经授权的内容被用于训练 AI 模型。3. 用户反馈A. 正面评价HTTP/3 带来的性能提升获得认可Starlink 为偏远地区提供可靠的互联网连接B. 关注点AI 机器人流量可能影响网站性能和成本超大规模 DDoS 攻击的防护成本上升六、相关链接1. 官方资源Cloudflare Radar 2025 Year in ReviewCloudflare Radar OverviewPopular Internet Services 博客文章2. 相关报告季度搜索引擎推荐报告季度浏览器市场份额报告Phishing Threats Report3. 技术文档Cloudflare Radar 数据探索工具Workers AI 模型目录机器人目录参考资料Cloudflare Radar 2025 Year in Review