写点代码自动化驾校约车,一切都能自动化...

时间:2019-10-09 00:16来源:迈克小宝
先说缘由      最近在北京某驾校学习驾驶,考驾照。目前处于科目二练车阶段,需要通过某app自己约车: 与客服美眉的聊天记录       神马? 每  天  早  上  6  点  多  起来“抢

先说缘由

      最近在北京某驾校学习驾驶,考驾照。目前处于科目二练车阶段,需要通过某app自己约车:

与客服美眉的聊天记录

      神马? 每  天  早  上  6  点  多  起来“抢”?谁受得了啊。。。

      坚持了两天之后,实在受不了这种又笨又野蛮的方法了,而且第二天抢了好久还没有抢到“最佳课时”,本来睡得就晚,结果导致那天临近中午十二点才起床。。。不能容忍效率低呀!

      好吧,既然是刷票,咱就写个脚本刷一刷。

目标功能:

1、每天全自动约车,除首次启动程序,后面无需手动

2、抢到最好的练车时段(中午)

3、抢不到最好的时段(尝试30次)就抢早晨的

工具准备

Fiddler + IntelliJ IDEA + Android设备 + JSON校验工具 + Sublime Text + 其他

抓包

写点代码自动化驾校约车,一切都能自动化...。这个抓包工具应该见过、用过吧?不多说了。。

Fiddler抓Android客户端的包

写点代码自动化驾校约车,一切都能自动化...。浏览器模拟请求

直接用抓到的url访问,很好,有数据返回,json

直接用浏览器访问返回的数据

没毛病,说明有戏。。。

写点代码自动化驾校约车,一切都能自动化...。代码测试

开始写代码。。先不加cookie试试,还是和浏览器里直接执行得到的结果一样:

程序返回的结果

正式请求数据

加上cookie作为礼物,正式请求预约车辆列表数据:

这个忘记打码了,就不打了

拿到数据

很好,得到数据了,不过比较乱,借助json解析工具观察下:

在线JSON校验格式化工具(BeJSON)

在线json校验,还是不够直观。。

对照app分析下,比较清晰。

数据和对应界面的对照分析图

分析这个预约车辆列表没有特别的作用,只是做个预热。如果按照驾校的约车规则和系统特点,这一步并不是执行约车操作,这一步完全是没有必要的。约车固定车、固定教练,所以执行约车请求时,发送的参数是特定的。下面直接抓取约车请求的数据包,分析并构造URL。

为了测试,先把之前约好的两次车都取消了。幸好现在深夜,没人和我抢。。取消之后重新预约,抓到下面的数据包,分析参数,easy程度超乎我的想象,中间竟然没有验证码验证也没有校验拦截,一切都很顺利。结合业务背景,参数很容易理解,轻松get:

约车请求的URL分析

下面就是最激动人心的时刻:模拟自动化约车。。再次取消之前预约好的数据,不过这一次我要让机器帮我预约:

取消之前的预约

写实验代码:

代码

run起来吧小宝贝儿 - -

鸡冻的Run

得到返回数据:

返回的数据

打开APP,预约成功!

之前被取消的预约现在又变为预约成功

同时也看看预约失败时的返回:

失败时的返回数据

很明显,code为0时表示预约成功,其他表示预约失败。

下面就是封装代码和写定时任务了,每天7点整准时开始约车。


             深夜coding..............


写好了。

测试1:失败情况:

预约失败时程序的执行结果

测试2:成功情况,执行一次就预约成功了:

预约成功时程序的执行结果

最后:部署起来,让程序定时执行。。。

等待中。。。


睡觉。。。。

编辑:迈克小宝 本文来源:写点代码自动化驾校约车,一切都能自动化...

关键词: