Track.TW自動化追蹤郵政包裹:API實戰與工作流優化指南

用 Track.TW 自動追蹤郵政包裹:一個自動化工作流實戰
問題:手動查物流太麻煩
給朋友寄了份禮物,每隔幾小時就得打開郵政官網,手動輸入單號查一次物流?或者同時在等好幾個包裹,得在不同網頁間來回切換,生怕錯過任何更新?
這種重復勞動不僅耗時,還容易漏掉關鍵信息。對開發者或技術愛好者來說,手動查詢簡直是效率的“黑洞”。有沒有辦法讓物流狀態自動“找上門來”?
方案:Track.TW + 自動化腳本
Track.TW 是一個專注于臺灣地區物流追蹤的平臺,支持中華郵政(郵局)包裹的實時查詢。關鍵的是,它提供了 API 接口,這意味著你可以用代碼把查詢自動化,然后通過 Email、Telegram、Discord、Slack 等渠道接收推送。
簡單來說,寫一個 Python 腳本,定時調用 Track.TW 的 API 檢查包裹狀態,一旦狀態有更新(比如“已出貨”、“運送中”、“已送達”),就立刻通過你指定的消息渠道通知你。整個過程無需人工干預。
步驟:從零搭建自動化追蹤
第一步:獲取 Track.TW API 密鑰
- 訪問 Track.TW 官網 并注冊一個賬戶。
- 登錄后,在用戶后臺找到“API”或“開發者”相關頁面。
- 申請一個 API 密鑰(API Key)。這個密鑰是調用服務的憑證,務必保管好。
為什么需要 API 密鑰?
就像進小區需要門禁卡一樣,API 密鑰是 Track.TW 識別你身份、允許你調用服務的唯一憑證。沒有它,你的腳本無法與平臺通信。
第二步:安裝 Python 依賴庫
打開你的終端(Windows 的 CMD/PowerShell,macOS/Linux 的 Terminal),運行以下命令:
pip install requests schedulerequests:用于向 Track.TW 的 API 發送網絡請求,獲取物流數據。schedule:一個輕量級的任務調度庫,用于定時執行我們的查詢腳本。
為什么用這兩個庫?requests 是 Python 里最常用的 HTTP 庫,能簡化 API 調用過程。schedule 則讓設置“每 30 分鐘檢查一次”這樣的定時任務變得非常簡單,無需操作系統的復雜配置。
第三步:編寫核心追蹤腳本
創建一個 Python 文件(例如 tracker.py),寫入以下代碼:
import requests
import schedule
import time
from datetime import datetime
# 配置區域
API_KEY = "你的Track.TW API密鑰"
TRACKING_NUMBER = "你的郵政包裹單號" # 例如:RA123456789TW
CHECK_INTERVAL_MINUTES = 30 # 檢查間隔(分鐘)
# Telegram Bot配置(示例)
TELEGRAM_BOT_TOKEN = "你的Telegram Bot Token"
TELEGRAM_CHAT_ID = "你的Telegram Chat ID"
def get_tracking_status():
"""調用Track.TW API獲取最新物流狀態"""
url = f"https://api.track.tw/v1/track/{TRACKING_NUMBER}"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json"
}
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
# 解析關鍵信息:最新狀態、時間、地點
latest_status = data.get('status', '未知狀態')
last_update = data.get('last_update', '未知時間')
location = data.get('location', '未知地點')
return {
'status': latest_status,
'time': last_update,
'location': location,
'raw': data # 保留原始數據備用
}
else:
print(f"API請求失敗,狀態碼:{response.status_code}")
return None
except Exception as e:
print(f"發生錯誤:{e}")
return None
def send_telegram_notification(message):
"""通過Telegram Bot發送通知"""
telegram_url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {
'chat_id': TELEGRAM_CHAT_ID,
'text': message,
'parse_mode': 'Markdown'
}
try:
requests.post(telegram_url, json=payload)
print("Telegram通知已發送")
except Exception as e:
print(f"發送Telegram通知失敗:{e}")

