12306 刷票腳本及穩(wěn)固刷票腳本(防掛)
12306 刷票腳本及防掛
一年一度的“搶票運(yùn)動會”又開始了,期間12306網(wǎng)站承受的壓力越來越大,極不穩(wěn)定。隨著人們對互聯(lián)網(wǎng)越來越熟悉,導(dǎo)致大量刷票軟件的用戶量猛增,大量的訪問將12306快壓垮了,以至于使用12306自家的刷票助手經(jīng)常崩潰而無法繼續(xù)刷票。作為一名“資深”的程序員,我無法忍受了,所以果斷出手,寫了一段js來防掛。
本來想簡單的解決一下刷票自動掛的問題,后來想想寫都寫了,不如再增加幾個有用的功能。
現(xiàn)在腳本的功能有:
- 防止自動刷票崩潰(掛掉后自動重新刷票)
- 自定義查詢時間區(qū)間
- 自定義自動刷新時間間隔
- 突破5車次限制
- 可根據(jù)時間段、車類型刷所有滿足的車次
廢話不多說,直接上代碼吧:
//記錄等待時間 var waittime=0; //統(tǒng)計(jì)等待時間 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); } } //注冊回調(diào)方法 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>'); } //添加優(yōu)先席別 function addSeat(seat){ callback($.showSelectSeat, function(){ $("#seat-list li[name^="+seat+"]").click(); $.closeSelectSeat(); }); } //自定義查詢區(qū)間 function addTimes(startTime,endTime){ $("#cc_start_time").append('<option value="'+startTime.replace(":","")+endTime.replace(":","")+'">'+startTime+'--'+endTime+'</option>'); $("#cc_start_time option:last").selected(); } //根據(jù)時間段、車次類型查詢所有滿足的車次。 function queryByTimeAndTrainType(){ callback($.showYxTrain, function(){ var yxTrainTimer = setInterval(function(){ if($("#filterTic").length>0){ $("#filterTic").prop("checked",true); $("#yxtrain_close").click(); clearInterval(yxTrainTimer); } },10); }); }
以上是提供了修改配置的方法,以下則根據(jù)需求自行配置,我們可以選定車次進(jìn)行刷票,也可以根據(jù)時間段+車次類型刷該時間段內(nèi)的某類車次。分開來說:
1. 根據(jù)車次進(jìn)行刷票
具體操作:
- 打開12306網(wǎng)站
- 選定好車次方向和發(fā)車日期
- 篩選出要刷新的車次、乘車人、席做等,替換下面的內(nèi)容
//========================================== // 以下則根據(jù)需求自行配置: // 乘車人、車次、席別 // 僅顯示要刷的車次、查詢區(qū)間、刷新時間 //========================================== //選擇乘車人 addBuyer("張三"); addBuyer("'李四(成人)'"); addBuyer("'王五(學(xué)生)'"); //手動添加車次,按優(yōu)先順序添加(輕松突破5車次限制) addTrain("G100"); addTrain("G101"); addTrain("G102"); addTrain("G103"); addTrain("G104"); addTrain("G105"); addTrain("G106"); addTrain("G107"); //添加優(yōu)先席別,按優(yōu)先順序添加 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); }
將以上修改好的內(nèi)容貼到瀏覽器控制臺上(F12或者Ctrl+Shift+J)按回車執(zhí)行。就可以自動開始刷票了。如果刷新請求timeout了,會由waittime記錄超時等待時間,>10時則會自動取消刷新,1秒后重新開始自動刷票。
2. 刷新某時間段內(nèi)的特定車次類型的票,如刷新09:30-12:15之間所有高鐵+動車票
具體操作:
- 打開12306
- 選好車次方向和發(fā)車日期
- 確定時間段、車次類型、席坐,然后替換下面的內(nèi)容
//========================================== // 以下則根據(jù)需求自行配置: // 乘車人、車次、席別 // 僅顯示要刷的車次、查詢區(qū)間、刷新時間 //========================================== //選擇乘車人 addBuyer("張三"); addBuyer("'李四(成人)'"); addBuyer("'王五(學(xué)生)'"); //添加優(yōu)先席別,按優(yōu)先順序添加 addSeat("二等座"); //手動設(shè)置查詢區(qū)間 addTimes("09:30","12:15"); //僅顯示高鐵+動車 $(".check[value='G']").prop("checked",true); $(".check[value='D']").prop("checked",true); //僅顯示時間段內(nèi)的車次、僅顯示有票的車次,二選一 //注意,如果選擇了該項(xiàng),則勾選的車次則無效了。 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); }
同樣粘貼在瀏覽器控制臺按回車執(zhí)行即可。
是不是很簡單?有人會說簡單但是繁瑣。的確步驟有點(diǎn)多,那我就再提供已方法讓步驟簡化一下即可。那就是把上面修改過的內(nèi)容,去掉注釋行(就是//開頭的行)然后把所有的換行都去掉,把所有內(nèi)容縮到一行上。然后在前面加上javascript:,最后把它存放到書簽上,使用的時候,打開12306,然后點(diǎn)擊一下標(biāo)簽即可自動刷票了。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
JS?getRandomValues和Math.random方法深入解析
這篇文章主要為大家介紹了JS?getRandomValues和Math.random方法深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04javascript實(shí)現(xiàn)控制文字大中小顯示
網(wǎng)頁上可以自由改變字體大小是個非常有助于用戶體驗(yàn)的小功能,現(xiàn)在許多網(wǎng)站上都有此功能,今天我們來簡單實(shí)現(xiàn)下。2015-04-04three.js實(shí)現(xiàn)3D模型展示的示例代碼
本篇文章主要介紹了three.js實(shí)現(xiàn)3D模型展示的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12JavaScript實(shí)現(xiàn)簡單的拖拽效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡單的拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11JavaScript中常用數(shù)據(jù)處理函數(shù)groupBy的用法詳解
數(shù)據(jù)處理與分析中,對數(shù)據(jù)進(jìn)行分組是非常常見的功能,不論是實(shí)際工作中,還是在面試的場景中應(yīng)用十分廣泛,尤其在函數(shù)式編程中?groupBy?十分常見,下面我們就來學(xué)習(xí)一下groupBy的用法吧2023-12-12JS圖片預(yù)加載 JS實(shí)現(xiàn)圖片預(yù)加載應(yīng)用
由于圖片加載慢,導(dǎo)致用戶體驗(yàn)特別差,本文將介紹一種圖片預(yù)加載技術(shù),需要了解的朋友可以參考下2012-12-12自制的文件上傳JS控件可支持IE、chrome、firefox etc
這篇文章主要介紹了自制的文件上傳JS控件可支持IE、chrome、firefox etc,需要的朋友可以參考下2014-04-04JS+HTML5實(shí)現(xiàn)的前端購物車功能插件實(shí)例【附demo源碼下載】
這篇文章主要介紹了JS+HTML5實(shí)現(xiàn)的前端購物車功能插件,結(jié)合完整實(shí)例形式分析了JS結(jié)合HTML5的storage特性存儲數(shù)據(jù)實(shí)現(xiàn)購物車功能的相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-10-10