12306 刷票脚本及稳固刷票脚本(防挂)


Posted in Javascript onJanuary 04, 2017

12306 刷票脚本及防挂

       一年一度的“抢票运动会”又开始了,期间12306网站承受的压力越来越大,极不稳定。随着人们对互联网越来越熟悉,导致大量刷票软件的用户量猛增,大量的访问将12306快压垮了,以至于使用12306自家的刷票助手经常崩溃而无法继续刷票。作为一名“资深”的程序员,我无法忍受了,所以果断出手,写了一段js来防挂。

       本来想简单的解决一下刷票自动挂的问题,后来想想写都写了,不如再增加几个有用的功能。

       现在脚本的功能有:

  1. 防止自动刷票崩溃(挂掉后自动重新刷票)
  2. 自定义查询时间区间
  3. 自定义自动刷新时间间隔
  4. 突破5车次限制
  5. 可根据时间段、车类型刷所有满足的车次

       废话不多说,直接上代码吧:

//记录等待时间 
var waittime=0; 
 
//统计等待时间 
function waitforRestart(){ 
  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); 
  } 
} 
 
 
//注册回调方法 
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 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); 
 }); 
}

       以上是提供了修改配置的方法,以下则根据需求自行配置,我们可以选定车次进行刷票,也可以根据时间段+车次类型刷该时间段内的某类车次。分开来说:

       1. 根据车次进行刷票

       具体操作:

  1. 打开12306网站
  2. 选定好车次方向和发车日期
  3. 筛选出要刷新的车次、乘车人、席做等,替换下面的内容
//========================================== 
// 以下则根据需求自行配置: 
//   乘车人、车次、席别 
//   仅显示要刷的车次、查询区间、刷新时间 
//========================================== 
 
//选择乘车人 
addBuyer("张三"); 
addBuyer("'李四(成人)'"); 
addBuyer("'王五(学生)'"); 
 
//手动添加车次,按优先顺序添加(轻松突破5车次限制) 
addTrain("G100"); 
addTrain("G101"); 
addTrain("G102"); 
addTrain("G103"); 
addTrain("G104"); 
addTrain("G105"); 
addTrain("G106"); 
addTrain("G107"); 
 
 
//添加优先席别,按优先顺序添加 
addSeat("二等座"); 
addSeat("一等座"); 
 
//自动刷新时间1s 
autoSearchTime=1000; 
 
//收起订票助手 
$(".up").click(); 
 
//启动检测防挂 
var timer = setInterval(waitforRestart,autoSearchTime); 
 
//开始刷票 
if($("#query_ticket").text()=="查询"){ 
 var timer2 = setInterval(function(){ 
  if($("#auto_query").prop("checked") && $("#autoSubmit").prop("checked") && $("#filterTic").prop("checked")){ 
   $("#query_ticket").click(); 
   clearInterval(timer2); 
  } 
 },10); 
}

       将以上修改好的内容贴到浏览器控制台上(F12或者Ctrl+Shift+J)按回车执行。就可以自动开始刷票了。如果刷新请求timeout了,会由waittime记录超时等待时间,>10时则会自动取消刷新,1秒后重新开始自动刷票。

12306 刷票脚本及稳固刷票脚本(防挂)

       2. 刷新某时间段内的特定车次类型的票,如刷新09:30-12:15之间所有高铁+动车票

       具体操作:

  • 打开12306
  • 选好车次方向和发车日期
  • 确定时间段、车次类型、席坐,然后替换下面的内容
//========================================== 
// 以下则根据需求自行配置: 
//   乘车人、车次、席别 
//   仅显示要刷的车次、查询区间、刷新时间 
//========================================== 
 
//选择乘车人 
addBuyer("张三"); 
addBuyer("'李四(成人)'"); 
addBuyer("'王五(学生)'"); 
 
//添加优先席别,按优先顺序添加 
addSeat("二等座"); 
 
//手动设置查询区间 
addTimes("09:30","12:15"); 
 
//仅显示高铁+动车 
$(".check[value='G']").prop("checked",true); 
$(".check[value='D']").prop("checked",true); 
 
//仅显示时间段内的车次、仅显示有票的车次,二选一 
//注意,如果选择了该项,则勾选的车次则无效了。 
queryByTimeAndTrainType(); 
 
//自动刷新时间1s 
autoSearchTime=1000; 
 
//收起订票助手 
$(".up").click(); 
 
//启动检测防挂 
var timer = setInterval(waitforRestart,autoSearchTime); 
 
//开始刷票 
if($("#query_ticket").text()=="查询"){ 
 var timer2 = setInterval(function(){ 
  if($("#auto_query").prop("checked") && $("#autoSubmit").prop("checked") && $("#filterTic").prop("checked")){ 
   alert("123"); 
   $("#query_ticket").click(); 
   clearInterval(timer2); 
  } 
 },10); 
}

       同样粘贴在浏览器控制台按回车执行即可。

       是不是很简单?有人会说简单但是繁琐。的确步骤有点多,那我就再提供已方法让步骤简化一下即可。那就是把上面修改过的内容,去掉注释行(就是//开头的行)然后把所有的换行都去掉,把所有内容缩到一行上。然后在前面加上javascript:,最后把它存放到书签上,使用的时候,打开12306,然后点击一下标签即可自动刷票了。

12306 刷票脚本及稳固刷票脚本(防挂)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
Javascript计算时间差的函数分享
Jul 04 Javascript
js/jQuery对象互转(快速操作dom元素)
Feb 04 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
Mar 14 Javascript
Bootstrap模态对话框的简单使用
Apr 29 Javascript
js中window.open的参数及注意注意事项
Jul 06 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
页面点击小红心js实现代码
May 26 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
原生JS实现微信通讯录
Jun 18 Javascript
移动端JS实现拖拽两种方法解析
Oct 12 Javascript
深入理解JavaScript中的预解析
Jan 04 #Javascript
jQuery操作json常用方法示例
Jan 04 #Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 #Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
Jan 04 #Javascript
过期软件破解办法实例详解
Jan 04 #Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 #Javascript
javascript实现一个网页加载进度loading
Jan 04 #Javascript
You might like
php牛逼的面试题分享
2013/01/18 PHP
php多文件上传实现代码
2014/02/20 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
JS往数组中添加项性能分析
2015/02/25 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
jquery实现轮播图效果
2017/02/13 Javascript
jQuery操作css样式
2017/05/15 jQuery
简单谈谈js的数据类型
2017/09/25 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
详解Angular路由之路由守卫
2018/05/10 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
Python中的Matplotlib模块入门教程
2015/04/15 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python中取整的几种方法小结
2017/01/06 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
jupyter notebook 多行输出实例
2020/04/09 Python
基于opencv实现简单画板功能
2020/08/02 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
PHP面试题及答案一
2012/06/18 面试题
护士试用期自我鉴定
2014/02/08 职场文书
公司开业庆典主持词
2014/03/21 职场文书
求职信格式范文
2015/03/19 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
Python3接口性能测试实例代码
2021/06/20 Python
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android