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 相关文章推荐
js tab效果的实现代码
Dec 26 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
JavaScript如何动态创建table表格
Aug 02 Javascript
前端jquery部分很精彩
May 03 Javascript
JS+CSS3制作炫酷的弹窗效果
Nov 08 Javascript
Vue.directive自定义指令的使用详解
Mar 10 Javascript
Express URL跳转(重定向)的实现方法
Apr 07 Javascript
Vue前端项目部署IIS的实现
Jan 06 Javascript
JavaScript实现Tab选项卡切换
Feb 13 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编程与应用
2006/10/09 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
webpack4简单入门实例
2018/09/06 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
python切片及sys.argv[]用法详解
2018/05/25 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Numpy的简单用法小结
2019/08/28 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python如何查看网页代码
2020/06/07 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
HTML5标签使用方法详解
2015/11/27 HTML / CSS
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
关于赌博的检讨书
2014/01/08 职场文书
时尚休闲吧创业计划书
2014/01/25 职场文书
教师节商场活动方案
2014/02/13 职场文书
贷款委托书怎么写
2014/08/02 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
个人求职信格式范文
2015/03/20 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