Release Notes

更新日志

OpenReach 从 v1.0.1 开始正式维护版本记录。这里按当前工程 CHANGELOG.md 展示用户真正需要关注的能力变化、安全边界和兼容信息。

v0.1.4Latest

Safe Curl:GitHub 源码 / 公开 API 读取与自请求防护

v0.1.4 在 Search、Image Search、Read 之外新增第四个核心能力 Safe Curl。Agent 可以读取 GitHub REST API、raw 源码以及公网 JSON/XML/YAML/text 数据,但该能力不是 shell 透传:只允许 GET/HEAD,并强制阻断私网、敏感认证头、二进制下载和对 OpenReach 自身的回打。

4公开核心 API
GET/HEAD只读目标方法
Self Block禁止请求自身
20/20Skill Tests
Curl

GitHub 源码级读取

支持从搜索结果继续访问 GitHub REST API、raw.githubusercontent.com 和其他公开机器可读文本源。

SSRF

公网目标强校验

仅允许 HTTP(S) 80/443;localhost、RFC1918、链路本地、保留地址、Metadata 与每一跳 Redirect 都重新校验。

Self Guard

禁止回打 OpenReach

综合 Host、serverName、localAddr、本机所有网卡地址与可配置公网别名,阻止 Curl 被拿来扫描或爆破 OpenReach 自身。

Read-only

拒绝写入和秘密透传

POST/PUT/PATCH/DELETE、Authorization、Cookie、Host、X-Forwarded-*、常见 Token/API-Key 头和二进制响应均拒绝。

v0.1.4 新增与安全加固

  • 新增接口:POST /api/web/curl,请求体指定目标 url/method/headers/maxChars,返回目标 HTTP 状态、最终 URL、文本 body、跳转次数与安全响应头。
  • GitHub 场景:推荐 Search 定位仓库 → Safe Curl 读取 api.github.com 公开元数据/目录 → Safe Curl 读取 raw 源码;私有仓库和认证 API 不走该能力。
  • 自身防爆破:当前请求 Host/serverName/localName/localAddr、本机网卡 IP 自动加入 Self Target Guard;额外公网域名或 LB 别名可通过 OPENREACH_CURL_BLOCKED_HOSTS 配置,支持通配域名。
  • 响应边界:默认最多读取 2 MiB / 100000 字符,仅接受文本类 Content-Type;图片、压缩包、可执行文件等二进制内容拒绝。
  • 测试:新增 Java CurlTargetGuardTest / CurlServiceTest 覆盖自请求、Redirect 二次校验、敏感头、写方法、二进制与截断;Skill Python 测试共 20 项通过。
v0.1.3Previous

内部调用监控、SQLite 持久化与运维闭环

v0.1.3 在不改变 Search、Image Search、Read 三个公开 API 的前提下,新增受保护的内部调用监控能力,支持真实请求采集、日期总览、失败下钻、独立 IP、请求详情和失败诊断日志导出;监控数据默认使用 SQLite + WAL 持久化,并为未来 MySQL / PostgreSQL 迁移保留存储 SPI。

3公开核心 API
SQLite默认持久化
V2Monitor Schema
0新增公开监控入口
Monitor

真实请求调用监控

支持今日、近 7 日和自定义日期范围,总览调用量、成功/失败、独立 IP、耗时、趋势与接口分布,并可下钻单次调用详情。

Persistence

SQLite + WAL 持久化

请求元数据与 Payload 分表,异步 Single Writer 写入;数据目录独立挂载,容器销毁重建后仍可复用历史数据。

Diagnostics

失败请求后端导出

失败筛选可复用当前日期、接口与关键词条件,由服务端流式导出全部匹配记录的 UTF-8 诊断日志,不受列表分页限制。

Upgrade

Schema V2 与可迁移存储层

Schema Version 与应用版本解耦,升级前自动快照;存储访问统一通过 SPI,后续可扩展 MySQL / PostgreSQL。

