你距离家只差一个刷票脚本而已——12306刷票脚本升级版

原创 2018年02月06日 12:06:32

马上就要回家了,票还没有。你是否用到了我去年发布的刷票脚本呢。传送门~

我也在刷票,不过发现12306还是发生了一些变化,在使用过程中,发现会自动退出登录。所以对脚本做了一些改动。顺便加了一些新的功能。具体如下:

  1. 防自动退出
  2. 添加刷到票后发起桌面通知
  3. 勾选某些类型的车
  4. 选择发站站点
  5. 选择到站站点
  6. 选择乘车时间

最重要的是前2个功能,第一个功能主要是解决因为12306可能对刷票做了特殊处理,自动刷票一段时间后,session会过期。导致后续刷到票后无法自动提交订单。第二个功能则是方便在刷票时,自动给的桌面提示。毕竟在单位戴耳机工作不太好。其余功能均为减少人为操作的功能。

桌面提醒功能,需要提前在12306网站上开启允许桌面提示的功能。具体操作如图所示:


好了,Talk is cheap, show you the code。

功能脚本:

//记录等待时间  
var waittime=0;

  
//统计等待时间,防止刷新间隔时间短时导致卡住不再刷票
function waitforRestart(){
	if($(".ad-gt").length>0){
		$(".ad-gt").remove();
	}
	if($(".audiojs").length>0){
		$(".audiojs").remove();
	}
    if(!$("#autoSubmit").prop("checked"))return ;  
    if($("#query_ticket").text()=="停止查询"){  
        waittime++;  
    }  
    if(waittime>10){  
        $("#query_ticket").click();  
        setTimeout(function(){  
            waittime=0;  
            if($("#query_ticket").text()=="查询") {  
                $("#query_ticket").click();  
            }  
        },1000);  
    }  
}

//防自动退出-1分钟刷新一次“个人信息”页面,保证登录状态
function preventLogout(){
  setInterval(function(){
    if($(".footer").length>0){
	  $("#footer-my").remove();
      var htmlStr="<iframe id='footer-my' width='0' height='0' src='https://kyfw.12306.cn/otn/index/initMy12306?t="+(new Date().getTime())+"'></iframe>";
      $(".footer").append(htmlStr);
    }
  },1000*30);
}

//添加桌面通知
function showNotice() {
  var timer_desktopNotice = setInterval(function(){
    if($("#tryPlayer").length>0 && $("#tryPlayer").text=="停止提示音乐"){
	  Notification.requestPermission(function (perm) {
        if (perm == "granted") {
            var notification = new Notification("【恭喜恭喜】", {
                dir: "auto",
                lang: "hi",
                tag: "12306刷票提示",
                icon: "https://kyfw.12306.cn/otn/resources/images/ots/favicon.ico",
                body: "恭喜你,终于抢到票了!!!"
            });
			clearInterval(timer_desktopNotice);
        }
      });
	}
  },500);
}

//页面关闭或者跳转时,自动提示(当提供提交票时,自动提示)
$(window).bind('beforeunload',function(){
    Notification.requestPermission(function (perm) {  
        if (perm == "granted") {
            var notification = new Notification("【恭喜恭喜】", {
                dir: "auto",
                lang: "hi",
                tag: "12306刷票提示",
                icon: "https://kyfw.12306.cn/otn/resources/images/ots/favicon.ico",
                body: "恭喜你,终于抢到票了!!!"
            });
        }
    });
	$(window).unbind('beforeunload');
});
  
//注册回调方法  
function callback(fun1,fun2){  
  fun1();  
  fun2();  
}  
  
  
//添加乘车人  
function addBuyer(name){  
  callback($.showSelectBuyer,function(){  
    $("#buyer-list li[p_value^="+name+"]").click();  
    $.closeSelectBuyer();  
  });  
}  
  
//突破限制,添加车次  
function addTrain(trainCode){
  $("#prior_train").append('<span name="prior_train-span" class="sel-box w80">'+trainCode+'<a class="close" href="javascript:" onclick="$.removeSel(this,\''+trainCode+'\',4)"></a></span>');
}  
  
//添加优先席别  
function addSeat(seat){  
  callback($.showSelectSeat, function(){  
    $("#seat-list li[name^="+seat+"]").click();  
    $.closeSelectSeat();  
  });
}

