/getHfMask

通过Nodejs直接请求合肥医保领取口罩的API,帮助快速预约口罩,请勿高频请求,口罩是限量的,一人一段时间只能买一次。

Primary LanguageJavaScript

合肥市冠状病毒期间口罩预约脚本

武汉加油!**加油!

注意事项

  1. 由于预约口罩的 API 经常更改,该脚本只能启到辅助作用,我能保证只要对方不改接口,这个脚本就能用。改了的话我能力范围内的会更新,所以请您手机也一起抢!手机为主,脚本为辅。
  2. 请勿高频请求!请勿高频请求!
  3. 每人一段时间只可预约一次,请勿重复预约。
  4. 切勿用于商用。
  5. 如若违法侵权请告知,必删。
  6. 所有数据均从合肥医保预约口罩页面获取。
  7. 为啥不用 ES6?因为我从网上抄的一段 request 请求方法,而且加密的也是 ES5,于是就统一 ES5,还兼容低版本 Node。哈哈哈哈哈。。。。
  8. 由于预约网站加入了图形验证码和 cookie / IP(猜测,未证实)机制,不能同个时间大量请求,会导致禁止请求。
  9. 手机为主,脚本为辅。手机为主,脚本为辅。手机为主,脚本为辅。!!!因为不能知道对方是否改接口。
  10. 由于hash生成的规则在2020-02-28日修改了,新规则是当前时间戳 + 秘钥。config.js中新增了时间差(dateDifference)字段,默认 30000s ,这个是我电脑和时间和对方服务器时间的大概误差,如果一直是请求频繁,可以尝试修改这个时间。
  11. 预约口罩的服务器最近到点就容易崩溃报502,到时候多启动几次脚本就行了。

使用帮助

  1. confg.js中的getDataInterval参数是多长时间请求一次,默认是 10000ms。
  2. userData.js中,依次输入您的个人信息,其中reservationNumber为固定的五个,请勿改动。因为规定是预约只能预约 5 个且预约成功后,5 天内不可再次预约。
  3. 如果您不知道您要领取的药店的名称和编号,请点击getPharmacy.js,在第二行pharmacyName处输入您想查询的药房名称,然后执行node getPharmacy.js即可查阅到相关信息。药房数据格式请查阅common/pharmacy.json,其中每个数据的name值,即为药店名称,其code就是药店的编号 ID。或者在此查询,其中编号 ID 可以通过审查元素或者接口信息中看到。
  4. pharmacy
  5. 0208 日,接口增加了图形验证码,为了破验证,我接入了百度云的文字识别接入文档。进入百度云文字识别,然后创建个应用,之后获取到应用的APP_ID, API_KEY, SECRET_KEY。将这些输入到common/baidu.js中。 百度云文字识别暂时是每日 50000 免费的,不用担心。

开始

  1. 首先您要有Node环境,如果没有,请百度Node安装一个 - -
  2. 将代码下载到本地,然后在cmd(终端)中进入文件夹,windows系统可以shift+鼠标右键,在终端中打开。
  3. 运行npm install
  4. userData.js中,按照提示填好个人信息药店信息
  5. common/baidu.js中,填入申请的百度文字识别的应用 ID 和其他信息。百度云的文字识别接入文档
  6. 运行node index.js 即可开始请求,执行脚本会立即请求一次,然后默认每 10s 请求一次。请勿高频请求!每天 17:00 可预约第二日口罩。所以您每天 17:00:00 再启动该脚本吧~已经预约到的 5 天不能再预约了哦!如果出现验证码错误请重新启动该脚本。
题外
  1. 就在刚才我预约到了口罩,很开心,自己写的脚本有用~嘻嘻
  2. requestInfo
  3. getMaskDetail
更新日志
  1. 2020-02-28。 cookie 的获取现在在获取验证码的接口中。 hash 字段的生成规则改为对方服务器时间 + 固定秘钥。 并且时间是 4s 更新一次,由于我们每次都是重新请求,所以不考虑 4s 的规则。20200228破解成功图片 20200301预约成功图片