<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>Halo - 强大易用的开源建站工具 | 应用市场 | API 图库 | 版本发布</title><link>https://www.halo.run</link><atom:link href="https://www.halo.run/feed/app-store/apps/app-b7q4synh/releases.xml" rel="self" type="application/rss+xml"/><description>Halo - 强大易用的开源建站工具 | 应用市场 | API 图库 | 版本发布</description><generator>Halo v2.27.0</generator><language>zh-cn</language><image><url>https://www.halo.run/upload/logo.png</url><title>Halo - 强大易用的开源建站工具 | 应用市场 | API 图库 | 版本发布</title><link>https://www.halo.run</link></image><lastBuildDate>Sat, 14 Nov 2026 20:17:58 GMT</lastBuildDate><follow_challenge><feedId>69597013489248256</feedId><userId>41706424548048896</userId></follow_challenge><item><title><![CDATA[API 图库 1.4.0 发布]]></title><link>https://www.halo.run/store/apps/app-b7q4synh/releases/app-release-1mx3lnne</link><description><![CDATA[<img src="https://www.halo.run/plugins/feed/assets/telemetry.gif?title=API%20%E5%9B%BE%E5%BA%93%201.4.0%20%E5%8F%91%E5%B8%83&amp;url=/store/apps/app-b7q4synh/releases/app-release-1mx3lnne" width="1" height="1" alt="" style="opacity:0;">
<h1 id="%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97" tabindex="-1">更新日志</h1>
<h2 id="1.4.0%EF%BC%882026-10-26%EF%BC%89" tabindex="-1">1.4.0（2026-10-26）</h2>
<p>本版本为安全整改版本，建议所有使用者升级。</p>
<h3 id="%E5%AE%89%E5%85%A8" tabindex="-1">安全</h3>
<ul>
 <li><strong>收紧匿名访问范围</strong>
  <br>
  新增独立的 <code>console.gallery.halo.run</code> 接口组承载管理类接口，与该组相关的
  <br>
  <code>/sources</code>、<code>/diagnose</code>、<code>/sync</code>、<code>/push-to-photos</code>、<code>/photos</code> <strong>不再向访客放行</strong>。
  <br>
  对外公开组 <code>api.gallery.halo.run</code> 现在只剩 <code>/items</code> 与 <code>/random</code> 两个只读接口。
  <br>
  此前匿名访客可直接调用 <code>/diagnose</code> 触发服务端对外请求并读到图源地址与错误信息。</li>
 <li><strong>诊断结果脱敏</strong>
  <br>
  <code>/diagnose</code> 不再返回响应正文（<code>bodyHead</code>）与调用堆栈（<code>stackTop</code>），
  <br>
  改为返回 <code>bodyLength</code> 与 <code>looksLikeJson</code> 这类结论性字段。</li>
 <li><strong>新增图源地址 SSRF 防护</strong>
  <br>
  所有对外请求发出前统一校验：仅允许 <code>http</code>/<code>https</code> 协议，
  <br>
  并拒绝回环地址、私有网段（10/8、172.16/12、192.168/16）、链路本地与云厂商元数据地址
  <br>
  （169.254.0.0/16）、IPv6 唯一本地地址（fc00::/7）、组播与保留网段。
  <br>
  命中时该数据源会被标记为不可用，同步时记录明确的拒绝原因。</li>
</ul>
<h3 id="%E4%BF%AE%E5%A4%8D" tabindex="-1">修复</h3>
<ul>
 <li><strong>补齐前台展示页制品</strong>
  <br>
  此前 <code>gallery.html</code> 放在源码根目录，<code>static/</code> 与 <code>ui/</code> 均为空目录，打成 JAR 后不存在。
  <br>
  现已移入 <code>src/main/resources/static/</code>，并补充 <code>extensions/reverseProxy.yaml</code>
  <br>
  （Halo 不会自动暴露插件的 static 目录，必须声明 ReverseProxy 才能访问）。
  <br>
  实际访问地址：<code>/plugins/api-gallery/assets/static/gallery.html</code>。</li>
 <li>展示页不再依赖需要授权的 <code>/sources</code>，来源筛选改为从已加载数据推导，访客可直接访问。</li>
