一年一度的“抢票运动会”又开始了,期间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:" οnclick="$.removeSel(this,\''+trainCode+'\',4)"></a></span>');
}//添加优先席别
function addSeat(seat){callback($.showSelectSeat, function(){$("#seat-list li[name^="+seat+"]").click();$.closeSelectSeat();});
}
//勾选某些类型的车
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 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. 根据车次进行刷票

具体操作:

  • 打开12306网站
  • 选定好车次方向和发车日期
  • 筛选出要刷新的车次、乘车人、席做等,替换下面的内容
//==========================================
//  以下则根据需求自行配置:
//      乘车人、车次、席别
//      仅显示要刷的车次、查询区间、刷新时间
//==========================================//选择乘车人
addBuyer("张三");
addBuyer("'李四(成人)'");
addBuyer("'王五(学生)'");//手动添加车次,按优先顺序添加(轻松突破5车次限制)
addTrain("G100");
addTrain("G101");
addTrain("G102");
addTrain("G103");
addTrain("G104");
addTrain("G105");
addTrain("G106");
addTrain("G107");//添加优先席别,按优先顺序添加
addSeat("二等座");
addSeat("一等座");
//自定义时间区间
addTimes('07:00','08:10');
//勾选车次类型:G-高铁/城际,D-动车,Z-直达,T-特快,K-快速,QT-其他
selectTrainType("G/D");//自动刷新时间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秒后重新开始自动刷票。

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()=="查询"){//仅查看勾选的车次$("#filterTic").prop("checked",true);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防挂脚本,有需要的拿走相关推荐

  1. 一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉

    来源:传感器专家网 物联网产业是传感器应用最广泛的领域之一,研发新型传感器,做传感器市场,都不能不考虑物联网产业的需求. 2021年随着COVID-19 病毒的存在已常态化,防疫抗疫进入了拉锯阶段:波 ...

  2. 新鲜出炉的一款SpringBoot +Vue的考试系统

    一.考试系统简介 新鲜出炉的一款SpringBoot +Vue的考试系统,支持多种题型:选择题.多选题.判断题.填空题.综合题以及数学公式.支持在线考试,教师在线批改试卷. 二.项目架构 后端技术栈 ...

  3. 2021年第一季开发者报告新鲜出炉,最流行的编程语言竟然是它!

    2021年第一季开发者报告新鲜出炉,最流行的编程语言竟然是它! 近日,开发者调查分析公司SlashData发布了2021年<开发者报告>(第20版).报告中掺杂着大量冰冷的数字,无情的叙述 ...

  4. 这些技术人棒棒哒!BingoDay2017获奖名单新鲜出炉~~~

    3月24日,在为来宾们带去详实的技术干货后,2017年的BingoDay圆满落幕了.但是,品高软件年度解决方案的竞选才刚刚开始!在经过数天紧张激烈的投票和评选后,今天,品高软件年度解决方案.Bingo ...

  5. 2014年新鲜出炉的16款免费英文字体

    这里集合了16款现代风格的高质量英文字体,可以免费下载使用.这些字体在使用大字号显示(如广告.标签.宣传册和海报设计等)的时候效果最佳.设计师们不要错过了,赶紧收藏到你的字体库里. 您可能感兴趣的相关 ...

  6. 【新鲜出炉】25套的精美 Web 应用程序图标素材

    设计精美的图标能够向用户清晰的传递信息,不管是在网页还是 Web 应用程序中都非常需要.这些小小的图标元素能够告诉用户怎么到下一页,如何添加.删除和取消等等各种操作.设计精美的图标不仅能增加界面的美观 ...

  7. 微信小程序开发视频教程新鲜出炉

    微信小程序开发公测了,可是对于新手来说,不同的框架不同的开发机制,如何快速适应呢?微信小程序开发视频教程新鲜出炉了,从零开始一步一步搭建微信小程序,每个章节都会涉及到不同的知识点,等教程学习完你不但掌 ...

  8. 新鲜出炉!20款好看的英文字体下载

    字体是设计作品的重要组成部分,相比图形化元素,字体更能够清晰的表达含义.字体的运用是一门学问,使用恰当的字体作为设计元素能够达到事半功倍的效果.这里给大家分享20款新鲜出炉的好看的英文字体,可以免费下 ...

  9. 字体大宝库:26款新鲜出炉的高品质免费英文字体

    这篇文章收集了26款新鲜出炉的英文字体分享给大家,这些高品质的免费英文字体特别适合用于网页设计.平面设计.印刷以及海报和LOGO的设计.如果你正在高品质的免费英文字体,那么下面这些正是为你准备的,相信 ...

最新文章

  1. 搜索功能:洞悉产品的绝佳入口
  2. 博弈论 斯坦福game theory stanford week 1.1
  3. JS中基本数据类型和引用类型最根本的区别
  4. 《直播疑难杂症排查》之二:播放卡顿
  5. Android BottomNavigation Demo
  6. 春风十里不如春城一聚:华平解决方案巡展走进昆明
  7. java不同进程的相互唤醒_Java多线程(二)同步与等待唤醒
  8. 刷题总结——树的同构(bzoj4337 树上hash)
  9. Vue学习笔记之18-网络请求模块的封装
  10. GDI+处理带透明区域的png图片
  11. python修改桌面壁纸_轻松有趣的Python小案例,让电脑自动更换壁纸
  12. 苹果wifi网速慢怎么办_三步解决家里网速慢的问题
  13. Android音视频开发:AudioRecord录制音频
  14. Flutter 中 GestureDetector 的使用误区
  15. 用51单片机实现抽水水泵
  16. P0.9COB小间距LED显示技术的优势。
  17. 8 大主流自媒体平台优缺点分析以及运营建议
  18. java遍历json数据_Java 如何遍历JsonObject对象
  19. 利用opencv给视频截图
  20. Django:将项目移动到新环境

热门文章

  1. 信息学奥赛之数学一本通 C++版 用编程的方式学数学
  2. 罗斯蒙特CNG050S290NQEPMZZZ流量计
  3. Dapper入门使用
  4. Day5 Four English Grammer Mistakes Made By French Speakers
  5. android吸附菜单,Android RecycleView实现滑动停止后自动吸附效果
  6. 3D离线地图的两种实现方式
  7. 第六篇 Spring 自动装配
  8. 【Python】python与redis的初次碰撞,这种骚浪贱就得好好调教!
  9. 计算机控制系统AD实验报告,实验一AD转换实验报告.docx
  10. ppc64 安装jdk