- 浏览: 648558 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (310)
- C&C++ (14)
- Java (52)
- Python (13)
- Web (10)
- Tomcat (2)
- Struts2 (2)
- Spring (3)
- Hibernate (11)
- SWT (1)
- Linux (35)
- WebService (1)
- 工具 (3)
- 数据库 (10)
- 开源项目 (3)
- 搜索技术 (4)
- 链接记录 (3)
- 搜集信息 (12)
- 工作笔记 (16)
- 星星点点 (20)
- 英文片语 (7)
- 读书笔记 (3)
- 自考资料 (3)
- 习题自解 (1)
- 一例一课 (0)
- 运动积累 (1)
- 留档 (0)
- SQL (5)
- JPA (1)
- JSP (3)
- JSON (1)
- Javascript (5)
- Excel (1)
- vbox (3)
- 虚拟机 (1)
- nat (1)
- secureCRT (1)
- centos (1)
- ssh (1)
- ide (1)
- hive (2)
- impala (1)
- ascii (1)
- redis (1)
- seckill (1)
- nginx (2)
- git (0)
- mq (1)
- maven (1)
- java并发包 (1)
- 阅源 (1)
- mybatis (1)
最新评论
-
dotjar:
awk -F "/" '{print $3 ...
@Marked-linux命令使用 cut/sort/uniq -
DEMONU:
直接将要删除的key记下来,遍历完了,在删除
@Marked-Java 遍历Map时 删除元素 -
LeeXiao:
感谢分享
@Marked-Java 遍历Map时 删除元素 -
nicegege:
受益匪浅
mysql char varchar -
nicegege:
受益匪浅
@Maked-mysql使用规范
12306.cn买票,难死了,登录登录登录。。。
现在不用了。。。
js插件+chrome浏览器:
/* * 12306 Auto Query => A javascript snippet to help you book tickets online. * 12306 Booking Assistant * Copyright (C) 2011 Hidden * * 12306 Auto Query => A javascript snippet to help you book tickets online. * Copyright (C) 2011 Jingqin Lynn * * 12306 Auto Login => A javascript snippet to help you auto login 12306.com. * Copyright (C) 2011 Kevintop * * Includes jQuery * Copyright 2011, John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * 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 Booking Assistant // @version 1.3.10 // @author zzdhidden@gmail.com // @namespace https://github.com/zzdhidden // @description 12306 订票助手之(自动登录,自动查票,自动订单) // @include *://dynamic.12306.cn/otsweb/* // @require https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js // ==/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, window);"; 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, window); }); } document.head.appendChild(script); } else { setTimeout(function() { //Firefox supports callback(jQuery, typeof unsafeWindow === "undefined" ? window : unsafeWindow); }, 30); } } withjQuery(function($, window){ $(document).click(function() { if( window.webkitNotifications && window.webkitNotifications.checkPermission() != 0 ) { window.webkitNotifications.requestPermission(); } }); function notify(str, timeout, skipAlert) { if( window.webkitNotifications && window.webkitNotifications.checkPermission() == 0 ) { var notification = webkitNotifications.createNotification( "http://www.12306.cn/mormhweb/images/favicon.ico", // icon url - can be relative '订票', // notification title str ); notification.show(); if ( timeout ) { setTimeout(function() { notification.cancel(); }, timeout); } return true; } else { if( !skipAlert ) { alert( str ); } return false; } } function route(match, fn) { if( window.location.href.indexOf(match) != -1 ) { fn(); }; } function query() { //query var isTicketAvailable = false; var firstRemove = false; window.$ && window.$(".obj:first").ajaxComplete(function() { $(this).find("tr").each(function(n, e) { if(checkTickets(e)){ isTicketAvailable = true; highLightRow(e); } }); if(firstRemove) { firstRemove = false; if (isTicketAvailable) { if (isAutoQueryEnabled) document.getElementById("refreshButton").click(); onticketAvailable(); //report } else { //wait for the button to become valid } } }).ajaxError(function() { if(isAutoQueryEnabled) doQuery(); }); //hack into the validQueryButton function to detect query var _delayButton = window.delayButton; window.delayButton = function() { _delayButton(); if(isAutoQueryEnabled) doQuery(); } //Trigger the button var doQuery = function() { displayQueryTimes(queryTimes++); firstRemove = true; document.getElementById(isStudentTicket ? "stu_submitQuery" : "submitQuery").click(); } var $special = $("<input type='text' />") var checkTickets = function(row) { var hasTicket = false; var v1 = $special.val(); if( v1 ) { var v2 = $.trim( $(row).find(".base_txtdiv").text() ); if( v1.indexOf( v2 ) == -1 ) { return false; } } if( $(row).find("td input.yuding_x[type=button]").length ) { return false; } $("td", row).each(function(i, e) { if(ticketType[i-1]) { var info = $.trim($(e).text()); if(info != "--" && info != "无") { hasTicket = true; highLightCell(e); } } }); return hasTicket; } var queryTimes = 0; //counter var isAutoQueryEnabled = false; //enable flag //please DIY: var audio = null; var onticketAvailable = function() { if(window.Audio) { if(!audio) { audio = new Audio("http://www.w3school.com.cn/i/song.ogg"); audio.loop = true; } audio.play(); notify("可以订票了!", null, true); } else { notify("可以订票了!"); } } var highLightRow = function(row) { $(row).css("background-color", "#D1E1F1"); } var highLightCell = function(cell) { $(cell).css("background-color", "#2CC03E"); } var displayQueryTimes = function(n) { document.getElementById("refreshTimes").innerHTML = n; }; var isStudentTicket = false; //Control panel UI var ui = $("<div>请先选择好出发地,目的地,和出发时间。 </div>") .append( $("<input id='isStudentTicket' type='checkbox' />").change(function(){ isStudentTicket = this.checked; }) ) .append( $("<label for='isStudentTicket'></label>").html("学生票 ") ) .append( $("<button style='padding: 5px 10px; background: #2CC03E;border-color: #259A33;border-right-color: #2CC03E;border-bottom-color:#2CC03E;color: white;border-radius: 5px;text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.2);'/>").attr("id", "refreshButton").html("开始刷票").click(function() { if(!isAutoQueryEnabled) { isTicketAvailable = false; if(audio && !audio.paused) audio.pause(); isAutoQueryEnabled = true; doQuery(); this.innerHTML="停止刷票"; } else { isAutoQueryEnabled = false; this.innerHTML="开始刷票"; } }) ) .append( $("<span>").html(" 尝试次数:").append( $("<span/>").attr("id", "refreshTimes").text("0") ) ) .append( //Custom ticket type $("<div>如果只需要刷特定的票种,请在余票信息下面勾选。</div>") .append($("<a href='#' style='color: blue;'>只勾选坐票 </a>").click(function() { $(".hdr tr:eq(2) td").each(function(i,e) { var val = this.innerHTML.indexOf("座") != -1; var el = $(this).find("input").attr("checked", val); el && el[0] && ( ticketType[el[0].ticketTypeId] = val ); }); return false; })) .append($("<a href='#' style='color: blue;'>只勾选卧铺 </a>").click(function() { $(".hdr tr:eq(2) td").each(function(i,e) { var val = this.innerHTML.indexOf("卧") != -1; var el = $(this).find("input").attr("checked", val); el && el[0] && ( ticketType[el[0].ticketTypeId] = val ); }); return false; })) ) .append( $("<div>限定出发车次:</div>") .append( $special ) .append( "不限制不填写,限定多次用逗号分割,例如: G32,G34" ) ); var container = $(".cx_title_w:first"); container.length ? ui.insertBefore(container) : ui.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[i] = true; var c = $("<input/>").attr("type", "checkBox").attr("checked", true); c[0].ticketTypeId = i; c.change(function() { ticketType[this.ticketTypeId] = this.checked; }).appendTo(e); }); } route("querySingleAction.do", query); route("myOrderAction.do?method=resign", query); route("confirmPassengerResignAction.do?method=cancelOrderToQuery", query); route("loginAction.do?method=init", function() { if( !window.location.href.match( /init$/i ) ) { return; } //login var url = "https://dynamic.12306.cn/otsweb/loginAction.do?method=login"; var queryurl = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=init"; //Check had login, redirect to query url if( window.parent && window.parent.$ ) { var str = window.parent.$("#username_ a").attr("href"); if( str && str.indexOf("sysuser/user_info") != -1 ){ window.location.href = queryurl; return; } } function submitForm(){ var submitUrl = url; $.ajax({ type: "POST", url: submitUrl, data: { "loginUser.user_name": $("#UserName").val() , "user.password": $("#password").val() , "randCode": $("#randCode").val() }, beforeSend: function( xhr ) { try{ xhr.setRequestHeader('X-Requested-With', {toString: function(){ return ''; }}); xhr.setRequestHeader('Cache-Control', 'max-age=0'); xhr.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); }catch(e){}; }, timeout: 30000, //cache: false, //async: false, success: function(msg){ //密码输入错误 //您的用户已经被锁定 if ( msg.indexOf('请输入正确的验证码') > -1 ) { alert('请输入正确的验证码!'); } else if ( msg.indexOf('当前访问用户过多') > -1 ){ reLogin(); } else if( msg.match(/var\s+isLogin\s*=\s*true/i) ) { notify('登录成功,开始查询车票吧!'); window.location.replace( queryurl ); } else { msg = msg.match(/var\s+message\s*=\s*"([^"]*)/); if( msg && msg[1] ) { alert( msg && msg[1] ); } else { reLogin(); } } }, error: function(msg){ reLogin(); } }); } var count = 1; function reLogin(){ count ++; $('#refreshButton').html("("+count+")次登录中..."); setTimeout(submitForm, 2000); } //初始化 $("#subLink").after($("<a href='#' style='padding: 5px 10px; background: #2CC03E;border-color: #259A33;border-right-color: #2CC03E;border-bottom-color:#2CC03E;color: white;border-radius: 5px;text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.2);'/>").attr("id", "refreshButton").html("自动登录").click(function() { count = 1; $(this).html("(1)次登录中..."); //notify('开始尝试登录,请耐心等待!', 4000); submitForm(); return false; })); alert('如果使用自动登录功能,请输入用户名、密码及验证码后,点击自动登录,系统会尝试登录,直至成功!'); }); route("confirmPassengerAction.do", submit); route("confirmPassengerResignAction.do", submit); function submit() { /** * Auto Submit Order * From: https://gist.github.com/1577671 * Author: kevintop@gmail.com */ //Auto select the first user when not selected if( !$("input._checkbox_class:checked").length ) { try{ //Will failed in IE $("input._checkbox_class:first").click(); }catch(e){}; } //passengerTickets var userInfoUrl = 'https://dynamic.12306.cn/otsweb/order/myOrderAction.do?method=queryMyOrderNotComplete&leftmenu=Y'; var count = 1, freq = 1000, doing = false, timer, $msg = $("<div style='padding-left:470px;'></div>"); function submitForm(){ timer = null; //更改提交列车日期参数 //var wantDate = $("#startdatepicker").val(); //$("#start_date").val(wantDate); //$("#_train_date_str").val(wantDate); jQuery.ajax({ url: $("#confirmPassenger").attr('action'), data: $('#confirmPassenger').serialize(), beforeSend: function( xhr ) { try{ xhr.setRequestHeader('X-Requested-With', {toString: function(){ return ''; }}); xhr.setRequestHeader('Cache-Control', 'max-age=0'); xhr.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); }catch(e){}; }, type: "POST", timeout: 30000, success: function( msg ) { //Refresh token var match = msg && msg.match(/org\.apache\.struts\.taglib\.html\.TOKEN['"]?\s*value=['"]?([^'">]+)/i); var newToken = match && match[1]; if(newToken) { $("input[name='org.apache.struts.taglib.html.TOKEN']").val(newToken); } if( msg.indexOf('payButton') > -1 ) { //Success! var audio; if( window.Audio ) { audio = new Audio("http://www.w3school.com.cn/i/song.ogg"); audio.loop = true; audio.play(); } notify("恭喜,车票预订成!", null, true); setTimeout(function() { if( confirm("车票预订成,去付款?") ){ window.location.replace(userInfoUrl); } else { if(audio && !audio.paused) audio.pause(); } }, 100); return; }else if(msg.indexOf('未处理的订单') > -1){ notify("有未处理的订单!"); window.location.replace(userInfoUrl); return; } var reTryMessage = [ '用户过多' , '确认客票的状态后再尝试后续操作' , '请不要重复提交' , '没有足够的票!' , '车次不开行' ]; for (var i = reTryMessage.length - 1; i >= 0; i--) { if( msg.indexOf( reTryMessage[i] ) > -1 ) { reSubmitForm( reTryMessage[i] ); return; } }; //Parse error message msg = msg.match(/var\s+message\s*=\s*"([^"]*)/); stop(msg && msg[1] || '出错了。。。。 啥错? 我也不知道。。。。。'); }, error: function(msg){ reSubmitForm("网络错误"); } }); }; function reSubmitForm(msg){ if( !doing )return; count ++; $msg.html("("+count+")次自动提交中... " + (msg || "")); timer = setTimeout( submitForm, freq || 50 ); } function stop ( msg ) { doing = false; $msg.html("("+count+")次 已停止"); $('#refreshButton').html("自动提交订单"); timer && clearTimeout( timer ); msg && alert( msg ); } function reloadSeat(){ $("select[name$='_seat']").html('<option value="M" selected="">一等座</option><option value="O" selected="">二等座</option><option value="1">硬座</option><option value="3">硬卧</option><option value="4">软卧</option>'); } //初始化 if($("#refreshButton").size()<1){ // //重置后加载所有席别 // $("select[name$='_seat']").each(function(){this.blur(function(){ // alert(this.attr("id") + "blur"); // })}); ////初始化所有席别 //$(".qr_box :checkbox[name^='checkbox']").each(function(){$(this).click(reloadSeat)}); //reloadSeat(); //日期可选 //$("td.bluetext:first").html('<input type="text" name="orderRequest.train_date" value="' +$("td.bluetext:first").html()+'" id="startdatepicker" style="width: 150px;" class="input_20txt" onfocus="WdatePicker({firstDayOfWeek:1})" />'); $(".tj_btn").append($("<a style='padding: 5px 10px; background: #2CC03E;border-color: #259A33;border-right-color: #2CC03E;border-bottom-color:#2CC03E;color: white;border-radius: 5px;text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.2);'></a>").attr("id", "refreshButton").html("自动提交订单").click(function() { //alert('开始自动提交订单,请点确定后耐心等待!'); if( this.innerHTML.indexOf("自动提交订单") == -1 ){ //doing stop(); } else { if( window.submit_form_check && !window.submit_form_check("confirmPassenger") ) { return; } count = 0; doing = true; this.innerHTML = "停止自动提交"; reSubmitForm(); } return false; })); $(".tj_btn").append("自动提交频率:") .append($("<select id='freq'><option value='50' >频繁</option><option value='500' selected='' >正常</option><option value='2000' >缓慢</option></select>").change(function() { freq = parseInt( $(this).val() ); })) .append($msg); //alert('如果使用自动提交订单功能,请在确认订单正确无误后,再点击自动提交按钮!'); } }; }, true);
这就是源代码,有时间咱也学习学习这份文件。
发表评论
-
@Marked-CORS跨域请求:前后端分离
2016-12-22 16:42 16791. 请求过滤器: /** ... -
HTTP状态码
2016-02-03 16:26 920package org.apache.http; /* ... -
【转载】JSON和JSONP
2016-02-02 16:56 419http://www.cnblogs.com/dowinn ... -
servlet和struts2的请求斜杠问题
2011-10-21 23:45 12101.servlet接受request: <1>发 ... -
JSP 静态包含的乱码问题
2011-09-15 17:42 1505<%@ include file="./mai ... -
HttpServletRequest request 相关方法 得到路径
2011-09-02 19:10 1580/* --------------------------PO ... -
eclipse中 js 报错
2011-09-02 11:38 2737eclipse中javascript报错问题处理: 三个地方 ... -
中文乱码处理
2011-08-31 19:16 881有好几个地方: 1.JSP设置 contentType ... -
@Marked-common-fileUpload 上传图片到服务器端
2011-07-29 16:06 4228今天要用到一个图片上传的,听说Struts2就是用的这个,啃 ...
相关推荐
操作系统--多线程买票---python--有窗体界面,就是操作系统课上的一个课外练习,传上去,保存下来。 exe文件在 map文件夹-->dict文件夹-->map文件夹-->map.exe 已经打包好了,没有python环境的电脑上也...
《12306铁路买票辅助软件:轻松购票指南》 在当今信息化时代,铁路购票已经离不开网络,12306官网作为中国铁路官方购票平台,为大众提供了便捷的购票服务。然而,对于非专业人员来说,尤其是在高峰期抢购火车票时,...
【Java HttpClient库在12306购票应用中的实践】 1. Java HttpClient介绍 Java HttpClient是Apache HttpClient项目的一部分,是一个强大的HTTP客户端API,允许开发者在Java应用程序中执行HTTP请求。它支持各种HTTP...
8. **抢票插件与12306官方APP**:由于热门线路车票往往在开售后很快售罄,一些第三方软件开发了抢票插件辅助购票。不过,12306官方也推出了自己的APP,提供实时推送余票信息和自动购票功能,以提高购票成功率。 9. ...
鉴于2019年12306更新了抢票规则和候补策略,不管能不能帮助抢到票,都希望本工具能作为一个单点买票工具为大家在抢票思路上能做个参考(由于12306实测抢票还不如候补,本项目不再维护,有缘人可自行修改再使用) ...
CRX文件是Chrome插件的打包格式,包含了脚本的代码、资源和配置信息。用户只需将CRX文件拖拽到浏览器的扩展管理界面即可安装使用。 3. **User.js文件** "12306_ticket_helper.user.js" 是一种用户脚本,通常用于...
用于文章的代码展示
http://blog.csdn.net/g290095142/article/details/78090482博文地址 http://blog.csdn.net/g290095142/article/details/78090482
标题中的“12306自动登录自动订票脚本 2012年最新”指的是一款在2012年开发的自动化工具,专为12306中国铁路客户服务中心网站设计,用于自动完成登录和火车票预订的过程。12306是中国铁路官方的在线购票平台,由于其...
12306 快手 V1.10 【使用说明】 1.先执行wqm.exe 2.登录铁路官网,输入相关信息。登录到查询车次界面。 3.不记录任何信息,不提供自动登录功能,请自行登录。 4.执行12306.exe 有任何杀毒情况,请设置“不允许”...
【描述】中提到的"浏览器插件运行",意味着该软件需要安装在用户的网络浏览器上,以便在抢购时自动执行特定的任务,如快速填写购买信息、自动刷新页面或监控库存变化等。浏览器插件通常以扩展的形式存在,可以与...
双击main.exe文件后会弹出窗口将信息填入框中,其他的都好理解"第几张票"的意思是进12306后从现有的第一个车开始数,要买的第几个票。也可以定时。自动化处理验证码需要一些配置先打开yzm_.word文档将所有步骤都配置...
模拟三个人排队买票,张某、李某、赵某买电影票、售票员只有3张5元的钱, 电影票5元钱一张。张某拿20元一张的新人民币排在李的钱买票, 李某排在赵的前面拿一张10元的人民币买票,赵某拿一张5元的人民币买票 ...
### 数据结构课程设计——插队排序买票问题 #### 问题背景与描述 在冬季假期接近春节时,通常会迎来交通高峰期。此时若要在车站购买火车票,往往会遇到排长队的情况。在这种情况下,如果有乘客看到队伍中有认识的...
火车站买票问题代码
本案例“静态代理案例---线程买票”是一个典型的多线程应用,通过模拟售票过程,帮助我们理解如何在Java中实现线程同步与通信。 首先,我们来探讨多线程的基本概念。在单核CPU环境下,多线程并不是真正意义上的同时...
三年级下册数学买票问题PPT,三年级下册数学买票问题
再次强调:本程序只为真正需要买票的朋友提供方便,请勿用于其它非法商业用途,否则一切后果自负,谢谢。 心蓝12306订票助手-Www.SangSan.Cn 本程只为真正需要买票的朋友提供方便,请勿用于其它非法商业用途,...
在Java编程中,多线程买票问题是演示并发控制的经典示例。这个问题旨在展示如何在多个线程共享同一资源(如票库存)时确保数据的一致性和正确性。以下是三种不同方法来解决这个问题: 1. **使用`synchronized`...
这个"多线程java买票系统"是用于教学目的,展示了如何在Java中实现多线程技术来模拟购票过程。下面将详细介绍相关知识点。 1. **线程与并发** 在计算机系统中,线程是程序执行的基本单元,每个线程都有自己的程序...