中国医大一院挂号脚本

起因

最近一位朋友生病了,后续治疗需要抢专家号,但每次抢号都在瞬间结束,于是让我帮忙看看能不能实现自动化抢号

分析

由于是微信小程序,打开后复制链接到浏览器,方便抓包

先创建一个订单,分析参数

1
2
3
4
5
6
7
8
9
10
{
"scheduleCode":"b3U4eVdSdVFKZVQwOVE9PQ",
"doctorName":"xxx",
"departCode":"b2VvPQ",
"departName":"门诊风湿免疫科",
"sign":"d146ca77c6f537dda083bd300f5ccc35bce524ebed75c143200e5d9a7cd1b17b-1739972186",
"timeRange":"10:30-11:00",
"patientId":"35094516",
"token":""
}

其中scheduleCode,departCode,sign是需要我们逆向的参数

先全局查找sign

找到个拼接参数带sign的

这是发送确认的api,不过有需要的所有参数

sign的内容在id为scheduleId的signdata属性里

scheduleCode,departCode也在其中

然而页面源代码中并没有这些

原来是页面中使用ajax向getschedoclist接口发送请求获取数据

getschedoclist接口需要的参数是departmentCode跟时间

而departmentCode就是groupcode,在url中

再次进入页面groupcode没变化,猜测写死在页面中的(根据意思也能猜到是固定的)

所以groupcode就在选择科室的页面中

ps:有些科室还有locClassify参数,在getschedoclist接口中跟groupcode传入就行

编写脚本

总结流程:在选择科室的页面中找到groupcode(和locClassify),用groupcode(和locClassify)加时间向getschedoclist发送请求得到该时间的医生,里面包含了scheduleCode,departCode,sign最后整合参数向lockorder发送请求,创建订单

而groupcode又是固定的,直接写个爬虫爬取所有的groupcode跟对应的科室

加载本地json便可获取整个医院的科室code

设置好参数就可以等待程序自动抢号

回到缴费列表即可看到订单,待支付状态即为抢号成功