100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 北京地铁预约进站==》基于Python破解实现自动预约

北京地铁预约进站==》基于Python破解实现自动预约

时间:2019-06-19 14:12:44

相关推荐

北京地铁预约进站==》基于Python破解实现自动预约

本篇文章仅供学习交流

破解背景,北京地铁推出预约进站功能,在沙河,天通苑人流量大的站点进行试点服务。很方便的服务。楼主位于沙河地铁站。自从有了预约进站再也不用排长队进站了。解决了一个烦恼后,又有一个新的烦恼,预约号在每天的12:00 还有20:00点放号。如果碰上第二天是雨天或者周五的话,预约的人会很多。而且我会忘记抢预约号,还得定闹钟来提醒我预约。感觉很麻烦。接下来就进入本文正文内容,解决手工预约的烦恼。来实现每天直接获取预约码去进站。“懒惰是第一生产力”

实现源码参考地址。

原来的已过期,感兴趣的查看:/wangliuqi123/article/details/119800749

搞懂预约流程

手机设置代理后,查看Fiddler爬取数据:

可以看出我这里微信公众号绑定手机号等用户信息后,通过微信进入预约界面时,会进行一次微信的授权登录。授权登录完成后,重定向到预约页面,即可获取到用户信息。然后才能进行预约操作。

未开始时,这里无法预约,只有放号之后才能开始预约操作。

破解(自动化)思路

这是一个简单的拿到用户信息,然后根据用户信息去绑定号源的流程。所以我们只要:

模拟登陆保存用户信息设置定时任务,12:00 进行取号操作用户信息过期操作

开始工作

通过Fiddler查看接口很不方便。通过测试找到了预约进站的入口HTML首页

复制链接从浏览器打开即可进入

先别管别的,输入手机号登陆上去看看。

果然登录成功,并且拿到了跟微信一样的用户信息。

分析网页结构,以及Application保存的数据,以及Network发送的网络请求,发现所有的接口都是通过Token来进行身份验证:

而这个Token保存在所以我们只要模拟登陆拿到这个token即可实现预约的功能。(这个系统页面源码使用Vue编写,webpack打包发布。之前存在源码泄露的漏洞,现在已修复)

所以我们的工作就是,模拟登陆后,保存用户信息跟Token,然后定时预约即可。

注意事项

Token存在有效期,经测试大概为6天左右,所以这里会有两个token一个是为了刷新Token来用的。刷新Token的接口前端源码中能看到。如果想要抓取就只能等到浏览器中的Token过期然后打开页面访问才行。

最后老规矩:源码仅供参考学习。源码地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。