//添加备选日期  
function addDate(date){  
  callback($.showSelectDate, function(){  
    $("#date-list li[name^="+date+"]").click();  
    $.closeSelectDate();  
  });
}
  
//自定义查询区间
function addTimes(startTime,endTime){  
    $("#cc_start_time").append('<option value="'+startTime.replace(":","")+endTime.replace(":","")+'">'+startTime+'--'+endTime+'</option>');  
    $("#cc_start_time option:last").selected();  
}  
  
//根据时间段、车次类型查询所有满足的车次。  
function queryByTimeAndTrainType(){  
  callback($.showYxTrain, function(){  
    var yxTrainTimer = setInterval(function(){  
      if($("#filterTic").length>0){  
        $("#filterTic").prop("checked",true);  
        $("#yxtrain_close").click();   
        clearInterval(yxTrainTimer);  
      }  
    },10);  
  });  
}

//勾选某些类型的车
function selectTrainType(types){
  $("#_ul_station_train_code input").each(function(i,e){
    $(e).prop("checked", false);
  });
  var typelist = types.split("/");
  for(var i=0;i<typelist.length;i++){
    $("input[value='"+typelist[i]+"']").prop("checked",true); 
  }
}

//选择发站站点
function selectFrom(station){
	$("#fromStationText").trigger('keydown');
	$("#fromStationText").val(station);
	$("#fromStationText").trigger('keyup');
	$("#panel_cities div").each(function(i,s){
		var t = $(s).find("span").first();
		if(t.text()==station){
			$(s).trigger('mouseover').trigger('click');
		}
	});
}
//选择到站站点
function selectTo(station){
	$("#toStationText").trigger('keydown');
	$("#toStationText").val(station);
	$("#toStationText").trigger('keyup');
	$("#panel_cities div").each(function(i,s){
		var t = $(s).find("span").first();
		if(t.text()==station){
			$(s).trigger('mouseover').trigger('click');
		}
	});
}
//选择发站-到站站点
function selectFromTo(s1,s2){
	selectFrom(s1);
	selectTo(s2);
}

//选择乘车时间
function selectDate(date){
	$("#train_date").val(date);
}
自设置参数脚本,以以下信息为例

购票人:张三、李四,
乘车日期:2018-02-13
车次类型:高铁、动车
起止车站:北京西-石家庄
车次(6个):D2001、G71、G601、G529、G485、G403、G653
座次:二等座
车次区间:07:00-08:10
开启桌面通知:开启
刷票频率:0.5秒

脚本如下:

//==========================================  
//  以下则根据需求自行配置:  
//      乘车人、车次、席别  
//      仅显示要刷的车次、查询区间、刷新时间  
//==========================================  


//开启桌面通知
showNotice();

//选择北京西-石家庄的车
selectFromTo("北京西","石家庄");
  
//勾选车次类型:G-高铁/城际,D-动车,Z-直达,T-特快,K-快速,QT-其他
selectTrainType("G/D");

//选择乘车日期
selectDate('2018-02-13');


//选择乘车人  
addBuyer("张三");  
addBuyer("'李四'");
  
//手动添加车次,按优先顺序添加(轻松突破5车次限制)  
addTrain("D2001");
addTrain("G71");  
addTrain("G601");  
addTrain("G529");  
addTrain("G485");  
addTrain("G403");  
addTrain("G653");  

//添加备选日期
//addDate('2018-01-01');
  
//添加优先席别,按优先顺序添加  
addSeat("二等座");

//自定义时间区间
addTimes('07:00','08:10');
  
//自动刷新时间0.5s
autoSearchTime=500;
  
//收起订票助手  
$(".up").click();  
  
//启动检测防挂
var timer = setInterval(waitforRestart,autoSearchTime);

//开启防退出功能
preventLogout();

//开始刷票  
if($("#query_ticket").text()=="查询"){
  //仅查看勾选的车次
  $("#filterTic").prop("checked",true);
  var timer2 = setInterval(function(){
    if($("#auto_query").prop("checked") && $("#autoSubmit").prop("checked")&& ($("#filterTic").length==0 || $("#filterTic").prop("checked"))){
	  console.log("----开始刷票-----at:"+new Date().toLocaleString());
      $("#query_ticket").click();
	  if($("#filterTic").length>0){
        $("#filterTic").prop("checked",true);
      }
      clearInterval(timer2);
    }
  },10);
}

