type
Post
status
Published
date
Sep 7, 2026
slug
flight-monitor
summary
日期窗扫价 + 多 OTA 核验,筛出真实可买的往返低价,已公开部署。
tags
项目
技术
Python
机票监控
Playwright
文字
category
项目作品
icon
password
ext
{}
✈️ 机票日期窗扫价 + 多 OTA 核验,从一组「差不多都行」的日期里筛出真实可买的往返低价。已公开部署在 flights.krisnote.online。
项目简介
Flight Monitor(Gatefare)是一个机票价格检索与监控工具。买机票时出发日期往往可以前后浮动,停留天数也是个变量,航司每天放价还不同——手动在携程、去哪儿、飞猪、Google Flights 之间逐个日期组合核对往返价,几个小时下来常常一无所获。
它把这件事自动化:给定出发日期窗和停留天数范围,自动扫描所有组合,按真实售价排序输出;需要持续盯价时,可开定时任务,触及心理价或出现新低时通过飞书 Webhook 推送提醒。覆盖国内航线与中国出境航线。
设计要点
两步查价管线
第一步用 Travelpayouts 免费缓存价,按「出发码 × 到达码 × 日期组合」扫窗初筛——快且便宜,但缓存价有滞后,只当候选;第二步对候选组合用 Playwright 启动浏览器,到 OTA 站点核验真实售价,核验顺序固定为携程 → 去哪儿 → 飞猪 → Google Flights,任一家解析到真价即写入,失败则按序回落下一家。
双价透明
缓存价和核验价同时保留,但用途严格分开:缓存价只用于初筛与对照,核验价用于排序、心理价比较和告警。若 API 缓存是 1000、OTA 核验是 1010,「最低价」展示的永远是 1010。
Fail-closed
核验池全部失败、Playwright 未安装、数据源不可用等情况一律返回 failed,禁止用 mock 价或纯缓存价冒充成功——宁可承认查不到,不给出一个看起来便宜的假价。
携程 WhaleGuard 与多源回落
携程会对自动化浏览器返回 WhaleGuard 验证页,命中时本轮跳过携程,候选自动落到去哪儿、飞猪,最后是 Google Flights(对自动化浏览器友好,虽不卖票,但作为价格核验源足够可信)。产品不承诺任何一家 OTA 100% 不被拦,多源是为了把「至少一家出真价」的概率拉高。
地点能力
出发地/目的地支持城市、机场三字码或国家搜索。选「国家 · 不限机场」会自动展开该国主要机场做多 OD 组合扫价(如柬埔寨 → PNH/REP/KOS);中国大陆内置 220+ 可飞城市目录,中文名和英文别名都能搜。
使用流程
- 博客首页「常用工具 → 机票查询」直达,或访问 flights.krisnote.online
- 新建扫价任务:选出发地/目的地、日期窗、停留天数范围,或用「一键示例:港阪扫价」试水
- 详情页看实时进度与核验价榜单,点击链接可跳转 OTA 下单核对
- 要持续盯价就开启定时,触及心理价时飞书推送提醒
扫价较慢(缓存扫窗 + 多组 OTA 核验),但界面会持续输出当前阶段和已核验结果,不是黑盒转圈。
技术栈
层 | 技术 |
后端 | FastAPI + SQLite |
前端 | React + Vite |
浏览器自动化 | Playwright Chromium |
数据源 | Travelpayouts(免费 token) |
部署 | 阿里云 ECS + Nginx + Docker |
查价管线全程免费,无付费航班 API,自部署只需要一个 Travelpayouts 免费 token。
项目地址
在线使用:flights.krisnote.online(免登录)。代码开源在 github.com/krisaruz/flight-monitor,仓库内附 PRD、CHANGELOG、AGENTS.md:PRD 记录产品需求与验收标准,CHANGELOG 记录每次功能改动,AGENTS.md 是 AI 协作规范。
