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中如何把字符串转化为对象、数组示例代码
Jul 17 Javascript
jquery中的过滤操作详细解析
Dec 02 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
借助javascript代码判断网页是静态还是伪静态
May 05 Javascript
javascript模拟命名空间
Apr 17 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
JS根据json数组多个字段排序及json数组常用操作
Jun 06 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 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网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
js 操作css实现代码
2009/06/11 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
js实现进度条的方法
2015/02/13 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
详解jQuery Mobile自定义标签
2016/01/06 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
2013/06/08 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
应届大学生的推荐信
2013/11/20 职场文书
手机销售员岗位职责
2015/04/11 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
刘胡兰观后感
2015/06/16 职场文书