车迷网

标题: 铁道部网站刷火车票的脚本 [打印本页]

作者: 立花里子    时间: 2012-1-6 12:38
标题: 铁道部网站刷火车票的脚本
/*                12306 Auto Query => A javascript snippet to help you book tickets online.                Copyright (C) 2011 Jingqin Lynn                                Includes jQuery                Copyright 2011, John Resig                Dual licensed under the MIT or GPL Version 2 licenses.                http://jquery.org/license                Includes Sizzle.js                http://sizzlejs.com/                Copyright 2011, The Dojo Foundation                Released under the MIT, BSD, and GPL Licenses.                                This program is free software: you can redistribute it and/or modify                it under the terms of the GNU General Public License as published by                the Free Software Foundation, either version 3 of the License, or                (at your option) any later version.                This program is distributed in the hope that it will be useful,                but WITHOUT ANY WARRANTY; without even the implied warranty of                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                GNU General Public License for more details.                You should have received a copy of the GNU General Public License                along with this program.  If not, see <http://www.gnu.org/licenses/>.*/// ==UserScript==// @name                 12306 Auto Query// @namespace                http://project.quietmusic.org/j/// @description        A javascript snippet to help you book tickets online.// @include                *://dynamic.12306.cn/otsweb/order/querySingleAction.do*// ==/UserScript==function withjQuery(callback, safe){        if(typeof(jQuery) == "undefined") {                var script = document.createElement("script");                script.type = "text/javascript";                script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";                if(safe) {                        var cb = document.createElement("script");                        cb.type = "text/javascript";                        cb.textContent = "jQuery.noConflict();(" + callback.toString() + ")(jQuery);";                        script.addEventListener('load', function() {                                document.head.appendChild(cb);                        });                }                else {                        var dollar = undefined;                        if(typeof($) != "undefined") dollar = $;                        script.addEventListener('load', function() {                                jQuery.noConflict();                                $ = dollar;                                callback(jQuery);                        });                }                document.head.appendChild(script);        } else {                callback(jQuery);        }}withjQuery(function($){        var isTicketAvailable = false;        //The table for displaying tickets        var tbl = $(".obj")[0];        tbl.addEventListener("DOMNodeInserted", function() {                if(checkTickets(event.target))                {                        isTicketAvailable = true;                        highLightRow(event.target);                }                tbl.firstAppend=false;        }, true);        //Trigger the button        var doQuery = function() {                displayQueryTimes(queryTimes++);                isTicketAvailable = false;                tbl.firstAppend = true;                g.firstRemove = true;                document.getElementById(isStudentTicket ? "stu_submitQuery" : "submitQuery").click();        }        var checkTickets = function(row) {                var hasTicket = false;                var canBook = true;                $("td input[type=button]", row).each(function(i, e) {                        if(e.classList.contains("yuding_x")) {                                canBook = false;                        }                });                if(!canBook) return false;                $("td", row).each(function(i, e) {                        if(ticketType[i-1]) {                                var info = e.innerText.trim();                                if(info != "--" && info != "无") {                                        hasTicket = true;                                        highLightCell(e);                                }                        }                });                return hasTicket;        }        //The box into which the message is inserted.        var g = document.getElementById("gridbox");        //When the message is removed, the query should be completed.        g.addEventListener("DOMNodeRemoved", function() {                if(g.firstRemove) {                        g.firstRemove = false;                        if (isTicketAvailable) {                                if (isAutoQueryEnabled)                                        document.getElementById("refreshButton").click();                                onticketAvailable(); //report                        }                        else {                                 //wait for the button to become valid                        }                }        }, true);        //hack into the validQueryButton function to detect query        var _validQueryButton = validQueryButton;        validQueryButton = function() {                _validQueryButton();                if(isAutoQueryEnabled) doQuery();        }        var queryTimes = 0; //counter        var isAutoQueryEnabled = false; //enable flag        //please DIY:        var onticketAvailable = function() {                if(Audio) {                        new Audio("http://www.w3school.com.cn/i/song.ogg").play();                }                else {                        alert("可以订票了!")                }        }        var highLightRow = function(row) {                $(row).css("background-color", "red");        }        var highLightCell = function(cell) {                $(cell).css("background-color", "blue");        }        var displayQueryTimes = function(n) {                document.getElementById("refreshTimes").innerText = n;        };        var isStudentTicket = false;        //Control panel UI        $("<div/>").attr("style", "position:fixed;right:0;bottom:0;z-index:999;").append(                $("<input/>").attr("type", "checkBox").change(function(){                        isStudentTicket = this.checked;                })        ).append(                $("<span/>").text("学生")        ).append(                $("<button/>").attr("id", "refreshButton").text("自动刷新").click(function() {                        if(!isAutoQueryEnabled) {                                isAutoQueryEnabled = true;                                doQuery();                                this.innerText="停止刷新";                        }                        else {                                isAutoQueryEnabled = false;                                this.innerText="自动刷新";                        }                })        ).append(                $("<p/>").text("尝试次数:").append(                        $("<span/>").attr("id", "refreshTimes").text("0")                )        ).appendTo(document.body);        //Ticket type selector & UI        var ticketType = new Array();        $(".hdr tr:eq(2) td").each(function(i,e) {                ticketType.push(false);                if(i<3) return;                ticketType = true;                var c = $("<input/>").attr("type", "checkBox").attr("checked", "true");                c[0].ticketTypeId = i;                c.change(function() {                        ticketType[this.ticketTypeId] = this.checked;                }).appendTo(e);        });}, true);













=======================华丽的分割线=======================

1. 只在【 Chromium 】上调试过。
2. 不支持自动订票。有票后请手工操作。


1. 安装脚本  https://gist.github.com/raw/1554 ... 7625c/12306.user.js

用google的chromium浏览器直接打开此脚本就可以安装

【必须用google的浏览器】


2. 访问  https://dynamic.12306.cn/otsweb/
3. 登录并转到『车票预订』选项卡。
4. 填写信息,还可以在下方表格处选择想要的票的类别。 ( new )
5. 右下方选择是否要学生票,然后点自动刷新。
6. 程序会自动查询,当有票时会播放音乐提示,并且会高亮有票的车次。
7. 在查询期间你可以做其他事情,但要保持标签页开启(是否是当前标签页无所谓)。

[ 本帖最后由 立花里子 于 2012-1-6 12:40 编辑 ]

订火车票脚本.tar

2.46 KB, 下载次数: 97

附送源文件


作者: 零零兔    时间: 2012-1-6 12:49
难怪农民工说网上购票不公平。
作者: 菲常人    时间: 2012-1-6 15:20
javascript,好奈没看原代码了,带翻个眼镜先。。。。。。
作者: 麦香鱼    时间: 2012-8-29 12:54

作者: 农民八八    时间: 2012-8-29 13:23
铁随便更新下就废了
作者: 广州通    时间: 2012-8-29 22:07
每两周都火车来回的,网站订票最好用,很实在。




欢迎光临 车迷网 (http://47.75.87.77/) Powered by Discuz! X3.2