
我花了三天,把神州和一嗨的真实报价全抓了下来
我花了三天,把神州和一嗨的真实报价全抓了下来
数据采集期:2026 年 8 月 4 日 — 8 月 6 日
查询条件:贵阳奥林匹克体育中心送车点取车(8/19 17:50)→ 安顺黄果树机场还车(8/22 17:30),租期 3 天,异地还车
涉及平台:神州租车(http://m.zuche.com)、一嗨租车(http://m.1hai.cn)
起因:一个查不清楚的价格
八月中旬要去贵州自驾,路线是贵阳落地、安顺黄果树机场飞回,典型的异地还车。租车这件事看起来简单——打开 App,输入时间地点,看谁便宜。但真做起来,第一个小时我就放弃了人肉比价。
原因有三个:
第一,价格不在一个页面上。 神州 App 列表页显示"¥25/天起",一嗨显示"日均 ¥82",但这两个数字都不是你最后要付的钱。异地还车费、整备费、基础保险、平台优惠券,全都藏在下单页最后一步。列表页的"起"字,是这个行业最贵的一个汉字。
第二,车型太多。 一嗨在贵阳侧放了 40–52 款车(不同日期不同),神州 7 个门店合计 46 行、去重 24 款。两家加起来 60 多款,每款都要点进详情页、勾保险、走到订单确认页才能看到真实总价。手动做一遍,两个小时起步,而且做完就过期。
第三,价格在动。 这一点是后来才发现的,也是整件事最有价值的部分——8 月 5 日到 8 月 6 日,一嗨的 38 款可比车型全部上涨,平均涨幅 75%。人肉查价的结果,隔一天就是废数据。
所以只有一条路:写程序,把两个平台的真实最终报价全量抓下来,带时间戳存档,隔天再抓一次做对比。
两个平台,两条完全不同的技术路线
神州:官方 API 直连,免登录
神州租车的移动端 m.zuche.com 有一个选车接口 /resource/carrctapi/order/chooseCar/v3,不需要登录态就能返回完整车型列表。传入取还车时间和经纬度坐标,它会按距离返回附近门店的车型池。
POST /resource/carrctapi/order/chooseCar/v3
{ pickupTime, returnTime, lat: 26.6229, lon: 106.6056, ... }返回的 rows 里字段相当完整:modelName(车型名)、dailyPrice(标准日租)、packagePrice(促销日租)、vehicleAge(车龄)、displacement(排量)、fuel(动力)、seat(座位)、deptName(门店)、distance(距离),甚至有油箱容积和后备箱容积。
这一步很顺,8 月 4 日 16:13 就跑通了,一次抓到 7 个网点 26 款车型(collect_zuche.js + lib/zuche.js)。
但接口只给日租价,不给费用明细。 我依次探测了 13 个候选端点——fillOrder、priceDetail、costDetail、confirmOrder、calcAmount、orderPrice……全部返回"不支持的api请求"。神州把费用计算完全放在了下单流程里,API 层不开放。
那阶段我只能用一个测算公式凑合:packagePrice × 3 + 300(300 = 优选服务 50 + 基础保险 50 + 异地还车 195 + 整备 20)。这个公式后来被证明是整轮分析里最大的偏差源,下一篇会详细讲。
真正的突破在 8 月 5 日下午:神州车型列表的浮层里,其实已经包含了含保险的套餐真实总价,不需要登录、不需要进订单页。只要把 7 个门店分组全部展开、把每款车的价格浮层逐个点开,就能读到平台直出的最终数字。46 款全量采集成功,价格区间 ¥496–¥1594,中位数 ¥614。
一嗨:强制登录,只能接管浏览器
一嗨完全是另一个故事。
它的车型价格页(/Booking/Step2)强制登录,而且不是普通登录——homepage 登录了也不够,点"去选车"会跳转到 ehilogin.1hai.cn 要求下单流程登录。PC 端 booking.1hai.cn 更直接,未登录时显示"共有 0 种车型,登录账户即可查看"。
我先试了破解加密。一嗨的 mobileservice 接口响应是 AES-CFB 加密的,密钥和 IV 都提取出来了(密文里 *→=、$→+ 做替换后解密,padding Pkcs7)。这条路验证可行,能解密任意历史响应——但实时报价仍然要求有效会话,加密破解解决不了登录问题。
最终方案是接管用户自己已登录的 Chrome:
- 用户用自己的 Chrome 配置文件启动调试端口
--remote-debugging-port=9222,手动登录一嗨并停在车型页 - 我用
puppeteer-core的connect({browserURL:'http://localhost:9222'})连上去 - 找到 URL 含
/Booking/Step2的那个页面,只读 evaluate 抓 DOM
关键的选择器清单(2026-08-05 校准过):
| 字段 | 选择器 | |---|---| | 车型名 | .car-base-name | | 规格(变速箱/排量/车身/座位) | .car-base-desc | | 车龄与配置标签 | .car-child .tags-wrap .tag-item .tag-name | | 日均价 | .car-child-new-price | | 总价 | .car-child-total-price | | 划线原价 | .car-child-old-price | | 预订条件(取还车点/时间) | localStorage.getItem('EhiCart') |
那个车龄标签的选择器,是第二天才补上的——最初的脚本漏抓了,我一度以为"一嗨不公开车龄"。实际上 49 款里有 12 款带"一年内车龄"或"半年内新车"标签。这个错误认知写进了第一版技能文档,第二天才纠正过来。
三层价格口径的演进
整个采集过程,我的"总价"定义被推翻了两次。
第一层(8/4):列表裸日均价。 神州 dailyPrice vs 一嗨 oldPrice,横向可比但离实付很远。这一层给出的结论是"经济型三厢 神州 ¥25 vs 一嗨 ¥40"。
第二层(8/5 上午):测算总价。 一嗨用平台直出的 3 天打包价,神州用 pkg×3+300。这一层给出的结论是"一嗨最低 ¥261,神州最低 ¥375,一嗨整体便宜 100 多"。
然后我做了一个校验:剥离固定费,只比 3 天纯租金。结果同款车两家只差 ±6~48 元,而且互有胜负——途铠、卡罗拉锐放、途岳新锐都是神州更便宜。
也就是说,"一嗨便宜 100 多"这个结论,主要来自我给神州假设的那个 ¥300 固定费,不是真实的租金差。这是整轮分析里最重要的一次自我推翻。
顺带反推出了一嗨的固定费分档(用 总价 − 日均×3):经济/舒适型 ¥171–175,越野 SUV ¥235,豪华轿车 ¥293–294。
第三层(8/5 下午起):详情页实测总价。 这才是最终口径。要求很硬——每款车都要进详情页,走完下单链路,读订单确认页的真实总价,严禁估算。
一嗨的链路是三级跳:
Step2 车型列表 → 点 .go-car-detail → Common/CarDetail 详情页
→ 点"立即预订" → Booking/Step3 订单确认页(真实总价在这里)
→ 点"明细"展开逐项:车辆租赁费 / 服务费 / 异地还车费 / 整备费 / 无忧还车 / 保险
→ goBack() × 2 回到列表,继续下一款全程同域,不触发沙箱杀进程;全程不重载页面,否则 SPA 的下单会话会失效(这个坑很阴险,下一篇细说)。
最终产出
2026-08-05 全量采集:
- 一嗨:43/43 款成功,
data_1hai_real.json,采集时间戳2026-08-05T09:51:30Z,价格区间 ¥249–¥1417,中位 ¥337 - 神州:46/46 行成功(7 门店,去重 24 款),
data_zuche_real.json,采集时间戳2026-08-05T07:33:13Z,价格区间 ¥496–¥1594,中位 ¥614 - 合并 89 行写入腾讯文档新子表「租车比价·真实采集(贵阳→黄果树)」,21 列,全部标记「✓ 已核对」
2026-08-06 复采(验证是否变价):
- 一嗨:40 款全量进 Step3 采实时价,11:33 快照,40/40 成功(
data_1hai_full_0806.json) - 神州:24 款全量展开 7 门店,24/24 成功(其中 11 款是二次重试补的,
data_zuche_full_0806.json) - 评估排名:
eval_all.js→eval_all_0806.json(64 款)+租车全量排名_2026-08-06.csv
两天的数据一对比,才发现真正值钱的东西不是"哪家便宜",而是价格在两天里发生了什么。那个结果超出预期,单独写一篇。
几条可复用的经验
- 列表页价格一律不可信。 一嗨大众途岳:列表日均 ¥66 → 详情页日均 ¥99 → 下单页日均 ¥141。三个数字,只有最后一个要付钱。
- 口径对齐比抓数据难得多。 神州套餐价含"尊享服务"(全额免赔),一嗨默认档含"基本保障"(小伤免赔)。两个数字放一起比,看起来神州贵 ¥247,实际保险层级根本不同。
- 每份数据必须带精确采集时间戳。 不带时间戳的价格数据,第二天就是垃圾——这句话在 8 月 6 日被验证得非常彻底。
- 能免登录就别碰登录。 神州这条 API 直连路线,两天里跑了六七次,零维护成本;一嗨那条,两天里会话失效了三次,每次都要打断用户去重新登录。
本文数据全部来自 2026-08-04 至 08-06 对两家平台的实际采集,脚本与原始 JSON 均已归档在 租车比价/ 目录下。价格为特定时间点、特定取还车条件下的快照,不代表任何时刻的通用报价。