整理好自己的脚本后,将这2段js,贴到一起,然后打开这个页面,按步骤操作,即可。

最后恭祝各位早日刷到回家的票~



版权声明:本文为博主原创文章,未经博主允许不得转载。如需转载请声明:【转自 http://blog.csdn.net/xiaoxian8023 】

一段超实用的12306刷票脚本

国庆要回家,车票买迟了,打开12306一看,我的乖乖,全部卖完了,于是想着等系统退票的软件,于是便催生了如下一个脚本,该脚本会在发现有余票的情况下打开选择用户的页面,很简单但是很实用---原来艺术真的...
  • u010700335
  • u010700335
  • 2014年09月27日 13:01
  • 1431

新鲜出炉的12306防挂脚本,有需要的拿走

如需转载请声明:【转自 http://blog.csdn.net/xiaoxian8023 】        一年一度的“抢票运动会”又开始了,期间12306网站承受的压力越来越大,极不...
  • zhonggaorong
  • zhonggaorong
  • 2017年01月04日 15:12
  • 982

你距离家只差一个刷票脚本而已——12306刷票脚本升级版

马上就要回家了,票还没有。你是否用到了我去年发布的刷票脚本呢。传送门~我也在刷票,不过发现12306还是发生了一些变化,在使用过程中,发现会自动退出登录。所以对脚本做了一些改动。顺便加了一些新的功能。...
  • xiaoxian8023
  • xiaoxian8023
  • 2018年02月06日 12:06
  • 44

12306自动登录刷票脚本

12306.cn 可以网上购火车票了,但由于我镇的『国情』决定了春节时分它竟然比电话购票都不靠谱。但是,毕竟它是最方便的,所以在意识到其实这不仅是个技术活、更是一个体力活之后,终于决定博彩众家之长搞这...
  • wwwdbs
  • wwwdbs
  • 2012年01月10日 16:24
  • 6619

学会用脚本来刷刷票

今天一同学找到我问我会不会写刷票的软件,因为这个投票活动有别的学院的人用脚本刷票了 我想,天哪,我们计算机学院都还没用脚本呢都被外院抢先了= = 所以研究研究动手写一下 还是老方法,登陆一下抓下...
  • sinat_18497785
  • sinat_18497785
  • 2016年04月23日 16:11
  • 9932

12306数据库相关脚本

  • 2014年12月25日 15:16
  • 13.41MB
  • 下载

防刷票

基于 PHP,下面介绍防刷票的一些技巧: 1、HTTP_REFERER : 校验 $_SERVER['HTTP_REFERER']。可伪造,使用 CURL。 curl_setopt($ch, ...
  • chunxiaqiudong5
  • chunxiaqiudong5
  • 2015年07月02日 14:03
  • 289

程序员买不到怎么回家? 只能有点小动作了。12306 修改刷票

一年一度的“抢票运动会”又开始了,期间12306网站承受的压力越来越大,极不稳定。随着人们对互联网越来越熟悉,导致大量刷票软件的用户量猛增,大量的访问将12306快压垮了,以至于使用12306自家的刷...
  • qq_36223657
  • qq_36223657
  • 2017年01月04日 11:48
  • 1126

python——刷票脚本

前言现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩。因此,刷票也就应运而生了。此次我们团队参加一个比赛,就需要网上投票决出前几名,作为一位技术人员,当然...
  • u012790625
  • u012790625
  • 2017年06月03日 09:45
  • 3302

客运综合管理系统项目解析-检票管理-检票

第2章 功能实现 2.1 检票管理:    检票管理具有检票(查询/手工检票/报班/出车)、补检(查询/补检,绿色通道:可实现先上车购票,后补检)、检票查询(查询/清空)等功能。 2.1-1 检票:...
  • GX_FengWeiJie
  • GX_FengWeiJie
  • 2015年05月28日 20:39
  • 1058
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:你距离家只差一个刷票脚本而已——12306刷票脚本升级版
举报原因:
原因补充:

(最多只允许输入30个字)