java刷票脚本_我来分享一段自己写的刷票脚本 Version 1.0

这是一个使用JavaScript编写的12306自动刷票脚本,Version 1.0,主要功能包括自动加载jQuery,查询余票,以及在找到余票时发送桌面通知并尝试预订。脚本支持多个车站之间的查询,并设置为每5秒检查一次余票。

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值