DHL Tracking
Track DHL parcels via the dhl.de internal API endpoint using simple HTTP requests.
Important: Why this skill exists
DHL's tracking website (dhl.de/sendungsverfolgung) is a JavaScript SPA protected by Akamai Bot Manager. The SPA renders tracking data client-side after passing bot checks — headless browsers (even with stealth patches) fail due to TLS fingerprinting.
The solution: A simple curl to www.dhl.de/int-verfolgen/data/search with minimal headers returns full tracking JSON. No auth, no cookies, no JS needed.
Quick Usage
Bash (one-liner)
CODEBLOCK0
Python (formatted output)
CODEBLOCK1
Direct curl
CODEBLOCK2
Response Structure
CODEBLOCK3
Progress values
- - 0-1: Label created / picked up
- 2: In transit
- 3: In recipient's region
- 4: Out for delivery (loaded onto delivery vehicle)
- 5: Delivered
Monitoring Pattern
To monitor a package and notify when close to delivery:
- 1. Run
python3 scripts/dhl_track.py TRACKING_NUMBER periodically (cron, every 30 min) - Parse
fortschritt from stderr JSON output - Notify user when
fortschritt >= 4 (out for delivery)
What does NOT work (and why this skill exists)
- -
web_fetch on dhl.de → only gets static HTML shell, no tracking data (JS SPA) - Headless Chrome on dhl.de → Akamai blocks internal API via TLS fingerprinting (returns 404)
- Stealth patches (fake UA, hide webdriver, fake plugins) → still detected by TLS/JA3 fingerprint
nolp.dhl.de legacy endpoint → now also protected by Akamai (returns 500)- DHL public API (
api-eu.dhl.com) → requires API key registration - Third-party trackers (17track, parcelsapp) → often delayed or incomplete for DE parcels
Notes
- - Works for German DHL Paket numbers (typically
0034...) - Language:
language=de (German) or language=en (English) - Be reasonable with polling (max once per minute)
- If the API starts returning 404/HTML, the Akamai protection may have expanded — try varying the User-Agent or adding a
Referer: https://www.dhl.de/ header
DHL 追踪
通过简单的HTTP请求,使用dhl.de内部API端点追踪DHL包裹。
重要:此技能存在的原因
DHL的追踪网站(dhl.de/sendungsverfolgung)是一个受Akamai Bot Manager保护的JavaScript SPA。该SPA在通过机器人检测后在客户端渲染追踪数据——无头浏览器(即使使用隐身补丁)也会因TLS指纹识别而失败。
解决方案: 向www.dhl.de/int-verfolgen/data/search发送一个带有最少请求头的简单curl命令,即可返回完整的追踪JSON数据。无需认证、无需Cookie、无需JavaScript。
快速使用
Bash(单行命令)
bash
bash scripts/dhl_track.sh 追踪编号
Python(格式化输出)
bash
python3 scripts/dhl_track.py 追踪编号
直接使用curl
bash
curl -s https://www.dhl.de/int-verfolgen/data/search?piececode=追踪编号&language=de \
-H Accept: application/json -H User-Agent: Mozilla/5.0
响应结构
sendungen[0].sendungsdetails.sendungsverlauf:
.status → 当前状态文本(德语)
.fortschritt → 进度(0-5)
.maximalFortschritt → 始终为5
.events[] → 事件数组 {datum, status, ruecksendung}
sendungen[0].sendungsdetails.zustellung:
.zustellzeitfensterVon/Bis → 投递时间窗口
sendungen[0].sendungsdetails.istZugestellt → 布尔值
进度值
- - 0-1:已创建标签/已揽收
- 2:运输中
- 3:到达收件人所在区域
- 4:派送中(已装载至投递车辆)
- 5:已投递
监控模式
监控包裹并在接近投递时通知:
- 1. 定期运行 python3 scripts/dhl_track.py 追踪编号(cron,每30分钟)
- 从stderr的JSON输出中解析fortschritt
- 当fortschritt >= 4(派送中)时通知用户
无效方法(以及此技能存在的原因)
- - web_fetch on dhl.de → 仅获取静态HTML外壳,无追踪数据(JS SPA)
- dhl.de上的无头Chrome → Akamai通过TLS指纹识别阻止内部API(返回404)
- 隐身补丁(伪造UA、隐藏webdriver、伪造插件)→ 仍被TLS/JA3指纹检测
- nolp.dhl.de旧端点 → 现在也受Akamai保护(返回500)
- DHL公共API(api-eu.dhl.com) → 需要注册API密钥
- 第三方追踪器(17track、parcelsapp)→ 对德国包裹通常有延迟或不完整
备注
- - 适用于德国DHL包裹编号(通常以0034...开头)
- 语言:language=de(德语)或language=en(英语)
- 轮询频率要合理(最多每分钟一次)
- 如果API开始返回404/HTML,可能是Akamai保护范围扩大——尝试更换User-Agent或添加Referer: https://www.dhl.de/请求头