用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

网友写的抢火车票脚本(Chrome)Version 0.1

2013-01-19 作者: 小蜜锋举报

[javascript]代码库

/**
 * author: jxq
 */

var stationDict =
{
    "广州" : "GZQ",
    "吉安" : "VAG",
    "北京" : "BJP",
    "北京西" : "BXP",
    "太原" : "TYV",
    "深圳" : "SZQ",
    "上海" : "SHH"
};

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

function queryTickets(fromStation, toStation, trainDate)
{
    
    var fromStationCode = stationDict[fromStation];
    var toStationCode = stationDict[toStation];
    
    var queryUrl = queryUrlTemplate.replace("{trainDate}", trainDate).replace("{fromStationCode}", fromStationCode).replace("{toStationCode}", toStationCode);
    
    // 查询余票
    $.get(queryUrl, function (data)
    {
        // 简单地检查是否有票,如果有票,则data中一定包含文本 btn130_2
        if (data.indexOf("btn130_2") != -1)
        { // 有票
            sendDesktopNotification("有票了亲!", fromStation + " - " + toStation + "有票了!\n快来抢票哈~~");
            clearInterval(myInterval); // 清除轮询,以免烦人
        }
        else
        {
            console.log("不好意思," + fromStation + "-" + toStation + "暂时无票!");
        }
    }
    );
}

// 桌面通知
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();
}

queryTickets("北京", "广州", "2013-02-07");
// 每5秒刷一次票
var myInterval = setInterval(function ()
    {
        queryTickets("北京", "广州", "2013-02-07");
    }, 5000);

/*
使用方法如下:  
1、修改你的出发地、目的地以及出发时间信息,并且配置对应的城市代码(这个自己抓包看,很简单,Chrome network面板或者Fiddler) 
2、登录并打开订票窗口 
3、在控制台输入这段脚本代码 
4、等待好了,每5秒刷一次,没票会在控制台输出信息,有票会弹出桌面通知,具体参考截图 

缺陷 
A、不支持筛选硬座、硬卧等信息,但是要支持很简单,看我的代码就知道了 
B、不支持自动提交订单 
C、只能帮你检查是否有票,有票了还需要你自己去点下查询按钮,然后订票(主要是因为这个按钮在iframe内部,不方便直接操纵) 
D、你的Chrome浏览器可能会遇到
分享自:http://www.oschina.net/code/snippet_111708_17517
*/

[代码运行效果截图]


网友写的抢火车票脚本(Chrome)Version 0.1


网友评论    (发表评论)

共3 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...