v0.1.3 新增与修复

  • 监控总览:支持调用次数、成功/失败、独立 IP、平均耗时、P95、趋势和接口分布。
  • 请求明细:记录请求时间、客户端 IP、接口、输入/输出、HTTP 状态、耗时、Trace ID、Provider 与错误信息。
  • 请求时间筛选:请求记录支持独立的开始/结束时间筛选(精确到分钟);未设置时继承顶部统计周期,设置后仅影响明细列表与失败日志导出,后端新增兼容式 requestStartTimeMs/requestEndTimeMs 可选参数。
  • 失败诊断:点击失败指标自动筛选失败记录;服务端按当前筛选条件流式生成 UTF-8 详细日志文件。
  • 中文编码:修复 JSON 响应在监控采集时被 Servlet 默认 ISO-8859-1 错误解码的问题,并通过 V2 Migration 修复可安全识别的历史乱码 Payload。
  • 容器升级:/app/data 作为稳定持久化目录,容器可销毁重建;Compose init 容器负责处理 Host Bind 的运行用户权限。
  • 登录配置:内部监控登录凭据支持通过 Docker 环境变量覆盖,首次部署与升级重建均可重新指定。
  • Read 失败治理:基于真实失败日志区分调用方误用与公网目标站拒绝;Skill/AgentHub 插件在调用前拦截私网附件、非 80/443 与明显图片二进制 URL。Read 对 408/425/500/502/503/504/520–524 做配置范围内有界重试,对 403/412 等明确拒绝不机械重试。
  • Read 错误语义:新增 failureType/upstreamStatus/retryable 结构化字段,同时保留 502 + UPSTREAM_ERROR 兼容;请求兼容性头不携带 Cookie/Authorization,不绕过登录、验证码或 WAF。
  • 兼容性:三个公开 Web API 路径与主要协议保持不变,监控存储异常不会阻断核心 API。
v0.1.2Previous

从国内优先链升级为 CN / GLOBAL Web Access Router

在 v1.0.1 免费国内链基础上,v0.1.2 增加地区路由、真实时间范围过滤、图片原图可下载门禁,并进一步收敛公网攻击面。默认 Provider Chain 继续坚持零 API Key、零账号依赖、零商业 Search 调用费。

3核心 HTTP API
2CN / GLOBAL Route
150声明测试 Case
0默认 Search API Key
Routing

CN / GLOBAL 双路由

region 不再只是透传 Hint。显式非 CN 地区进入 GLOBAL 链;auto 默认保持 CN 兼容。

Search

新增 timeRange

支持 any/day/week/month/year 及常见别名;Auto 会跳过不支持真实时间过滤的 Provider。

Image

只返回可下载原图

对候选图片执行 SSRF、Redirect、2xx、Content 与 Magic Bytes 验证,过滤热链失效页和伪图片。

Observability

Trace + 持久化日志

每次 API 调用生成 Trace ID,Search / Image / Read 上游过程可按同一 ID 串联,并支持 Docker 宿主机日志目录持久化。

Added

  • 统一路由层:新增 SearchRouteResolverProviderChainResolver 与地区 Locale 支持,Service 不再硬编码国内/海外链。
  • GLOBAL Web Search:默认 brave → duckduckgo → bing;Brave 作为海外第一路,DuckDuckGo 强化 no-JS HTML 模式。
  • GLOBAL Image Search:默认 bing → openverse → wikimedia;Wikimedia 可输出原图、尺寸、格式与 License 信息。
  • Search timeRange:新增 timeRange 参数;百度免费 Web 支持 day/week/month/year,Bing 免费 Web 已验证 day/week/month,Brave / DuckDuckGo 支持完整范围;CN 时间链为 baidu → bing → duckduckgo → brave,GLOBAL 为 bing → brave → duckduckgo → baidu
  • 图片下载质量门禁:候选结果必须通过公网 URL 与真实图片字节验证才能进入最终响应。
  • Attack Surface Filter:静态官网之外,仅开放三个精确 JSON POST API,并统一限制请求体、Content-Type 与浏览器安全 Header。
  • 请求 Trace 与上游诊断:新增 X-OpenReach-Trace-Idopenreach-api.logopenreach-upstream.log,记录 Provider skip/start/success/fail、HTTP 状态码和耗时。
  • Docker 日志持久化:容器内固定 /app/logs,支持映射宿主机目录;Logback 按日期 + 大小归档,Docker stdout 同时限制滚动大小。

