公交联想(一) 掌上公交 APP 接口分析

        不知道什么时候起,有款这样的公交 APP, 平时用来查看公交车在哪一站、大概什么时候到,着实方便了本地人的出行。今日对这款应用起了兴趣,便打算开始分析,猜想:是否能够统计各时间段下某两站之间行驶所用时间,存储并处理一周以内的数据,结合节假日信息做出较准确的时间预测,并且可以为此做一份分析报告也是挺有趣的事。

        如果要我来写接口,我大概会给每个站点进行标号,在服务端计算好车辆在哪两站之间,大概进度是多少,提供这样两个数据:

StationOut已经出的站序号
Percentage距下一站行驶路程已驶过的百分比

       来看看和我拟的样不样。使用 Fiddler 抓包,整理主要的三个 API。先做一点说明:

  1. API 中的 Addr 和 Port 等参数,是从另外的地址里头获取的,不同城市的值不同。
  2. 后来发现这些 API 是一个叫恒宇电子的公司出的智能公交调度系统的组成部分。
  3. 这些接口,以及应用界面...不敢恭维。
  4. 我怎么成了写文档的了…

获取线路列表

地址   http://<Addr:Port>/sdhyschedule/PhoneQueryAction!getLineInfo.shtml

响应(JSON)

lineCode公交线路 ID
lineName线路名称

JSON 格式中有一个匿名的、由一组字典组成的列表,字典中主要的有上述两对值,其他键值对均为空,未列出。

获得车辆列表

地址    http://<Addr2:Port2>/

参数

lineCode线路编号
sxx上下行:1. 上行 2. 下行
IMEI客户端 IMEI 号

响应

一个 JSON 列表,包含若干个字典。字典中的键如下表:

Speed

车速(km/h)
busCode车辆编号
cph车牌号
flag总为 0
isTravel总为 2
lat纬度(Latitude)
lineCode线路编号
lon经度(Longitude)

lx

2 : 正常行驶
0 : 停车
1 : 出站
passStation剩余站数
sxx上下行

获取线路停靠站

地址    http://<Addr>:<Port>/sdhyschedule/PhoneQueryAction!getLineStation.shtml

参数

lineCode 线路编号

响应

一个 lineList 列表,包含若干字典,字典键如下:

beginStation始发站
endStation终点站
lineCode线路编号
lineName线路名称
maxOrder最大站序
minOrder最小站序
stationOrder站序,从1开始
staDis两位浮点数,站距
sxx上下行
lat纬度
lon经度

       经过整理发现了接口提供的很有用的数据,现在已经可以获取站和车辆的位置,三个接口也确实能将 线路 - 车站 - 车辆 结合,但是仍然无法动态更新车与车站之间的距离。如果整条线路是直线,还可以使用经纬度配合勾股定理进行计算,但如果遇到拐弯怎么解决?暂时还没想明白。但是在抓包过程中未发现其他相关的有用的接口,看来只能从逆向分析 APP 入手了。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值