如题所述
目标功能:
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:成功情况,执行一次就预约成功了:
预约成功时程序的执行结果
最后:部署起来,让程序定时执行。。。
百度的吧
你要是能做出来价格好商量
我是约不到教练
没法练车
在软件上抢不过别人
追答教练这个不是进驾校的时候就匹配好了吗
实在不行,你可以去问问驾校的服务台,应该会直接帮你的
追问不是啊,靠自己抢
追答但是你自己实在没办法,只能去找报名处啊,不可能一直不学吧