def check_and_notify():
"""主檢查邏輯:獲取狀態,判斷是否有更新,發送通知"""
print(f"[{datetime.now()}] 開始檢查包裹 {TRACKING_NUMBER} 狀態...")
current_status = get_tracking_status()
if current_status is None:
return
# 這里可以添加更復雜的邏輯,比如與上次狀態對比
# 為簡化示例,我們每次檢查都發送通知(實際應用中應避免騷擾)
message = f"?? *包裹狀態更新*\n\n"
message += f"*單號:* `{TRACKING_NUMBER}`\n"
message += f"*狀態:* {current_status['status']}\n"
message += f"*時間:* {current_status['time']}\n"
message += f"*地點:* {current_status['location']}\n\n"
message += f"查詢時間: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
# 發送通知(這里以Telegram為例,你可以替換為Email、Discord等邏輯)
send_telegram_notification(message)
print(f"當前狀態:{current_status['status']}")
# 設置定時任務
schedule.every(CHECK_INTERVAL_MINUTES).minutes.do(check_and_notify)
print(f"包裹追蹤腳本已啟動!")
print(f"追蹤單號:{TRACKING_NUMBER}")
print(f"檢查間隔:每 {CHECK_INTERVAL_MINUTES} 分鐘")
print(f"通知方式:Telegram")
print("按 Ctrl+C 停止腳本")
# 啟動時立即執行一次
check_and_notify()
# 保持腳本運行,執行定時任務
while True:
schedule.run_pending()
time.sleep(1)代碼關鍵點解釋:
get_tracking_status()函數:負責與 Track.TW API 通信,獲取包裹的 JSON 格式數據,并解析出我們關心的狀態、時間、地點。send_telegram_notification()函數:將格式化后的消息通過 Telegram Bot API 發送出去。你需要提前創建一個 Telegram Bot 并獲取 Token 和 Chat ID。check_and_notify()函數:整合了查詢和通知的邏輯。實際項目中,你可以在其中加入狀態對比邏輯,只在狀態真正發生變化時才發送通知,避免重復打擾。schedule庫:輕松實現了“每 30 分鐘執行一次”的定時需求。
第四步:運行與驗證
- 將代碼中的
API_KEY、TRACKING_NUMBER、TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID替換為你自己的真實值。 在終端運行腳本:
python tracker.py- 觀察終端輸出。腳本啟動后會立即執行一次檢查,并在 Telegram 中收到第一條通知。
- 等待設定的間隔時間(例如 30 分鐘),如果包裹狀態有更新,你會再次收到通知。
驗證成功標志:
- 終端顯示“API 請求成功”、“Telegram 通知已發送”等日志。
- 你的 Telegram 聊天窗口中收到來自 Bot 的包裹狀態消息。
常見問題
Q1:腳本運行時報錯“API Key 無效”怎么辦?
A:檢查 API_KEY 是否復制完整,沒有多余空格。確認你的 Track.TW 賬戶 API 功能是否已啟用。
Q2:我想用 Email 或 Discord 接收通知,怎么改?
A:核心邏輯不變,只需修改通知函數。例如,發送 Email 可以使用 Python 內置的 smtplib 庫;發送 Discord 消息則調用其 Webhook API。Track.TW 的 API 返回數據格式是固定的,你只需要替換“發送”這部分的代碼。
Q3:如何實現“狀態變化才通知”?
A:你需要一個地方(比如本地的 JSON 文件)來存儲上一次查詢的狀態。每次查詢后,將新狀態與舊狀態對比。如果不同,則發送通知并更新存儲的狀態;如果相同,則跳過。
這個案例的技術價值
這個小項目展示了自動化工作流的核心思路:
- 數據獲取:通過 API 從外部服務(Track.TW)獲取結構化數據。
- 邏輯處理:用 Python 腳本進行解析、判斷(是否狀態更新)。
- 動作執行:通過另一個 API(Telegram Bot)將結果推送到用戶面前。
你可以將這個模式擴展到無數場景:股票價格提醒、天氣預警、網站內容監控、社交媒體動態抓取……Track.TW 的包裹追蹤只是一個具體、實用的起點。
下一步學習建議
- 擴展通知渠道:嘗試修改腳本,讓通知同時發送到你的 Email 和 Discord 頻道。
- 加入狀態對比:完善腳本,實現真正的“狀態變化才通知”,并考慮將歷史狀態記錄到數據庫(如 SQLite)。
- 集成到更大工作流:將這個腳本部署到云服務器(如阿里云、騰訊云的輕量服務器),實現 7x24 小時自動運行。或者,將其作為 Dify/Coze 工作流中的一個節點,構建更復雜的自動化流程(例如:包裹送達后,自動在待辦清單中勾選“確認收貨”)。
相關資源:
- Track.TW API 官方文檔(假設鏈接):
https://api.track.tw/docs - Python
requests庫快速上手:https://docs.python-requests.org/ - Telegram Bot 創建指南:搜索“Telegram BotFather”即可找到官方教程。
從解決一個具體的小麻煩開始,逐步構建你的自動化工具箱,這才是技術愛好者最酷的實踐方式。