吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11406|回复: 34
收起左侧

[原创] 海淀驾校约车功能分析

  [复制链接]
liuyongqing1 发表于 2018-10-4 16:42
本帖最后由 liuyongqing1 于 2018-10-6 15:33 编辑

海淀驾校APP约车分析
首先要在电脑上安装charles proxy或是fiddler本人是mac,fiddler是没有mac版本的。所以选择使用charles proxy
第一步:安装charles 软件,具体怎么安装网络上有我就不再说明。据说android是有抓包工具的。我手里没有android手机所以没办法测试。还是使用charles
第二步:设置charles,macos proxy 勾选上,然后点击proxy settings 设置proxy端口。
1.png 2.png
第三步:手机上的配置,IOS12点击设置-无线局域网--找到你连接的wifi(与电脑必须在同一个局域网下),点击!号翻到最下面,找到配置代{过}{滤}理并点击,界面选择手动,下面服务器输入电脑的IP地址,端口输入上面的8888,点右上角存储即可。
第四步:在手机上安装海淀驾校app。接下来就是分析步骤:1、输入手机号及密码点击登陆

3.png

2、看到charles请求,看到箭头的请求对应下面的是请求详细信息等,可以看到这个地址是post请求,传递了两个参数,passwordmd5usernameusername对应手机号,passwordmd5对应的值是把密码用md5加密的。对应的python代码为md5password
PASSWORD='123456'#密码
md5password=hashlib.md5(PASSWORD).hexdigest()#加密后的密码
4.png
post成功后会返回学员的基本信息,这里敏感信息太多,所以修改了如下,#后面有注释该字段的意思



{       "data":{"USERNAME":"1xxxxxxxxxx", #对应用户名  
            "PHONENUM":"1xxxxxxxxxx",#对应手机密码
              "NICKNAME":"1235abc",   
           "ID":"123456", #id  
            "XXZH":"12345678",#xxzh 不知道啥意思,学习证号? 但是该字段很重要需要记下
              "JGID":"123456",  #不知道啥意思,需要记下
              "XYBH":"1234567890",#学院编号? 需要记下
              "SFZH":"xxxxxx",#身价证号
              "JXCODE":"xxxxxxxxx",#驾校code
              "APIURL":"",#无用字段
              "APIURLIOS":"https://haijiaapi.xuechebu.com:8007",  
            "JXMC":"海淀驾校",
              "XM":"xxx",#姓名
              "USERTYPE":"",  
            "DZ":"北京市",
              "SCHOOLPWD":"",#密码明文
             "SQCX":"",  
            "SSBX":"",   
           "BACKGROUNDIMAGE":"",
             "HANDIMAGE":""       },
      "code":0,       "message":"签到签退等功能,仅限使用本人手机!使用别人手机登录,无法正常签到签退!",       "type":0
}






上面的一整条数据对应的代码为:
[Python] 纯文本查看 复制代码
import requests,json
auth={'username':'1xxxxxxxxxx','passwordmd5':'xxxxxx'}
_headers={   'User-Agent':'android_haijia;v3.0.2;',   'Content-Type':'application/x-www-form-urlencoded',   'Host':'api.xuechebu.com',   'Connection':'Keep-Alive',   'Accept-Encoding':'gzip'}
r=requests.session()
login=r.post('http://api.xuechebu.com/usercenter/userinfo/login',data=auth,headers=_headers)
Data=json.loads(login.text)
XXZH=Data['data']['XXZH']
JGID =Data['data']['JGID']
XYBH=Data['data']['XYBH']





通过上面代码可以登陆成功,并把数据保存成变量供以后使用,以后代码都差不多,我就不再粘贴代码了。#注意header信息也要填上,不带header头的话可能不成功。特别是user-agent之类的。
上面请求的下一条url地址是:http://haijia.xuechebu.com:8008/Student/SetbadingStuInfo从SetbadingStuInfo这里可以看出是学生信息,就是上一条请求登陆成功后,会接着获取学员信息,我们看看请求主体及返回数据。
5.png
6.png
这步我记着是必须得请求的不管有没有用,应该是需要获取cookie    接下来看约车请求。
7.png
点击我要约车。
可以看到请求的urlhttp://haijia.xuechebu.com:8008/KM2/ClYyTimeSectionUIQuery2
8.png