</ul>
<h3 id="%E5%8F%98%E6%9B%B4" tabindex="-1">变更</h3>
<ul>
 <li>开源信息统一：补充 MIT <code>LICENSE</code> 文件并打入 JAR，<code>plugin.yaml</code> 增加 <code>repo</code> 与 <code>issues</code> 字段。</li>
</ul>
<h3 id="%E6%B3%A8%E6%84%8F" tabindex="-1">注意</h3>
<ul>
 <li><code>/sources</code>、<code>/diagnose</code> 等接口路径已迁移到新的管理组，若你在脚本中调用过这些地址，
  <br>
  需把 <code>api.gallery.halo.run</code> 换成 <code>console.gallery.halo.run</code>。公开接口不受影响。</li>
 <li>使用 PAT 调用时需确认令牌授权范围包含对应接口组，否则会返回 403。</li>
</ul>
<hr>
<h2 id="1.3.1%EF%BC%882026-10-25%EF%BC%89" tabindex="-1">1.3.1（2026-10-25）</h2>
<h3 id="%E6%96%B0%E5%A2%9E" tabindex="-1">新增</h3>
<ul>
 <li>后台设置页新增「<strong>关于</strong>」分组，展示作者博客与作者信息（作者博客 <a href="https://blog.kbmp.club">https://blog.kbmp.club</a>）。</li>
 <li>补充插件简介描述。</li>
</ul>
<h3 id="%E8%AF%B4%E6%98%8E" tabindex="-1">说明</h3>
<ul>
 <li>本版本仅涉及后台展示信息与文案，功能与 1.3.0 一致。</li>
 <li>升级会重启插件，内存缓存清空后自动重新累积，属正常现象。</li>
</ul>
<hr>
<h2 id="1.3.0%EF%BC%882026-10-25%EF%BC%89" tabindex="-1">1.3.0（2026-10-25）</h2>
<h3 id="%E4%BF%AE%E5%A4%8D-1" tabindex="-1">修复</h3>
<ul>
 <li><strong>图库攒满后就不再更新</strong>（核心问题）
  <br>
  旧版本同步时把旧缓存排在前面、新采样的图排在后面，达到「最多累积」上限后被截断丢弃的
  <br>
  永远是<strong>新图</strong>，留下的全是老图。结果就是：图池一旦攒满，即使定时同步照常运行，
  <br>
  图库内容也永久静止。
  <br>
  现改为<strong>滚动更新</strong>：新采样的图排在最前面，达到上限时淘汰最老的，
  <br>
  每一轮同步都会换进一批新图。</li>
</ul>
<h3 id="%E6%96%B0%E5%A2%9E-1" tabindex="-1">新增</h3>
<ul>
 <li>被滚动淘汰的旧图会<strong>同步从「图库管理」插件中删除</strong>，
  <br>
  避免 <code>/console/photos</code> 里的记录只增不减（此前会随每轮采样持续膨胀）。</li>
</ul>
<h3 id="%E5%BB%BA%E8%AE%AE%E9%85%8D%E7%BD%AE" tabindex="-1">建议配置</h3>
<p>想让图片更新更明显，可把「最多累积」调小。每轮同步会换进「采样次数」张新图：</p>
<table>
 <thead>
  <tr>
   <th>最多累积</th>
   <th>采样次数</th>
   <th>效果</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>60</td>
   <td>30</td>
   <td>每轮替换约一半，变化明显</td>
  </tr>
  <tr>
   <td>200</td>
   <td>30</td>
   <td>每轮替换约 15%，变化较慢</td>
  </tr>
 </tbody>
