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

article/2025/8/19 20:22:15

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

我也在刷票,不过发现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);
}//打开订票助手
if($("#sear-sel .up").length==0){$("#sear-sel").append($('<a href="#nogo" class="up"></a>'));$(".sear-sel .section.clearfix:hidden").show()$("#sear-sel .quick-gif").show();
}

自设置参数脚本,以以下信息为例

购票人:张三、李四,
乘车日期: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://chatgpt.dhexx.cn/article/uD2Ac65e.shtml

相关文章

搞技术的要不要学习财务知识

越是大型的集团或者企业&#xff0c;公司里面设立的部门就越多&#xff0c;也越细化&#xff0c;各部门之间既相互独立管理&#xff0c;又是相互的辅助支持&#xff0c;所以在工作中经常遇到这样的一个问题&#xff0c;就是做技术的要不要学习财务知识。这个问题其实就是把技术…

财务管理的一般常识

2019独角兽企业重金招聘Python工程师标准>>> 财务总监助理在协助财务总监做好企业理财规划与管理的时候需要首先了解以下的有关知识&#xff1a; —、财务和企业财务管理的概念 所谓“财务”&#xff0c;通俗地讲就是有关“钱财”的事务。从事一切事业都离不开钱财&…

财政系统基本知识

文章目录 一、基础数据1、单位管理修改2、部门信息 二、资产账1、卡片登记&#xff08;新增资产&#xff09;2、新增资产入账&#xff0c;也可批量入账3、卡片变动1&#xff09;普通信息变动 >>>普通信息确认2&#xff09;资产价值变动3&#xff09;资产大类变动4&…

身为企业管理者,必须了解的财务知识

财务管理工作是企业管理工作中的核心内容&#xff0c;也是企业管理工作中的难点内容&#xff0c;对于集团企业来讲更是任务艰巨而又问题频出。然而&#xff0c;信息时代的来临为解决和完善企业财务管理问题提供了新思路&#xff0c;就集团企业而言&#xff0c;财务管理信息化基…

业务:财务会计业务知识

一、引言 会计是以货币为主要计量单位&#xff0c;对企业、事业、机关、团体及其他经济组织的经济活动进行记录、计算、控制、分析、报告&#xff0c;以提供财务和管理信息的工作。会计的职能主要是反映和控制经济活动过程&#xff0c;保证会计信息的合法、真实、准确和完整&a…

软件测试分类

一、软件测试的分类 1、按开发阶段&#xff1a;单元测试、集成测试、系统测试、验收测试 2、按测试实施组织&#xff1a;α、β、第三方 3、按测试执行方式&#xff1a;静态测试、动态测试 4、按是否查看代码&#xff1a;黑盒测试、白盒测试、灰盒测试 5、按是否手工执行划分&a…

【软件工程】软件测试报告——软件测试说明书

【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘畅、刘铠铭、张清望、卢家伟四位同学共同完成。 文章目录 1 引言1.1 编写目的1.2 背景1.3 术语和缩略词1.4 参考资料 2 测试用例设计3 测试结果及分析3.1 测试环境3.2 测试用例执行3.3 结论及建议 1 引言 1.1 编…

软件测试模型有哪些?

目录 1、瀑布模型 2、V模型 3、W模型 4、H模型 5、X模型 6、前置测试模型 1、瀑布模型 瀑布模型&#xff08;Waterfall Model&#xff09;是一个软件生命周期模型&#xff0c;开发过程是通过设计一系列阶段顺序展开的&#xff0c;从系统需求分析开始直到产品发布和维护&…

1.软件测试-----软件测试的基本概念

目录 一、软件测试的基本概念 1.什么是软件测试&#xff1f; 2.软件测试和软件开发的区别&#xff1f; 3.什么是需求&#xff1f; 4.什么是BUG&#xff1f; 5.如何描述一个BUG? 6.BUG的级别&#xff1f; 7.BUG的生命周期&#xff1f; 8.软件测试的生命周期&#xff1…

软件测试菜鸟入门

更新版&#xff1a;https://weltest.blog.csdn.net/article/details/110529745 视频课程&#xff1a;https://edu.csdn.net/course/detail/23459 目录 前言... 3 软件测试流程... 3 提取测试点... 4 设计测试用例与用例评审... 4 测试类型选择... 5 测试执行与缺陷管理.…

