誠品線上庫存查詢工具 — 技術報告 笔记

誠品線上庫存查詢工具 — 技術報告

本项目开发了一款轻量级命令行工具(CLI),用于监控博客来(Eslite Online)的商品库存状态。现有的博客来商品页面仅显示单个商品的库存,无法进行批量查询或热门商品的实时监控。核心技术挑战在于绕过前端防护机制并正确调用后端 API。该工具直接与博客来的商品 API 交互,替代了手动刷新网页的操作。遇到的一个主要问题是因 TLS 指纹检测而导致的 Cloudflare 403 Forbidden 错误。标准 Python 库生成的 TLS 指纹与真实浏览器不同,导致 Cloudflare 拦截请求。解决方案是使用 curl-cffi 库,并通过 impersonate="chrome120" 参数模拟 Chrome 浏览器的 TLS 和 HTTP/2 指纹。博客来的 API 要求请求中包含动态时间戳参数(格式为 YYYYMMDDHHMMSS),用于请求验证或缓存失效;该工具为每次 API 调用实时生成此时间戳。为简化用户输入,工具利用正则表达式从原始 GUID 或完整商品 URL 中提取 20 位 GUID。新增 --watch N 参数以支持持续监控,每 N 秒查询一次库存并刷新终端显示。库存和购买状态采用颜色编码,便于快速视觉扫描。工具支持同时查询多个商品,单个商品的查询失败会被隔离,不会中断整个批次。为确保在默认编码可能非 UTF-8 的 Windows 终端上的兼容性,脚本主动重新配置标准输出和标准错误流以使用 UTF-8 编码。本项目遵循 PEP 723 规范,允许用户通过 uv run 直接执行脚本,无需预先安装依赖项。最关键且最不易察觉的技术决策是克服 TLS 指纹问题,这需要借助专用库而非仅仅伪造 HTTP 头。