</table>
<h3 id="%E5%8D%87%E7%BA%A7%E6%B3%A8%E6%84%8F" tabindex="-1">升级注意</h3>
<ul>
 <li>升级会重启插件，<strong>内存缓存会被清空</strong>，图库会从 0 重新累积，几轮同步后回到设定上限，
  <br>
  期间不会报错，属正常现象。</li>
</ul>
<hr>
<h2 id="1.2.0%EF%BC%882026-10-25%EF%BC%89" tabindex="-1">1.2.0（2026-10-25）</h2>
<h3 id="%E4%BF%AE%E5%A4%8D-2" tabindex="-1">修复</h3>
<ul>
 <li><strong>后台修改同步周期后不生效</strong>
  <br>
  旧版本只在插件启动时读一次周期，把 60 分钟改成 5 分钟后仍按 60 分钟跑。
  <br>
  现改为保存设置时立即按新周期重新排期，无需重启插件。</li>
</ul>
<h3 id="%E6%96%B0%E5%A2%9E-2" tabindex="-1">新增</h3>
<ul>
 <li>响应结构新增「<strong>随机单张 JSON</strong>」类型：适用于每次请求返回一张随机图的 JSON 接口
  <br>
  （如 <code>https://t.paiii.cn/api/random?format=json</code>）。</li>
 <li>同步状态对外可见：<code>/sources</code> 与 <code>/diagnose</code> 新增 <code>intervalMinutes</code>（当前实际生效周期）、
  <br>
  <code>nextSyncAt</code>（下次同步时间）、<code>secondsUntilNextSync</code>（距下次同步秒数）、<code>lastSync</code>、<code>errors</code>，
  <br>
  方便确认「自动同步到底排上了没」。</li>
</ul>
<hr>
<h2 id="1.1.0%EF%BC%882026-10-25%EF%BC%89" tabindex="-1">1.1.0（2026-10-25）</h2>
<h3 id="%E6%96%B0%E5%A2%9E-3" tabindex="-1">新增</h3>
<ul>
 <li>响应结构新增「<strong>302 跳转到随机图片</strong>」类型：适用于没有列表接口、
  <br>
  每次请求直接 302 跳转到一张随机图的图源（如 random-pictures 类站点）。
  <br>
  插件会重复采样若干次、收集每次的跳转地址并去重，攒成一个图集。</li>
 <li>随机类图源新增「采样次数」「最多累积」两项配置。</li>
 <li>随机类图源拉取失败时保留已攒下的图，不会清空。</li>
</ul>
<hr>
<h2 id="1.0.0%EF%BC%882026-10-25%EF%BC%89" tabindex="-1">1.0.0（2026-10-25）</h2>
<p>首个版本。</p>
<ul>
 <li>后台配置任意数量的图片 API 数据源，各自独立开关</li>
 <li>自动识别顶层数组 / <code>{items:[...]}</code> / 单个对象三种响应结构</li>
 <li>url、id、title、tags 字段名可单独指定，留空自动推断</li>
 <li>定时同步（默认 60 分钟，可调 5–1440 分钟），后台保存后即时触发</li>
 <li>自动为匿名用户放行只读接口，前台无需登录即可展示</li>
 <li>对接官方「图库管理」插件，把图片<strong>地址</strong>写成 <code>Photo</code> 记录，不占本地存储</li>
 <li>对外接口：<code>/items</code>、<code>/sources</code>、<code>/random</code>、<code>/sync</code>、<code>/push-to-photos</code>、<code>/photos</code></li>
 <li>附带自包含展示页 <code>frontend/gallery.html</code>（瀑布流 + 懒加载 + 灯箱 + 按源筛选）</li>
</ul>
<hr>
<p><a href="https://www.halo.run/store/apps/app-b7q4synh/releases/app-release-1mx3lnne">查看版本详情</a></p>]]></description><guid isPermaLink="false">store.halo.run/Release/app-release-1mx3lnne</guid><pubDate>Wed, 4 Nov 2026 15:18:23 GMT</pubDate></item></channel></rss>