← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

空运提单追踪(AWB Tracker)

输入空运提单号(AWB/MAWB),用真实浏览器抓取航司官网追踪页并将结果解析为结构化事件链,与上一次查询结果做 diff,只汇报新增动态。适用于货代、跨境物流、外贸跟单场景的每日在途状态查询、清关进度跟踪与到港预报。当用户提到运单号、AWB、提单号、货物到哪了、清关进度、到港了吗等诉求时使用。

person作者: user_d9b3f1fdhubcommunity

空运提单追踪(AWB Tracker)

这个技能解决什么

你手里只有一张 AWB(空运提单)截图或一串号码,想知道货到哪了。

为什么需要它,而不是随手一搜: 主流航司的官网追踪页是 Salesforce / LWC 前端 + 反爬校验,纯 curl / requests / 普通网页抓取工具拿不到数据(已实测:卡塔尔航空货运旧版 /trackshipment?docNumber= 接口已下线返回 404;第三方聚合站 track-trace 对 QR 运单不出数据)。唯一稳定路径是真实浏览器驱动官方页面——这正是本技能做的事。

核心能力

| 能力 | 说明 | |---|---| | 官方轨迹抓取 | 打开航司官网追踪页,填表提交,取全页文本 | | 结构化解析 | 把乱序文本解析成按时间排列的事件链(节点 / 日期 / 时间 / 件重 / 航段) | | 增量 diff | 与上次结果比对,只说新增动态;无变化就明说「无变化」,不重复昨天的信息 | | 归档留证 | 每次运行的原始页面文本 + 全页截图落盘,出问题可回溯 |

快速开始

python3 scripts/track_awb.py --awb 157-12345675

常用参数:

  • --awb 157-12345675 —— 临时查单个单号,不必先写配置
  • --json —— 输出 JSON,便于其他程序消费
  • --no-screenshot —— 跳过截图,提速

批量追踪:把运单写进 ~/.workbuddy/awb-tracker/shipments.json,然后不带参数运行,会逐个查询并给出汇总报告。

前置条件

  • agent-browser CLI(本技能已适配 v0.27.0+)
  • 首次运行需下载 Chromium(约 500MB),只做一次
npm install -g agent-browser && agent-browser install

已适配航司

| 航司 | IATA 前缀 | 追踪页 | |---|---|---| | 卡塔尔航空货运 Qatar Airways Cargo | 157 | qrcargo.com/s/track-your-shipment |

其余航司只需按下面三步改,通常 10 分钟内可加一家。

新增航司怎么改

  1. 改 TRACK_URL 为目标航司追踪页。
  2. 改 form_refs() 里的输入框 / 按钮匹配规则 —— 先跑一次 agent-browser snapshot -i 看实际元素。
  3. 改 parse_page() 里的文本切片规则。

⚠️ 换航司先跑一次 agent-browser open <url> + snapshot -i + eval document.body.innerText 看清真实结构,不要凭猜测写正则。

实测踩过的坑(省你几小时)

  1. AWB 校验位算法:11 位 = 3 位航司前缀 + 8 位序列号,最后一位 = 前 7 位 mod 7。 (1234567 % 7 = 5 → 157-12345675 合法)。查不到先验号码,别怀疑系统。
  2. 不要相信提单截图上手写的航班号 / 日期:08SEP 极易被看成 08OCT。一切以官网轨迹为准。
  3. LWC 的 shadow DOM 极深(实测 68 层),querySelectorAll('input') 取不到元素,只有 document.body.innerText 能穿透。
  4. 每次新会话航司页面会弹 cookie 横幅,必须先点同意,否则后续操作全失败。
  5. agent-browser screenshot 的语法是 screenshot [selector] [path],用 -o 会被当成选择器并报 "Element not found";全页截图用 screenshot --full "<path>"。
  6. agent-browser eval 返回的是 JSON 字符串字面量(带引号、\n 转义),必须 json.loads 还原后才能解析。

边界说明(很重要,别误报)

航司追踪到 「Notified consignee / Received at Destination」就结束了。之后的报关、查验、放行、提货属于海关与地面代理环节,航司页面不会更新——不要把「没新动态」误报成「货卡住了」。

国内落地清关查不到时,正确做法是找目的港货代 / 报关行用提单号查,而不是继续刷航司页面。

输出约定

日报必须包含:航线、件重、官方状态原文、目的港到达时间、最新节点、航段,以及相比上次的新增动态。

无变化就明确说「无变化」。不要为了凑内容把昨天的信息改写一遍。