{           "data":{
                     "XnsdList":[{
                                "Xnsd":"2001",
                               "XnsdName":"08:00--11:30"
                     },{
                                "Xnsd":"2002",
                               "XnsdName":"12:30--16:00"
                     },{
                                "Xnsd":"2003",
                                "XnsdName":"16:30--20:00"
                     }],
                     "YyrqList":[{
                                "Yyrq":"2018/10/04 16:02:43",
                               "DisplayWeek":"周四",
                               "DisplayYyrq":"10-04"
                     },{
                                "Yyrq":"2018/10/05 16:02:43",
                                "DisplayWeek":"周五",
                               "DisplayYyrq":"10-05"
                     }],
                     "QsList":null,
                     "UIDAtas":[{
                                "Yyrq":"2018/10/04 16:02:43",
                                "YyrqXH":0,
                                "Xnsd":"2001",
                                "XnsdName":null,
                               "QsName":null,
                                "Qsid":null,
                               "SL":1,  
                              "KS":0,
                                "IsBpked":false,
                               "IsBpked_SK":0,
                                "IsCreate":true,
                               "YyClInfo":""
                    }
           "code":0,           "message":""}


可以看到2001代表上午  2002代表中午下午   2003代表晚上。2001-2003提前定义好即可,他是不变的。下面SL代表余量,是需要过滤出来的,把有余量的日志过虑出来。例如下面就应该把yyrq有前半部分存下即2018/10/05

{
                               "Yyrq":"2018/10/05 16:02:43",
                               "YyrqXH":0,
                                "Xnsd":"2001",
                                "XnsdName":null,
                                "QsName":null,
                                "Qsid":null,
                                "SL":12,
                                "KS":0,
                               "IsBpked":false,
                               "IsBpked_SK":0,
                               "IsCreate":true,
                                "YyClInfo":""
}


确定好时间和时间段,即可以请求这个时间段内有多少名额了,即有多少车可以练。url地址为:http://haijia.xuechebu.com:8008/KM2/ClYyCars2
9.png
可以看到需要提交的参数时间段及预约日志还有学生编号。aaaa字段不用管我记得安卓没有这项。返回的数据是也如上,需要把CNBH取出来。 然后是提交确认信息了,下面的params就是时间日期加上cnbh,直接get即可。此时可以使用异步处理或是多进程。来提交成功率。提交的url地址是http://haijia.xuechebu.com:8008/KM2/ClYyCars2
10.png
好了我已经教大家方法。代码嘛我想了想,还是不发了。既然有思路代码肯定是不成问题的。码字不易,请大家多给点分吧。

免费评分

参与人数 4吾爱币 +7 热心值 +4 收起 理由
求学者 + 1 + 1 谢谢@Thanks!
Hmily + 5 + 1 用心讨论,共获提升!
MaxSecret + 1 + 1 老哥你就是在炫你的mac【滑稽脸】
悠悠娴娴 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| liuyongqing1 发表于 2018-10-6 17:36
zn19951027 发表于 2018-10-6 16:52
我可以发给你 源代码 编译即可运行  你可以发到论坛装个x 你说对不

好吧  我自己也写了约车的。也看看你的吧哈哈。发我邮箱可以吗 ?  yongq.liu  @   qq.com
lgty623 发表于 2021-6-4 11:37
liuyongqing1 发表于 2018-10-6 17:36
好吧  我自己也写了约车的。也看看你的吧哈哈。发我邮箱可以吗 ?  yongq.liu  @   qq.com

问下这个约车软件现在你还有?能不能发个源码参考下!422109590@QQ.COM
xiaowanzi52 发表于 2018-10-4 18:04
 楼主| liuyongqing1 发表于 2018-10-4 18:12
xiaowanzi52 发表于 2018-10-4 18:04
这家伙 代码看的我头疼呢

有动力研究就不头疼了哈哈
w1223 发表于 2018-10-4 18:24
太复杂了  完全看不懂,我还得多读几年书
大小方圆高矮 发表于 2018-10-4 21:07
学习学习
wygbio 发表于 2018-10-4 22:04
厉害厉害!!!
4everlove 发表于 2018-10-4 22:49
干嘛用的
xiaowanzi52 发表于 2018-10-5 08:30
可是我看不懂呢,然后你有什么用呢
sydn1234 发表于 2018-10-5 09:05

学习一下
 楼主| liuyongqing1 发表于 2018-10-5 09:32
xiaowanzi52 发表于 2018-10-5 08:30
可是我看不懂呢,然后你有什么用呢

可以写程序去直接请求啊。这样提高约车成功率~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-26 00:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表