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

本篇文章仅供学习交流

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

实现源码参考地址 

  • 搞懂预约流程

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

北京地铁预约进站==》基于Python破解实现自动预约_第1张图片

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

北京地铁预约进站==》基于Python破解实现自动预约_第2张图片

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

  • 破解(自动化)思路 

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

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

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

北京地铁预约进站==》基于Python破解实现自动预约_第3张图片

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

北京地铁预约进站==》基于Python破解实现自动预约_第4张图片 先别管别的,输入手机号登陆上去看看。

北京地铁预约进站==》基于Python破解实现自动预约_第5张图片

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

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

北京地铁预约进站==》基于Python破解实现自动预约_第6张图片

而这个Token保存在北京地铁预约进站==》基于Python破解实现自动预约_第7张图片 所以我们只要模拟登陆拿到这个token即可实现预约的功能。(这个系统页面源码使用Vue编写,webpack打包发布。之前存在源码泄露的漏洞,现在已修复

北京地铁预约进站==》基于Python破解实现自动预约_第8张图片

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

  • 注意事项

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

  • 北京地铁预约进站==》基于Python破解实现自动预约_第9张图片

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

你可能感兴趣的:(python,爬虫,javascript,python,node.js)