什么是软件测试?

什么是软件测试&#xff1f; 软件测试的定义&#xff1a;在一定条件下对软件进行操作&#xff0c;发现软件的问题&#xff0c;提高软件的质量。 软件测试在开发中的有着重要地位。软件测试在各阶段的完成相应的任务&#xff0c;需求测试&#xff0c;架构测试&#xff0c;详细测…

2022最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了

前言 鉴于目前测试就业越来越严峻&#xff0c;内卷也成了测试领域的代名词了。我的一个HR朋友告诉我&#xff0c;由于门槛较低&#xff0c;现在普通测试岗&#xff08;偏功能&#xff09;的投递比已经将近100&#xff0c;也就是一个岗位差不多有百分简历投进来。 所以现在还想…

想自学软件测试?一般人我还是劝你算了吧。。。

本人7年测试经验&#xff0c;在学测试之前对电脑的认知也就只限于上个网&#xff0c;玩个办公软件。这里不能跑题&#xff0c;我为啥说&#xff1a;自学软件测试&#xff0c;一般人我还是劝你算了吧&#xff1f;因为我就是那个一般人&#xff01; 软件测试基础真的很简单&…

【云服务器】免费云服务器推荐

你还在因为阿里云、腾讯云等的云服务器价格昂贵而放弃自己建站、建服务器的梦想吗&#xff1f;还在因为阿里云、腾讯云推出的免费产品不能永久使用而烦恼吗&#xff1f; 优豆云就能帮你解决。重点是&#xff0c;它提供的云服务器是免费的&#xff01;&#xff01;&#xff01;…

如何操作申请免费云服务器?

2核4G、4核8G服务器申请操作&#xff1a; 第一步&#xff1a; 注册天翼云账号通过以下链接 注册账号https://www.ctyun.cn/agent/#/invitation/20753574或者扫二维码注册 第二步&#xff1a; 注册号账号进行实名认证 个人用户可通过“身份证认证”&#xff08;扫码认证&…

云服务服务器免费使用

写作目的 最近买了个2核4G的云服务器&#xff0c;自己平时就是写个demo。感觉服务器资源浪费了&#xff0c;所以搭建了一些测试环境方便小伙伴使用。 云服务器免费使用 注意&#xff1a;仅限普通用户 ip:114.115.208.175 用户名&#xff1a;marenlvdou 密码&#xff1a;lvd…

2021各厂免费云服务器申请攻略(阿里云/腾讯云/华为云)

阿里云腾讯云华为云一直都有免费云服务器提供&#xff0c;企业用户个人用户可以申请的免费云服务器配置及免费时长都不同&#xff0c;云服务器吧来详细说下阿里云免费云服务器、腾讯云免费云服务器和华为云免费服务器申请地址、申请条件及申请攻略&#xff1a; 阿里云免费云服…

银河麒麟操作系统添加字体

麒麟操作系统之字体管理器 我们在工作或者制图时&#xff0c;经常需要一些新的字体&#xff0c;你是否时常因为不知如何添加缺失的字体而苦恼呢&#xff1f;针对这一痛点&#xff0c;我们今日便讲解应该如何给电脑添加字体~ 我们将图文相结合的方式&#xff0c;与诸君分享麒麟操…

银河麒麟v10服务器操作系统安装配置

virtualbox设置 镜像下载地址&#xff1a;https://www.kylinos.cn/scheme/server.html 网卡这里给了两张&#xff0c;一张nat模式&#xff0c;一张选择仅主机模式 系统安装 接下来就可以启动虚拟机进入系统安装步骤&#xff0c;安装过程感觉跟centos7.5基本一模一样 为了方…

银河麒麟操作系统rpm安装无反应

操作系统&#xff1a;4.19.90-17.ky10.aarch64 因操作系统不在互联网环境中&#xff0c;且系统中没有telnet功能&#xff0c;所以下载了rpm包上传到服务器上安装。但安装时异常&#xff0c;一直无反应。只能kill掉进程。 解决方案&#xff1a; 进入/var/lib/rpm/目录下 删掉…