java刷票脚本_我来分享一段自己写的刷票脚本 Version 1.0
2.[代码]Version 1.0(增加自动加载jQuery)
/**
* 该版本在V2.0版本中基本被废弃
* */
var stationDict = {
"广州" : "GZQ",
"吉安" : "VAG",
"北京" : "BJP",
"北京西" : "BXP",
"太原" : "TYV",
"深圳" : "SZQ",
"上海" : "SHH"
};
// 提取余票信息正则:如果当前车次有余票,则预订按钮包含getSlectect...字段
var defaultSplitReg = /getSelected\('(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)'/g;
// 查询余票URL模板
var queryUrlTemplate = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=queryLeftTicket&orderRequest.train_date={trainDate}&orderRequest.from_station_telecode={fromStationCode}&orderRequest.to_station_telecode={toStationCode}&orderRequest.train_no=&trainPassType=QB&trainClass=QB%23D%23Z%23T%23K%23QT%23&includeStudent=00&seatTypeAndNum=&orderRequest.start_time_str=00%3A00--24%3A00";
// 提交订单URL
var submitOrderUrl = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=submutOrderRequest";
// 填写订单信息页面URL
var confirmPassengerUrl = "https://dynamic.12306.cn/otsweb/order/confirmPassengerAction.do?method=init";
function checkjQuery(callback) {
if(!(window.jQuery)) {
var js = document.createElement('script');
js.setAttribute('src', 'https://dynamic.12306.cn/otsweb/js/common/jquery-1.4.2.min.js?version=5.47');
js.setAttribute('type', 'text/javascript');
js.onload = js.onreadystatechange = function() {
if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {
callback();
js.onload = js.onreadystatechange = null;
}
};
document.getElementsByTagName('head')[0].appendChild(js);
}
}
/**
* 查询余票
* @param {String} fromStation 发站
* @param {String} toStation 到站
* @param {String} trainDate 出发日期
*/
function queryTickets(fromStation, toStation, trainDate) {
var fromStationCode = stationDict[fromStation];
var toStationCode = stationDict[toStation];
// 拼装查询URL
var queryUrl = queryUrlTemplate.replace("{trainDate}", trainDate).replace("{fromStationCode}", fromStationCode).replace("{toStationCode}", toStationCode);
// 查询余票
$.get(queryUrl, function(ticketsInfo) {
// console.log(ticketsInfo);
var availableTrains = [];
var matchedArray = defaultSplitReg.exec(ticketsInfo);// 一趟车次的一条余票信息的数组
while (matchedArray != null) {// 当前车次有余票
availableTrains.push(matchedArray); // 加入有效车次的数组里
matchedArray = defaultSplitReg.exec(ticketsInfo);
}
if(availableTrains.length == 0) {
console.log("不好意思," + fromStation + "-" + toStation + "暂时无票!");
}
else {
console.log("有票了,即将自动跳到预订页面!");
sendDesktopNotification("有票了亲!", fromStation + " - " + toStation + "有票了\r\n快来抢票咯~~");
if(window.myInterval)
clearInterval(myInterval);// 清除轮询,以免烦人条车次提交预订
// reserveTicket(availableTrains[0], fromStation, toStation, trainDate);
}
});
}
/**
* 预订车票 ,节省了刷新页面再点击预订按钮的时间
*/
function reserveTicket(trainInfoArray, fromStation, toStation, trainDate) {
console.log("To reserve ticket: " + trainInfoArray.length);
$.post(submitOrderUrl, {
"station_train_code": trainInfoArray[1],
"train_date": trainDate,
"seattype_num:": "",
"from_station_telecode": trainInfoArray[5],
"to_station_telecode": trainInfoArray[6],
"include_student": "00",
"from_station_telecode_name": fromStation,
"to_station_telecode_name": toStation,
"round_train_date": trainDate,// 返程日期
"round_start_time_str": "00:00--24:00",
"single_round_type": 1, // 单程车票
"train_pass_type": "QB",
"train_class_arr": "QB#D#Z#T#K#QT#",
"start_time_str": "00:00--24:00",
"lishi": trainInfoArray[2], // 历时
"train_start_time": trainInfoArray[3], // 发车时间
"trainno4": trainInfoArray[4],
"arrive_time": trainInfoArray[7], // 到站时间
"from_station_name": trainInfoArray[8],
"to_station_name": trainInfoArray[9],
"from_station_no": trainInfoArray[10],
"to_station_no": trainInfoArray[11],
"ypInfoDetail": trainInfoArray[12],
"mmStr": trainInfoArray[13],
"locationCode": trainInfoArray[14]
}, function(data) {
// console.log(data);
// document.write(data);
// $.get("https://dynamic.12306.cn/otsweb/order/confirmPassengerAction.do?method=getpassengerJson", function(data) { console.log(data) });
// location.href = submitOrderUrl;
});
}
// 桌面通知
function sendDesktopNotification(title, msg) {
if (!window.webkitNotifications || (window.webkitNotifications.checkPermission() != 0)) {// 不支持桌面通知或未授权
alert("不好意思,你的浏览器不支持桌面通知或者你未开启!");
return;
// 不支持桌面通知
}
var notificationMsgBox = window.webkitNotifications.createNotification( icon = "http://www.12306.cn/mormhweb/images/favicon.ico", title, msg);
notificationMsgBox.show();
}
checkjQuery(function() { queryTickets("广州", "吉安", "2013-02-08") });// 考虑无座
// 每5秒刷一次票
var myInterval = setInterval(function() {
queryTickets("广州", "吉安", "2013-02-08");
}, 5000);
java刷票脚本_我来分享一段自己写的刷票脚本 Version 1.0相关推荐
- 手机写python脚本_如何让自己在电脑上写的python脚本在手机或安卓系统上运行呢??...
2017.12.9更新 如果单纯手机上使用python的话,安卓更推荐Pydroid3/2,可以直接在google play下载.可免费使用,各种模块如numpy,matplotlib,pandas, ...
- 如何用python写脚本_【按键教程】用python写脚本 另附垫材24与变奏22的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 二.脚本中需要些什么 以PE10炮为例 #!/usr/bin/python #对mac/linux用户,可以点击脚本文件即运行 # -*- coding: ...
- shell编写mysql全备和增备脚本_基于mysqldump编写自动全备增备的shell脚本
基于mysqldump编写自动全备增备的shell脚本 在线上MySQL数据库备份分为全备和增备,而xtrabackup备份已经支持了增量备份了,但是mysqldump就不支持增量备份,所以我们需要写 ...
- java笔试题_【干货分享】中兴通讯2021校招笔试测评攻略
- 笔试攻略 - 1 笔试岗位 软件类笔试岗位 软件开发工程师 软件测试工程师 算法工程师 基带开发工程师 技术预研工程师 数据统计分析师 硬件类笔试岗位 硬件开发工程师 硬件测试工程师 FPGA开发 ...
- java考前速成_【学霸分享】教你考前一周学习速成方法!零基础,学习七天,一次性通过中级会计职称考试秘籍!...
计划10.17-10.23进行学习,考前一天休息,对全职复习的考生而言,仅剩七天有效学习时间,学习目的只为过关不为满分,不要慌张,不要担心,按此学习,逢考必过! 方案: 学习日期中级会计实务中级财务管 ...
- ddnspod php 脚本_使用DNSPOD的域名解析实现DDNS域名动态的脚本
摘要 使用shell脚本和dnspod官方提供的api实现域名的ddns动态解析,本脚本只会在ip有改变的时候才对dnspod域名做解析更改,而不是定时去更改.脚本适用Linux和openwrt,前提 ...
- 自动按键脚本_阔怕...按键精灵还能将别人的脚本导入为自己所用
在按键精灵中你可以自己编辑脚本也可以直接导入别人的脚本直接使用.但是按键精灵的脚本文件是按键一定的数据格式保存的,如果单纯地把Q文件里面的内容直接复制到编辑器上是无法识别的.那如何导入别人的脚本? 一 ...
- python sdk怎么用_如何使用七牛Python SDK写一个同步脚本及使用教程
七牛云存储的 Python 语言版本 SDK(本文以下称 Python-SDK)是对七牛云存储API协议的一层封装,以提供一套对于 Python 开发者而言简单易用的开发工具.Python 开发者在对 ...
- python gui界面启动脚本、点击按钮执行脚本_如何使用PyQt在按钮单击上调用python脚本...
我使用PyQt4创建了一个带有按钮的表单.在此按钮上,我想调用另一个如下所示的python脚本: File1.py: import sys from PyQt4 import QtCore, QtGu ...
- java面试突击_两个月!终于把《JavaGuide面试突击》v3.0肝出来了!
ps:封面是这个版本增加的夜间阅读模式,后面会详细介绍这个版本更新的内容.请务必要看完后文的内容,很重要! 距离上一个版本的发布已经过去了 2 个多月,相信很多小伙伴也和我一样期待着新版本的发布. 这 ...
最新文章
- 练手WPF(三)——扫雷小游戏的简易实现(中)
- python相同程序执行结果不同_原理相同只是精简了的python代码,运行结果不同是为什么...
- PPT科研绘图之棱台
- PHP,mysql,Linux,CI框架学习总结
- cordova 安卓文件多选_LAMMPS从研一到延毕:利用MS建模生成反应力场所需的data文件...
- 现在做网络推广,哪种方式最好?
- 软件测试实用技术与常用模板:内容提要
- 漫谈ASP.NET设计中的性能优化问题
- k8s Deployment
- php 小数 精度不准,php小数精度问题
- MSP430 MSP430单片机软件开发集成环境CCS
- oracle数据转换,Oracle数据库转换函数
- Oracle 定时任务详解(dbms_scheduler)
- linux中打zip命令,zip命令 - Linux命令大全 | linux教程
- 什么是搜索引擎优化及其重要性
- Java中的魔法值介绍及解决办法
- FileNotFoundError: Could not find module ‘C:\Users\Yolanda\anaconda3\envs\python38\lib\site-packages
- FME在变更地类流向统计中的应用
- 战地2服务器地图修改,《战地2》地图修改秘籍
- matlab图像算子变换,拉布拉斯算子锐化图像的空域和频域--matlab实现
热门文章
- proposal中文翻译_PROPOSAL 是什么意思_ PROPOSAL 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- Qt开发 之 删除文件或文件夹到回收站(详解)
- MATLAB gcf图窗保存图像,黑色背景/透明背景
- HDU - 3533 Escape
- Python——循环遍历多个列表实现字符的组合拼接
- 什么是Apache?Apache是什么意思?
- Linux系统下为WPS添加字体,实现WPS输入中文
- yolov5的首次colab运行
- html特使数字符号,特殊符号大全
- html页面中添加分页符,在生成的HTML中插入分页符.doc