You need to enable JavaScript to run this app. 无UPS API权限时如何用Python爬取UPS动态渲染的快递配送日期
优惠活动
大模型
产品
解决方案
定价
更多

无UPS API权限时如何用Python爬取UPS动态渲染的快递配送日期

UPS动态追踪页爬取实现指南

问题根因

  • 普通requests请求拿不到<app-root>内的内容,是因为UPS新追踪站是Angular开发的单页应用,初始返回的HTML仅包含空的根节点,所有追踪字段(包括目标配送日期)都是页面加载后由前端JS异步请求接口拉取、再渲染到页面上的,静态请求不会执行JS逻辑,自然获取不到动态内容。
  • 用HTTP Trace扩展没抓到核心数据接口,是因为这类轻量扩展默认只抓首屏加载的静态资源、页面跳转请求,不会捕获JS运行后发起的XHR异步请求,导致漏过真正返回追踪数据的API。

落地实现路径

路径1:直接逆向核心数据接口(性能最优)

  • 打开浏览器自带的开发者工具(不要依赖第三方HTTP Trace扩展),切换到「网络」面板,开启「XHR/Fetch」请求筛选,重新加载追踪页面,就能过滤掉所有第三方统计、静态资源请求,直接定位返回追踪数据的核心接口:
    • 这类接口的域名一定属于UPS自有域,排除Facebook、ATDMT这类第三方统计域名的请求即可
    • 接口返回为结构化JSON内容,包含预计配送日期、物流轨迹等字段,请求参数一般携带追踪号、地区语言标识、来源标识
  • 定位到接口后,直接用requests库复刻请求即可:
    • 必须带上从浏览器复制的完整请求头,尤其是Cookie、User-Agent、Referer字段,UPS会对缺失基础校验字段的请求做拦截
    • 按接口要求补全所有必填参数,就能直接拿到结构化的配送日期数据,不需要渲染整个页面

路径2:无头浏览器渲染方案(接入成本最低)

如果不想逆向接口的校验逻辑,可以直接用无头浏览器解决动态渲染问题,不需要申请UPS官方API权限:

  • 用selenium或playwright库写自动化脚本,打开目标追踪页面
  • 等待页面内<app-root>节点渲染完成,定位到展示预计配送日期的DOM元素,直接提取文本内容即可
  • 注意要把无头浏览器的User-Agent、窗口尺寸配置成和真实浏览器一致,避免触发反爬拦截

常见踩坑提示

  • 不要照搬FedEx的爬取方案:FedEx老站点是服务端渲染,直接POST表单就能拿到全量数据;但UPS新站点是纯前端渲染,和FedEx的请求逻辑完全不通用
  • 之前抓到的WebTracking/trackPOST请求只是老站点的跳转入口,请求完成后只会302重定向到新的Angular追踪站,不会返回实际的追踪数据,不要把这个入口当成数据接口
  • 所有发往第三方统计域名的请求都和物流数据无关,可以直接过滤,不要在这类请求上浪费时间

内容的提问来源于stack exchange,提问作者MarinaF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 15:45:01