Changed

  • Skill 初始化检查收敛为只读 check:配置不存在时 0 次网络请求;配置存在时最多 1 次无副作用 API 探测。
  • Skill / README / 官网统一使用 <OPENREACH_BASE_URL> 占位符,不再提供容易被误判为默认值的示例私网 IP。
  • AgentHub HTTP Plugin 不再默认 localhost:8080,导入时必须显式配置 Tool Runner 可访问的 BASE_URL;新增 caller-side DNS/TCP/API 连接诊断脚本,并兼容 time_range / max_chars snake_case 参数。
  • Search / Image Search 改为 Route-aware Provider Chain,同时保留 v1.0.1 provider-order 的 CN 兼容策略。
  • Bing Web / Images 可以按 Route 自动切换中国与全球 Host。
  • 官网 Theme 初始化脚本改为外部静态文件,以配合更严格 CSP。

Security

  • 公网攻击面 Allowlist:静态官网之外,仅允许三个精确 JSON POST API;其余未知 Controller、Actuator、Debug、危险 Method 与路径穿越统一提前拒绝。
  • 移除公开 /api/web/health,Skill 人工诊断改用只读 GET /
  • 禁用 Multipart / 文件上传,未知 Controller、Actuator、Debug、危险 Method 和路径穿越均在统一 Filter 提前拒绝。
  • API Body 默认限制为 64 KiB;Search / Image Provider 上游 Body 也增加独立硬上限。
  • Read 与图片探测只允许公网 HTTP/HTTPS 80/443,Redirect 每跳重新进行安全校验。
  • 服务端未知异常不再直接泄露原始内部异常消息。

Fixed

  • 修复海外请求传入 region 后 Auto Chain 仍优先国内 Provider 的架构问题。
  • 修复 DuckDuckGo 简单 GET 模式脆弱、Bing 固定中国 Host、图片 Locale Header 重复等问题。
  • 修复图片结果可能返回失效热链、HTML 防盗链页面或伪图片 URL 的质量问题。
  • 统一处理 Provider null/空结果,让 Auto Chain 可以继续 fallback。
  • 修复早期 timeRange 仅配置 DuckDuckGo/Brave 时的运行时退化:自动恢复 Baidu/Bing 能力,并对 429 / Bot Challenge / 403 增加短期 Provider cooldown。
  • Read 对瞬时连接超时增加一次有界 GET 重试,并将 connect/request timeout 拆分配置;HTTP 4xx/5xx 不盲目重试。
  • 修复官网复制按钮在 HTTP / 非安全上下文下失效的问题,增加 Clipboard API → legacy copy 自动降级与明确的成功/失败反馈。

Compatibility & Limitations

兼容:旧部署如果只配置 provider-order,v0.1.2 的 CN Route 仍会继承旧顺序;GLOBAL 使用独立配置,不会污染原国内链。
  • Brave / DuckDuckGo / Bing 免费 Web SERP 仍属于 best-effort,可能受 DOM 改版、403/429、CAPTCHA 与网络出口影响。
  • 当前不提供 Search Pagination、商业级 Geo、账号池、代理池或 CAPTCHA 绕过。
  • Read 主链仍保持本地 SafeHttpFetcher + Jsoup,不引入远端 Key / 账号依赖。
v1.0.1Maintenance Baseline

首个正式维护基线

确立 Search、Image Search、Read 三个 Agent Web 原语,引入免费 Provider 自动降级、Provider SPI、Read SSRF 防护、内置官网、Agent Skill、AgentHub HTTP Plugin 与 Docker 一键部署。

历史说明:v1.0.1 曾提供 GET /api/web/health;该接口已在 v0.1.2 的公网攻击面收敛中移除,当前部署不要再依赖它。

Web Search

Bing → 百度 → 搜狗 → 360 → DuckDuckGo,支持 Auto fallback、URL 去重和显式 Provider 诊断。

Image Search

Bing Images → 百度图片 → 搜狗图片 → Openverse,统一图片与 License 元数据模型。

Web Read

Jsoup Reader + SafeHttpFetcher + UrlSafetyGuard,支持正文、元数据、Links、跳转和大小限制。

需要完整逐项记录?仓库根目录 CHANGELOG.md 仍是版本事实源,本页面用于官网可读展示。
查看完整 CHANGELOG ↗