吉祥航空随心飞 - 余票自动监控脚本/刷票工具/循环查票工具

2021-04-16 吉祥航空最近修改了 API, 其实改动不多并且 field 都和以前一样的名称 (很神奇的, 以前都是 CamelCase Naming 新的 API 全部变成了 UpperCase Naming, 这个操作毫无意义并且完全是在浪费时间, 不太能理解这个操作的缘由, 可能是完整切换了另一个版本), 我没有购买新一期随心飞无法调试, 以后等我有机会写一个刷普通票的工具吧

Github: https://github.com/szhshp/Juneyao_Airline_Helper

2021-01-05 添加了航班 Filter 使用更方便啦

免责声明

请求过多导致封号属于用户活该操作, 与本人无关 😏

代码声明

这个就是我花 1h 随手写的小工具, 追求快速达到功能而不会考虑任何的扩展性, 健壮性及专业性

使用方法

  1. 安装依赖: yarn
  2. 设置查询参数
  3. 执行脚本: yarn start
  4. 偶尔单个请求失败不用在意, 他们服务器本来就不太好
  5. Finger crossed and wait for good news !

如果发现有余票那么会弹 Alert 通知:

详细步骤

设置 Config

设置 blackBox

打开浏览器, 到吉祥航空的子页面登陆: https://m.juneyaoair.com/#/home

F12 打开 Developer Tools, 浏览器页面找到搜索随意搜索一次余票, 于 Network Tab 寻找一个 host URL 为 https://m.juneyaoair.com/server/v2/flight/AvFare 的 request, 查看 payload 会发现以下 fields:

blackBox: "eyJ2IjoiNGh123456789123456789123VYTTNQblgrOEZHMDhXTzZ2UXJEcVQrTUJxUHhaMUFWSXF5UFgyVlQzNCIsIm9zIjoid2ViIiwiaXQiOjg=="
ffpCardNo: "123456789"
ffpId: 123456789
loginKeyInfo: "123456789123456789123456789"

将这部分内容 copy 到 /data/config.js , 放到 payloadConfig 对象下方

设置查询参数

然后到 /data/payload.js 里面填写需要请求的 出发地 , 目的地 , 出发时间 :

const presetSetionData = [
  {
    // (必填) 目的地
    arrCode: 'CAN', 
    // (必填) 出发地
    sendCode: 'SHA', 
    // (必填) 起飞时间, 按照 YYYY-MM-DD 格式输入, 可以设置多个
    departureDate: ['2021-01-15'], 
    // (选填) 航班编号, 如果不设置此列则获取所有航班, 否则只获取这一列提供的航班
    flightCode: ['HO1077', 'HO1037'], 
    // (选填) 弹窗通知时的提示文字, 可以自由输入
    comments: '广州去程机票', 
  },

  /* 可以设置多组数据, 不过切记每个日期会当做一次请求 */
  /* 这一组没有限制 flightCode */
  {
    arrCode: 'WUH',
    sendCode: 'SHA',
    departureDate: ['2021-01-15'],
  },

  {
    arrCode: 'SHA',
    sendCode: 'WUH',
    departureDate: ['2021-01-17'],
    flightCode: ['HO1074'],
    comments: '哈哈哈抢到票了',
  },
];

设置请求频度

根据测试得到以下因素:

  1. 1h 可以大概发送 1000 次请求
  2. 一个地点一个日期只需请求一次即可获得当天所有航班

可以得出:

一分钟内可以请求 12 次

  • 即 3 个 地点在 4 个日期的余票
  • 或者 4 个地点在 3 个日期的余票

也就是说, 你一次可以同时请求:

上海 - 南京 , 南京 - 北京 , 北京 - 哈尔滨12 月 1 日 - 12 月 4 日 的全部随心飞余票航班

通过 data/config.js 来设置请求频度 :

  // 每 30 sec 请求 6 次
  times: 6,
  duration: 30,