Max的KKTIX搶上車機器人

目前搶票機制,就是在比誰的網路快、電腦配備好、手速快,或是在比誰的機器人跑的快。期待未來熱門演唱會可以使用「實名制」+「抽籤制」,來讓更多民眾可以公平地購買到門票。

目前MaxBot 改名為:Max蛋黃酥上車機器人。

台灣藝文活動的文創法第十條中的「不正方式」由於沒有明確定義,代表的是所有軟體都涉嫌違反。故在此呼籲大家,勿以身試法。

  • Max搶票程式免費下載。
  • 使用機器人搶票有被官方鎖帳號的風險,請評估後再進行使用,後果請自行承擔。
  • Max的KKTIX搶上車機器人聲明:
    https://max-everyday.com/2024/04/maxbot-20240418/
  • 以下文章出現的「搶票」指的是「非台灣的藝文活動或車票」。

文章索引:


軟體特色:

  • 急速搶票
    優化購票流程。
  • 自動填寫
    搶票不再手忙腳亂心慌慌。
  • 合法購票
    本系統僅代為填寫購票資訊,無任何入侵、取得、刪除或變更售票系統其電磁紀錄。
  • 多系統支援
    支援 Windows 和(Mac, Linux 請直接執行原始碼)
  • 無時間或次數限制
    如果官方網站沒有改版,可以在多台電腦且無使用時間或次數限制。
  • 無病毒/惡意/間碟程式
    開放主程式的原始碼,雖然原始碼的檔案可以執行,但需要在相依元件都安裝的環境下,建議下載執行檔,會簡單很多。

檔案下載:

目前有2種執行MaxBot 的方式,

  • 程式碼
  • 執行檔

目前只有 Windows 平台才有提供執行檔。

Windows 的執行檔下載:
https://github.com/max32002/tixcraft_bot/releases

.zip 壓縮檔案說明:

  1. chrome_tixcraft_xxoo.zip
    • 適用於:Windows 平台。
    • 執行方式:執行 settings.exe 應用程式。
    • 附註:請在 zip 檔按右鍵,選「解壓縮全部…」完整地解壓縮zip檔案,而不是直接點2下的開啟zip 檔。

透過原始碼在macOS 上執行MaxBot, 教學影片: https://youtu.be/HpVG91j0lbI

新的 Arm 架構CPU (M1/M2) 的 Mac 電腦,需要參考這篇作法,模擬執行環境為 INTEL CPU:
https://github.com/max32002/tixcraft_bot/issues/82

以Linux 虛擬主機來示範搶票:
https://max-everyday.com/2023/11/buy-ticket-by-vm
附註:在 Windows / macOS / Linux 平台裡的 python 操作方式幾乎相同。

下載檔案前,建議將你的 chrome 瀏覽器升級到最新的版本。更新chrome瀏覽器的方式是:「設定」->「關於Chrome」,這時候,通常就會自動更新chrome 瀏覽器為新的版本。

目前的搶票機器人不需要另外再下載「瀏覽器元件」(ChromeDriver),除非是發生特例的異常情況,才需要人工手動去下載 ChromeDriver。手動下載請參考:
https://max-everyday.com/2023/11/maxbot-troubleshooting/#chromedriver

Max搶票機器人原始碼:
https://github.com/max32002/tixcraft_bot

附註:

  • KKTIX/拓元/ibon … 售票的網站所用的機器人是同一個程式。
  • 目前搶票程式沒有寫的很好,執行時有錯誤或臭蟲(Bug)是正常的,如果遇到程式掛掉,請提供黑色視窗裡的除錯用訊息給Max,這樣才有辦法得程式掛掉的原因,才能有效率地除錯。
  • 每次按「搶票」按鈕後,所開出新的 chrome 瀏覽器是全新的未登入狀態,所以在每個開出的視窗都需要在搶票前先登入你的售票系統的會員帳號。
  • 實際搶票前10分鐘(如果時間允許),請使用其他已經開賣中的活動測試功能是否正常:建議,先去購買其他已開放活動購票,並取消該購票,再回到倒數中搶票的活動頁面,這樣做可以先快取後面購買網頁所使用的外部資源,有助於搶票。這一點,沒去做也沒差。
  • 實際搶票前10分鐘(如果時間允許),建議「重開機」一次(這一點,沒去做也沒差),重開機完成後,建議關閉沒在使用的應用程式,只運行搶票程式,這樣子可以讓電腦發揮較好的效能。
  • 目前搶票程式在設計上的架構不是很好,長時間執行,程式可能會異常中止。

檔案說明:

  • chrome_tixcraft.py : 搶票機器人主程式, 用來自動化網頁的操作。
  • config_launcher.py : 設定檔管理, 方便對多個設定檔案搶票。
  • settings.py : 編輯 settings.json 的 GUI 介面。提供圖片OCR功能給chrome擴充功能。支援定時啟用/停用MaxBot。

主要功能:

  • 1:依照「票價」自動輸入想要的票「張數」,票價和張數可以參數調整。
  • 2:自動打勾「我已經閱讀並同意 授權條款 與 隱私權政策」。
  • 3:自動點選「下一步」,要不要自動點也可以參數調整。

搶票建議:

  • 請先「手動」用滑鼠點選自己要買票的活動。
  • 請先登入購票系統的會員,以加速購票流程。展示影片目的是在示範不使用滑鼠的情況下透過機器人選取想購買的日期、票價和張數。
  • 門票的「限量」是很殘酷的,建議不要用破舊的電腦或連線不穩的手機網路來搶票,因為只要比別人慢個 0.1 秒,票可能就沒了。為了要搶到限量的票建議去網咖或找一個網路連線穩定且快的地方並使用硬體不差的電腦來搶票。如果在使用網咖或別人的別人的電腦,請先確定已經安裝了chrome瀏覽器並更新到最新版本。
  • 搶票機器人可能會因為搶票系統繁忙而比手動的慢,請勿過份依賴搶票機器人,在第一時間還是可能會需要使用滑鼠手動去點。
  • 搶票程式可能會執行到一半就掛掉,建議實際在搶票時,請開啟出2個瀏覽器,一個是透過搶票機器人。另一個是傳統無外掛手動去搶票,因為如果遇到「搶票的程式掛了」、「官方網站影示錯誤訊息是無連續坐位」或「官方網站改版」,還可以搶看看第二輪或清票。

目前無解的 reCaptcha

KKtix 有分2種的場次:「有reCaptcha符號」(無緣)和「無reCaptcha符號」(有緣)二種,參考下圖。

無緣的場次,還沒有試出解決的方法,建議不要用MaxBot搶票程式在無緣(有reCaptcha符號)的場次上。這當然也是有例外,如果遇到國際級的巨星,或預計超過20萬人次以上同時搶票的活動,即使有 reCaptcha 符號也是可以去搶, 因為有很高的機率, reCaptcha 不會彈出來。

建議您手動搶票用的IP與電腦, 要跟有使用機器人搶票的IP與電腦, 使用不同台電腦與不同的IP, 避免實際在手動搶票時, 彈出圖片驗證。

KKTIX 有 reCaptcha 圖示的場次, 可能需要手動搶票….。reCaptcha 會彈出圖片驗證,使用機器人搶票反而會變更慢。

可以透過「人海戰術」來提升買到票的機率,因此建議大家可以麻煩親朋好友去註冊售票系統的帳號。注意,在借用他人帳號前,一定要告知用途當事人,並徵詢同意與授權。

前幾次在kktix的大型活動,大部份的人說沒彈 reCaptcha, 小部份的人反應會彈出。建議您可以創多個帳號來搶票,依照您對風險承受度來決定那些帳號使用機器人搶,那些帳號手動搶。

KKTIX 有 reCaptcha 圖示的場次,平時的搶票前就不用去測試了,因為是離峰時間,怎麼測試 reCaptcha 都不會掛掉,而且去測試會讓連線的 IP 被伺服器判定為高機率被汙染的IP。

當IP或帳號被 reCaptcha 伺服器判定為汙染的IP或帳號時,會造成使用正常的瀏覽器也會固定彈出圖片驗證。

Q:如果搶票系統有recaptcha,使用搶票機器人來購票會比較快嗎?
A:這個問題取決於搶票的人有多少,數量大於 reCaptcha 瞬間的支援上限,就相當於沒有 reCaptcha,當然用搶票機器人快。相反的,搶票的人不多時,一定是用手動來搶比較快。

Q:那如果到時候跳出recaptcha也可以手動進去嗎?
A:您只有一雙眼,因為KKTIX也可能會出驗證問題,最好是可以有二台電腦一台純手工搶票,一台就用機器人搶。

如果您有多個帳號,依照您對風險承受度來決定那些帳號使用機器人搶,那些帳號手動搶。

如果您使用虛擬主機來搶票,請搶票先試買看看已開賣的場次,看看虛擬主機的IP是否有被售票網站阻擋。

Q:KKTIX 按了程式搶票後 自動輸入完帳密後 他就卡在選日期不動了。
A:KKTIX 目前沒有支援日期自動選擇,請把搶票最後的網址,貼在搶票程式的網址裡。

Q:請問KKTIX售票的場次有兩天,要怎麼讓機器人自己操作?
A:雙開視窗。

Q:我還需要架虛擬主機才能實現多開帳號嗎?
A:虛擬主機就是一台電腦,一般電腦也可以帳號多開。

Q:想請問遇到圖片驗證的話,還是得手動點選對嗎?
A:門票會秒殺的場次,在搶票時遇到彈出圖片驗證,應該就跟門票無緣了。這時候可以選擇關閉瀏覽器去做其他事,或流著眼淚慢慢找圖片驗證裡的項目。

Q:搶票的網頁出現無法連線到reCAPTCHA是什麼原因呢? 長達兩三分鐘。
A:reCAPTCHA的保護服務有瞬間的連線數上限,超過之後會出現錯誤訊息,或是可以進入沒有 reCAPTCHA保護(阻斷服務)的狀態, 就可以正常地使用搶票機器人。

目前網路連線的機制之下,所有的網路服務都有瞬間的服務數上限,面對70萬人次瞬間的高連線數需求,KKTIX可以事先加開網頁伺服器來因應。但kktix 無法調整reCaptcha 瞬間的服務數上限。

實際測試了幾場活動,發現reCAPTCHA事實上可以支援不同的網頁而且分開的情況正常的運作,但目前的reCAPTCHA遇到同一個網址,無法在瞬間支援高的連線數。

搶票的網頁出現「無法連線至 reCAPTCHA服務」、「卡在查詢空位中」的解法只有創新帳號來解決,售票用的網頁伺服器也有單一伺服器連線上限的問題,所以售票系統會加開更多的伺服器來因該大量的連線需求,而用來疏散流量的技術叫負載平衡,萬一你的搶票需求被分配到一個忙錄的節點,你搶到票的機率就會大大降低,反之,你運氣好分配到人少的節點,也許因此增加搶到票的機率。

另外一個避卡 reCAPTCHA 造成問題的解法, 是延後1秒才開始搶票,可以在某一隻的分身使用的電腦,設定開始搶票時間為實際搶票時間, 例如: 13:00:00 開始搶, 就設成 13:00:00, 雖然慢了一秒才去搶,但是被 reCAPTCHA 擋的機率相對會低一點。

針對「第一波進去的轉圈轉到顯示沒票,慢慢進去的可能反而有票」,最佳解法就是狂創帳號,部份帳號第一波進去,部份帳號,整點之後再開始刷票。

設定開始搶票時間範例影片: https://youtu.be/eETZTajxBnY


reCAPTCHA 活動搶票心得

  • 建議畫面查詢坐位按鈕卡住太久(約10秒),需要手動F5重整頁面。
  • 已無坐位的無限狂跳對話框,是因為用戶端的網頁是舊版坐位清單,搶票程式有幫我們按送出按鈕,伺服器立刻回傳已無坐位,就產生無限循環。解法:重新整理網頁就可以更新可買的坐位清單。使用手動搶票,也是一樣會遇到這個鬼打牆情況。

Q:KKTIX雖然有自動點擊下一步,但卡在尋找座位,畫面沒有自動刷新的問題,想請問原因為何?以及如何解決?
A:(個人猜測)原因為存放座位資料庫同時太多人在排隊等候,部份要進行排隊的人已拿不到等候範圍內的號碼牌,同時再加上網頁伺服器上的程式缺少重送的機制,最後在你的畫面上看起來就是卡住。

Q:我發現不能辦兩個帳號欸要驗證手機🥺
A:跟長輩借簡訊的驗證, 沒有長輩就找邊緣人。也可以去申辦 0月租費的門號。

在借用別人的簡訊驗證或借用帳號前, 請先徵詢當事人同意, 並告知用途。

Q:為什麼不使用Buster 擴充功能來解決 reCAPTCHA?

A:2023年的某些版本號碼裡有預設加入 Buster, 使用 Buster 有好處, 也有缺點, 我個人的猜測缺點大於優點, 所以暫時拿掉了, 缺點有:

  1. 容易讓用戶端的IP/帳號被 reCAPTCHA 判斷為已污染, 進而觸發 reCAPTCHA.
  2. 搶票時, 彈出的 reCAPTCHA 遇到同時被大量用戶呼叫時, 一樣無效, 只能慢慢選答案。

最後, 由於需要搶票程式的大型活動, reCAPTCHA 經常性失效, 聽說單一網頁在短時間內的存取額度是6萬次, 以 60萬人次搶票, 有 54萬人不會遇到, 而且 reCAPTCHA 掛掉之後,就會變成60萬人次都可以正常在沒有 reCAPTCHA 情況下購買票券, 所以不需要使用到 Buster.


售票系統架構猜測與搶票建議

影片: https://youtu.be/alpy9HX6aRw

希望未來熱門場次的票券可以改成抽籤制。
比較拓元與KKTIX轉圈圈的實作方法不同。

  • 同一帳號多開有被鎖帳號的風險。
  • 建議多帳號開在多台電腦,以便在IP hash的負荷平衡時可以分配到不同的節點。
  • 建議畫面查詢座位按鈕卡住太久(約10秒),需要手動F5重整頁面。

Q:想問一下kktix帳號多開不使用虛擬主機是可以的嗎?
A:虛擬主機和一般電腦差不多。主要差在虛擬主機租用費用比較便宜,還有網路會較快,缺點是入門需要會一些簡單的指令。

Q:使用同一台電腦多開會有不妥嗎? 比如IP一樣之類的。
A:使用不同IP才能更有效地送出需求給更多負載平衡的節點,有效地降低卡住的機率。
如果在拓元售票系統在短時間內, 同一個IP 大量連線, 會顯示 403 錯誤, IP 會被擋。

Q:機器人在KKTIX搶到,遇到按「下一步」停住是什麼原因?
A:由於同一個座位不能賣給多個人,同一時間大家去搶票前都是看到同空位,按下送出時只有一個人會成功,其他排隊在後面的都會成失敗,理論上網頁伺服器會在幫忙送新查詢之後,在新的資料庫伺服器上排隊要求,網頁轉圈圈停很久可能是還在重試中。

Q:為什麼我太太搶到8張(他就一個帳號+一台破電腦)?
A:https://youtu.be/d3JxIk4hLsw


KKTIX 無視窗搶票

搶票過程是無視窗, 搶到票之後, 會自動開出視窗方便填寫資料。

  • 如果遇到的售票活動不需要填寫個人基本資料,請在其他瀏覽器登入帳號後,可以在訂單裡看到該筆記錄。
  • 由於程式沒寫好, 建議使用無視窗模式前, 還有使用後, 記得重開電腦, 因為會有神奇的chrome瀏覽器在電腦記憶體中, 由於沒有視窗也無法關閉。如果你會使用工作管理員的話, 也可以關的到程式, 不需重新開機。

我實際測試, 購票結帳畫面有分2種,

  • 情況1: 不需額外輸入資料.
  • 情況2: 需要額外輸入基本資料,

現在無視窗模式在確定有票之後, 固定會開啟新視窗提供輸入資料的介面, 遇到情況1的話, 是會多開出一個視窗, 而且有登入帳號。

Q:使用無視窗搶票時,該如何知道是用哪一個帳號做搶票呢?
A:搶票成功, 會顯示在黑黑視窗, 而且也會使用買到票的帳號開出新的可以輸入資料的視窗。

Q:多開但很容易三個網頁都癱瘓最終誰也搶不到?
A:每個人使用中的電腦規格不同, 用古董電腦是會遇到你說的情況, 只能認了. 如果要多開, 請視配備來決定要按幾下搶票按鈕。

怕被發現上班中在搶票,可以勾選無視窗模式。

掛2場的話,要分別按「搶票」一次,才會套用到不同設定值。


KKTIX 的什麼售票狀態才可以刷清票

每一場次的KKTIX活動狀態在 register_info 的網址裡, 想知道狀態內容, 可以按F12 叫出瀏覽器 DevTools, 在 Network 分頁就可以看到伺服器的回傳值。

KKTIX的2個沒有票的狀態, OUT_OF_STOCK / SOLD_OUT, 可以確定的是看到橘底的畫面(There’s no ticket available), 還可以挑戰刷票看看, 可能還有票被清出。

SOLD_OUT 可不可以去刷清票, 這個答案需要去問KKTIX官方。


機台購票與機器人搶票的選擇

Q:購票該選擇去機台, 還是透過電腦?
A:用 reCAPTCHA 場次目前無解。

如果要在電腦上搶,你可以先在電腦裡安裝不常用的瀏覽器,並在瀏覽器裡登入你的 KKTIX 帳號,在非搶票機器人情況下,試著購買看看其他場有 reCAPTCHA 保護的場次, 如果你的電腦環境(IP + 帳號) 「會」彈出圖片驗證,而這場活動不是「超級多人」去搶的場次,建議去機台購票搶到票的機率會較高。

如果是「超級多人」去搶的場次,可以多開帳號與電腦來搶票,增加中獎機率。

搶的人較少的場次,以場地在北流來說,坐席數目在3100~5000個,再加上聽的懂客語歌的人較少,在售票網頁有 reCAPTCHA 保護情況下, 使用機器人搶票幾乎都會彈圖片驗證, 因此在超商機台上搶, 搶到的機率比較高。

Q:reCAPTCHA驗證過後不是會有一段時間的空窗期免驗證嗎?
A:在 KKTIX 的 reCAPTCHA, 每一個活動網頁, 驗證過活動1, 切到活動2, 需要重新驗證一次, 而且驗證過的活動1, 在短時間內不需要重覆驗證, 但也有逾期時間, 可能是10分鐘, 確切多久逾期沒有實際去驗證。

Q:每次都彈reCAPTCHA圖片驗證,代表我的IP位址被汙染的機率很高了?
A:你去借帳號, 登登看, 也許是帳號被 reCAPTCHA 拉黑。

如果連用手機裡的瀏覽器在KKTIX, 也固定彈出 reCAPTCHA, 應該是KKTIX帳號被reCAPTCHA拉黑了。

Q:如果帳號被拉黑了, 帳號是不是不能變回正常呢?
A:創新的帳號就會變正常。如果帳號還可以購票的話, 其實沒差, 因為大型活動, 目前的 reCAPTCHA 常常會壞掉。

透過「人海戰術」來提升買到票的機率,因此建議大家可以麻煩親朋好友去註冊售票系統的帳號。注意,在借用他人帳號前,一定要告知用途當事人,並徵詢同意與授權。


KKTIX帳號購票時異常

如果你的kktix 帳號在正常瀏覽器登入的情況下,購買其他已開賣場次,卻轉圈圈超久,卡在「查詢空位中,請勿重新讀取或關閉此頁」。

正常帳號, 應該不會超過3秒, 如果你都連到 30秒以上, 就是帳號有出問題.

  • 解法1:
    先跟朋友借手機門號的簡訊認證,24小時內,先切換為其他門號,等過24小時候再簡訊認證一次,切回原本門號,一按下簡訊認證,帳號可能就會變正常,且立即可以刷票。
  • 解法2:
    在kktix 選擇刪除帳號並註冊新帳號,手機門號可以拿到新帳號使用,缺點是,24小時內無法購票,舊email 和帳號名稱無法再使用。
  • 解法3:
    回報給 KKTIX 客服, 問看看為什麼會卡住。有網友回報:請KKTIX幫忙重置帳號之後,就好了。

Q:這是帳號被鎖帳了嗎?
A:我不是KKTIX工程師,猜測可能是「相同一帳號活動購票上限最多4張」的檢查功能出問題。(純臆測)

客服的「提交請求」傳送門:
https://support.kktix.com/hc/zh-tw/requests/new


如何避免帳號被鎖

網友傳來帳號被 KKTIX鎖的截圖,對應到中文版的訊息:

您的帳號已被鎖定。

由於之前 MaxBot 刷 KKTIX 網站效率太好, 會被檢測為機器人, 。

Maxbot 在2024-03-28版之後,預設不使用「KKTIX狀態API」, 理論上可降低帳號被鎖的機率。

請減少使用(非搶票程式的)同一個瀏覽器,登入多個帳號。有必要在同一個電腦登入的話,

  • 解法1: 請安裝多款不同廠牌瀏覽器,
  • 解法2: 登出KKTIX帳號之後, Windows 平台按 Ctrk + Shift + Del, macOS 平台請按 Cmd + Shift + Del, 把瀏覽器快取 cookie 清除之後, 再登入其他帳號。

請避免使用同一個IP,登入太多不同帳號。

非人為的操作,容易被判定為機器人,就容易被官方鎖帳號,這是一個2難的問題,因為刷的慢,門票會被別人買走,刷的快,會被系統判定為機器人,這個問題無解,只能在被鎖帳號後,想辦法創新帳號。

長時間刷清票,建議開小號來刷,並建議微微地拉大延遲間隔。

刷票延遲時間, 建議使用 1.0秒以上,人類肉眼的處理速度差不多是這個數字。

搶開賣,請先設定MaxBot 為暫停搶票狀態,設定「接續關鍵字」為開賣的前5~10秒,並按下「存檔」,減少程式在網頁伺服器重刷次數。

相關影片: KKTIX 定時啟動+帳號多開
https://youtu.be/eETZTajxBnY

不建議同一個帳號多開,開愈多,會愈像機器人。

最好多創一些帳號,每個帳號都單開。

在創立新的KKTIX帳號時,要用不同IP 去創,可以借朋友的手機網路來創帳號,或暫時VPN 到不同的IP, 或用洋蔥瀏覽器,同一個IP創出的帳號會一起被鎖。

取票聯絡人與電話,建議填寫真實資料,因為只要是領到實體票就可以追的到人,不必填寫假資料。

透過「人海戰術」來提升買到票的機率,因此建議大家可以麻煩親朋好友去註冊售票系統的帳號。注意,在借用他人帳號前,一定要告知當事人用途,並徵詢同意與授權。


使用方法:

1:請先確定電腦裡有安裝 chrome 瀏覽器。
2:請先確認您的 chrome 有更新或降低到到目前程式可以支援的指定版本。
附註:如果搶票機器人的自動化的腳本已經可以執行,請不要隨意升級chrome瀏覽器的版本,要升級chrome瀏覽器之前,請先檢查看看沒有和您你chrome瀏覽器相符的自動化的腳本可以下載,如果沒有的話,請再手動安裝指定版本的chrome瀏覽器。

太舊的 chrome 執行起來會有問題,請先更新chrome瀏覽器為最近的版本,更新方式為:「設定」->「關於Chrome」。


3:Windows用戶請先對zip檔進行「解壓縮」的動作,不能直接開啟壓縮檔,在預覽壓縮檔的環境下執行。MacOS用戶,點2下zip檔就可以取得MaxBot 的 app,點2下即可執行。
4:Windows用戶請執行「settings.exe」,進行設定後,再按 Run 開出一個搶票用的chrome 瀏覽器。

Windows用戶在解壓縮後,要找的檔案名稱是「settings.exe」 不是「.settings.exe」

macOS 的用戶請改點2下 MaxBot app .


參數設定說明:

Window 版可以執行 settings.exe 來修改設定檔,macOS 是執行 MaxBot。

執行畫面如下:

按鈕說明:

  • 1: 「Run」 的按鈕,按下後 就會去”存檔” 和 “執行” chrome_tixcraft.exe。每按一次 Run 都會開出一個獨立記憶體空間的chrome 瀏覽器。請記得在搶票前先登入好會員帳號,部份太熱門的活動,會因為太熱門而在開搶後無法登入會員。
  • 2:「Save」按鈕,會把設定值存檔。
  • 3:「?」按鈕,連到使用教學網頁。
  • 4:「Exit」按鈕,離開。

參數說明:

  • Homepage”: 設定機器人一開始開出那一個網址。
  • Browser”: 設定機器人用那一個瀏覽器,目前支援 “firefox” 和 “chrome”
  • Ticket Number”: 設定票數
  • “Auto Press Next Step Button”: 設定要不要自動點選「下一步」。
    要啟用這個功能請修改打勾。
    當設定為啟用自動點選「下一步」,但如果該場次有彈出「驗證問題」,這一個設定值將會不被採用,因為沒回答問題也沒辦法點下一步。
  • Auto fill ticket number“: 設定自動輸入想要的票「張數」。要停用這個功能請取消勾選。
  • Area select order“: 自動點選的排序方式,”from_top_to_down” 是由上往下找,大多數的場次由上向下找等於先選貴的票價,”from_down_to_top” 是由下往上找,大多數的場次由下向上找等於先選便宜的票。”Random”是隨機挑一筆,是先用「關鍵字」裡過濾出符合資格的超連結,再從中隨機挑一個。如果都沒有關鍵字,就是全部超連結裡挑一個。
  • Area Keyword”: 區域的關鍵字。如果使用空字串,代表搶第一個「可被點選」的區域。緊連的2個關鍵字之間的邏輯是且(And),代表同時要存在同一列裡。
    關鍵字有#1 到 #2。這2組欄位之間的關係接近於「或」(OR)的關係,而且有順位的特性。
  • Guess Options in Question“: 設定自動猜測驗證問題可能的「選項」。要停用這個功能請取消勾選。
    • 注意1:
      啟用這個功能有風險,程式可能會誤判(不一定能猜對選項),去猜一些錯誤的選項,一旦猜錯,應該就與入場券無緣了。
    • 注意2:
      可以自動去猜測「選項」的定義為:驗證問題是「選擇題」。程式目前無法回答「開放性的問題」。
    • 注意3:
      啟用這個功能,可以猜測出部份簡易的開放性問題,例如:演出日期。

目前程式執行時的邏輯是:關鍵字第2組沒輸入,只有輸入關鍵字第1組,會先用關鍵字第1組的設定去搶票,當第1組沒票時,比照沒輸入關鍵字,所有的票都會去搶。


設定值舉例說明:

設定範例1號:

說明:

  • 會自動點「下一步」按鈕,
  • 會自動填入張數,
  • 目標的票價是$1,000。

附註:

關鍵字欄位的設定值為:「1000」與「1,000」在電腦的世界中是絕對不相同的,4個字元完全不相等於5個字元。目前的版本已優化關鍵字比對,修改為不區分逗號、空格與大小寫。

由於常常會發生「不可預期」的情況,像是購票網站伺服器改版,或是Max搶票程式沒寫好,所以搶不到票是正常的,要避開上面這2個不可預期的情況,搶票當日,請先使用搶票程式測試其他活動,看看是否功能正常,還是正式開搶前 10分鐘,請先重開電腦。


設定範例2號:

說明:

這個設定值,可以幫我們自動打勾「我已經閱讀並同意 授權條款 與 隱私權政策」,省下一點點的時間。


設定範例3號

Q:為什麼設定 Area Keyword 輸入「12/23」且(And)「1000」沒有自動搶票?
A:因為 12/23 並沒有出現在「票種」的清單裡。參考下圖的紅色區塊:

由於目前的關鍵字邏輯是「且」以上圖為例,如果同時輸入了2個不同的價格,例如「1000」與「1200」來說,是無法比對成功,因為紅色框框裡,並沒有同時在同一列裡出現這2個數字,最後造成的是無法自動輸入票數。


設定範例4號

都是花 NT$5,800, 可以在 2D 看, 一定比 2A 看還讚,

Q: 可以在搶票機器人裡只搶 2D 的票嗎? 要怎麼設定才能只搶2D 的票?
A: 很抱歉, KKtix 的網頁, 並沒有提供單獨搶 2D 的票, 要搶2D, 請直接下關鍵字 5800 即可, 但可能會搶到 2A 或 2G.
附註: kktix 的網頁裡, 並沒有出現 2D, 你下了關鍵字2D, 只會讓你搶不到票.

關鍵字設定範例:

  • "2樓 2D區"
    “2樓” 且 “2D區”, 如果網頁裡出現 “2樓2D區”,”2樓-2D區”,”2D區2樓”,”2D區-2樓”, 這些都算符合”且” 的條件.
  • "3800",""
    第一順位搶關鍵字3800, 第二順位所有可以選擇的票都符合條件.
  • "80","F",""
    代表先找有關鍵字 80 的票種, 以上圖來說 3880,3280,2880 都符合, 如果排序是由上往下, 則會選取 3880 的票.
  • "80 F","F",""
    • 第1順位, 先找 80 而且有 F 的票種, 以上圖來說會先選到 2880, 因為該列中有 2樓F 的關鍵字.
    • 第2順位, 找關鍵字F.
    • 第3順位, 全部都符合, 有票即搶.

搶票機器人原理:

我是使用 python + selenium 來實作,除了python 程式語言可以使用 selenium,也可以用 c#, java, ruby, perl。參考看看我的心得:

Selenium 使用 Chrome 瀏覽器 webdriver
http://stackoverflow.max-everyday.com/2018/03/selenium-chrome-webdriver/


機器人程式是跨平台的,可以執行在 Linux / Mac OS / Windows 這 3個平台上。上面影片是使用 FireFox,除了使用 FireFox 瀏覽器也可以 Chrome 瀏覽器。


Q&A 常見問題:

建議先去看看另一篇比較完整的 Q&A:
https://max-everyday.com/2018/03/tixcraft-bot/#qa

Q:這個搶票程式有違法KKTIX相關法律嗎?
A:台灣藝文活動的文創法第十條中的「不正方式」由於沒有明確定義,代表的是所有軟體都涉嫌違反。故在此呼籲大家,勿以身試法。

Q:這程式可確保會搶到票嗎?
A:不會。

Q:MAX搶票程式該如何取得?
A:網頁最上面有附下載點。

程式的實作方法可以自行挑戰看看。

Q:那下載程式後要怎麼操作,有教學嗎?不然怎麼使用?
A:有網頁說明和Youtube 影片。

Q:操做的問題都可請問您嗎?
A:可以。請先參考看看教學的文章。

Q:所有購票系統都可以執行嗎?
A:沒有這麼神奇哦,只有特定的網站,而且網站一改版之後,可能就無法使用。

Q:可以用永久嗎?
A:如果官方網站沒改版的話,可以一直使用。

Q:你都會一直更新嗎?
A:不一定會更新。

Q:若是遇到售票網頁改版,後續執行檔程式碼的更新是要重新購買,還是有其他的更新方式?
A:不確定有沒有辦法更新,也許賣票的平台請到更厲害的工程師。

Q:請問搶票程式不會被售票網擋下來嗎?
A:理論上擋的下來,目前還沒有擋,未來很難說。

Q:有電腦安裝數的限制嗎? (多台電腦OK?)
A:沒有限制。
附註:你可以取得並修改我所寫的程式碼,但是要讓Python程式碼可以執行,有前置條件,需要(1)安裝python,(2)安裝 pip, (3)安裝 selenium 套件,(4)下載 webdriver(或ChromeDriver) 到程式碼的資料夾下。

Q:只能用電腦嗎還是手機也可以?
A:只限電腦,並限定於 Windows/MacOS/Linux 平台。

Q:請問會包含使用說明嗎?
A:請參考看看網頁上附的資料,如果還有不懂的地方請與我聯絡,我會再補充和更新到網頁裡。

Q:想請問能否幫忙搶票?
A:沒有提供代搶票的服務,因為沒搶到票,不好意思跟你拿錢。萬一跟你拿了錢又沒搶到票,可能被說是我偷懶沒做事還收錢。

Q:可以直接幫我搶票嗎?
A:沒有提供代搶票的服務,因為沒搶到票,不好意思跟你拿錢。萬一跟你拿了錢又沒搶到票,可能被說是我偷懶沒做事還收錢。

Q:我想指定第二場 要如何設定?
A:先看官方給的PDF或網頁, 裡面會有該「場次」的關鍵字,如果是一天一場,請輸入日期的關鍵字即可。如果是一天多場,請輸入想搶的場次才有出現的關鍵字。如果不知道怎麼設,日期這個請設為不要透過機器人來幫忙自動選取,手動選場次不會相差太多時間,但建議還是透過程式自動選場次,因為比別人點的快,搶到票的機率就會比別人高。

Q:只求有票,怎麼設定比較好?
A:我也不清楚,我猜測也許關鍵字使用低票價的再使用隨機(random)方式選取,機率會高一點。

Q:關鍵字可以輸入「中英數」?
A:可以輸入中文/英文/符號和數字。

Q:我一直掛在購買票那邊,時間到會自己進去吧。
A:要自己按重新整理。特定的頁面會自動重新整理,「特定頁面」的定義在不同的售票系統會不一樣。在拓元是「挑日期」和「挑區域」的這2個頁面。kktix 是在「挑區域」的頁面。

Q:Windows平台,顯示錯誤訊息:此檔案的版本與您執行的Windows版本不相容,請檢查電腦的系統資訊,判斷您需要x86(32 位元)或x64(64 位元)版本的程式,然後連線軟體發行者。
A:

1:目前程式是「只有」支援64 位元,理論上也是可以支援32 位元,所以如果你是32位元,請去借台64位元的電腦來搶票。

2:Windows用戶,請執行解開 zip 檔案後裡第一層目錄下的 settings.exe,而不是 .settings.exe 或 \_MACOSX\settings.exe。謝謝。

Q:Mac OS,按了 run 按鈕後,沒有反應
A:請幫忙執行下列的步驟,並提供最後終端機(Terminal,下指令視窗)的執行畫面。

Step 1:在 MaxBot.app 按右鍵,選 “Show Package Contents”

Step 2:點2下去開啟 “Contents” 目錄下的 “MacOS” 目錄下的 MaxBot 執行檔,喜歡按右鍵的朋友,也可以按右鍵再選”Open”。

Step 3:按下 Open 後的畫面如下,請提供按下 Run 按鈕後,終端機(Terminal,下指令視窗)的執行畫面。

Q:請問按下run能控制多個視窗?
A:每一個按下Run跑出來的視窗都是獨立的,需要一一去登入。

Q:run按幾次就跑出幾個視窗,是否只會執行最新出來的視窗?
A:每一個按下Run跑出來的視窗都是獨立的,每一個都會跑,每一個執行中的視窗可以使用不一樣的設定值。

Q:那如果我有兩個帳號可以買票,有辦法在同一台電腦run嗎?
A:可以。但實際上沒有辦法,因為拓元還有KKtix針對熱門的活動幾乎都會提問額外的問題,同一台電腦「作用中的視窗」都只有一個,所以沒有辦法「同時」去買票,只能依序買票,就是帳號1號買完,點帳號2號的視窗改用帳號2號來買,但熱門活動,錯過了第一時間搶票,買到票的機率很低。

Q:我想要搶某活動的 “特一區”+”第1排11號.12號”那我能用你的程式去搶票嗎?(手動的一定會被淘汰.因為速度太慢.對吧)
A:不一定,要看運氣,理論上來說,使用程式去搶到票的機率可能只有高一點點而。參考下一個問題。第1排11號.12號,是手動選位,通常熱門的活動,都沒有開放手動選位,意思是,可以手動選位的活動,其實用不到搶票程式。

Q:我如果有指定要哪區域的第幾排的位子 是不是要手動選擇?
A:通常,可以自己挑位子的活動,不需要使用到搶票的程式,熱門活動都是電腦劃位。

Q:在購票的畫面,程式沒有自動跑,需要自己手動點,但是等到第二回,程式又可以自動跑,為什麼?
A:這估情況是可能發生的,目前程式需要網頁完全載入(loaded),在這情況下程式因為網頁元件都初始化完成了,程式腳本跑起來問題才會比較少,有些情況會造成購票的畫面已經都顯示出來了,但網頁有些圖片可能因為您被分流到的伺服器比較忙碌,有些圖片或元素還沒被下載完成,造成網頁的狀態還是「下載中」。針對這個可能的突發情況,建議您:

  • 搶票前:請先登入會員帳號,並先試買其他的活動,並取消,然後再回到準備要搶的活動頁面去重新整理頁面。
  • 搶票中:所以如果程式沒有自動跑的時候,請趕快自己手動去點。

Q:使用機器人腳本自動輸入欄位有機會會搶輸手動的嗎?
A:有些情況下,手動是可能比機器人腳本快。機器人腳本的原理是透過程式預先針對判斷網頁已出現的元素(element)來決定要自動操作網頁的項目是什麼,目前程式需要網頁完全載入(loaded),在這情況下程式因為網頁元件都初始化完成了,程式腳本跑起來問題才會比較少,缺點就是慢了一到二秒,另一方面在程式腳本在自動選票數、打勾同意和對焦到驗證碼的輸入框會比手動快,所以使用機器人和用手動搶票不會差太多,結論:當網頁完整載入速度比較慢的這個情況之下,機器人自動化腳本和手動搶票不會差很多,也有可能會搶輸手動;如果網頁載入速度快或一般的情況下,使用機器人腳本自動填值在理論上會比手動搶票快一到二秒。

Q:為什麼會卡在立即訂購的頁面5~6秒才跳進去選購頁面呢?是程式卡住了嗎?
A:有些情況下,手動是可能比機器人腳本快。參考上面的解答。遇到這個情況,請挑戰自行手動去搶票。

Q:它為什麼會自己選擇2張+會自己打勾?
A:因為有寫程式去自動輸入和打勾。參考實作原理:
http://stackoverflow.max-everyday.com/2018/03/selenium-chrome-webdriver/

Q:當我設定想購買的日期價格和數量,執行程式後我還需要手動做什麼嗎?
A:除了目前程式所提供的功能,其他都需要自己手動操作。

Q:付款的信用卡資訊是否輸要手動輸入?
A:除了目前程式所提供的功能,其他都需要自己手動操作。

Q:如果設定想購買的門票種類售罄,程式會自動輸換其他日期或價格嗎? 還是會停留在網頁待使用者自行再選。
A:會停留在網頁待使用者自行再選。

Q:請問我用kktix怎麼不會自動輸入答案,我看你網頁有寫會自動輸入。
A:很多問題都沒辦法自動去猜測,非結構(開放)性問題是一定沒辦法,需要在問題裡提供答案選項,而且問題使用的格式要程式已知的才行,只要kktix每次都使用不一樣格式,每次都沒辦法去猜測。

Q:我的搶票程式是就直接停住了,我這時候是能做什麼動作挽救嗎?
A:不用挽救,比照手動搶票,人工去點擊就好了。

Q:使用搶票程式,還是要自己去按幾張票嗎
A:運氣好時是不用自己按,你可以預期程式不會去按,要自己去按票數。

Q:請問kktix無圖形介面搶到後 視窗好像跳不出來…
A:你可以先不要勾, 去看同一場活動, 為什麼繼續.

Q:請教,KKTIX無法鍵入日期,讓機器人自動點選嗎?
A:因為,無需鍵入日期。參考看看這部影片,Max搶票機器人 (2023-02-24):KKTix,無視窗模式,多設定檔管
https://youtu.be/QgLAHkJbhqQ

Q:KKTIX的活動有reCAPTCHA標誌 那這樣適合用搶票機器人搶嗎?
A:reCaptcha 的問題目前無解, 預期機器人應該會被reCaptcha檢測到, 只能希望並挑戰在大量且多人搶票的時候, reCaptcha 會沒動作.

Q:KKTIX狀態API 這有開跟沒開對搶票由什麼影響嗎?
A:有勾的話, 搶票應該會快個 0.4 秒左右, 差異很大! 為了求有票, 帳號被鎖再創就好, 可以勇敢地勾下去。


相關文章:

台灣:

香港:

韓國:

其他:

[Python] 如何取出字串中的選項
http://stackoverflow.max-everyday.com/2018/12/python-regular-expression-findall/
這篇文章目是透過程式取得「驗證問題」裡的選項,再用程式來自動把選項用來回答問題。

Facebook網友回應

您可能也會感興趣的文章...

merge a git branch into master

電腦相關應用

git 開分支很快,透過 git branch 就可以了,切換 local 和 server 上的  branch 是使用 git checkout, 有分支總有一天會需 […]

Read More

獅尾右下圓黑體:改造思源黑體右下角變圓免費商用

生活小事

獅尾右下圓黑體基於思源黑體的右下角變圓和拔腳改造,更加簡明現代化的字體。支援简体中文、繁體中文、韓文與日文;可以免費商用,歡迎大家自由應用、自由改作! 「獅尾右下圓黑體」 […]

Read More

如何下載楓林網影片

生活小事

現在播放機的APP很方便,可以在大電視裡直接播放熱門的韓劇或電影,隨選隨看很方便,不需要使用傳統的方式先下載。而且付一點小錢可以看到更多VIP限定的影片,有付費除了播放流 […]

Read More

51 則留言

    1. 文章裡有寫的很清楚:搶票機器人原理:
      我是使用 python + selenium 來實作,除了python 程式語言可以使用 selenium,也可以用 c#, java, ruby, perl。

    1. 國內工程師因撰寫秒殺訂票程式遭刑事局逮捕
      https://www.techbang.com/posts/48849

      黃牛集團的行為,不僅造成網路售票公司網路流量異常,且因大量偽冒個資造成該公司與正常用戶之困擾,因此網路售票公司向刑事局提出妨害電腦使用及偽造文書告訴。

      自己使用,沒有「妨害電腦使用及偽造文書告訴」這2個問題。

      寫python 搶票,除非有證據證明有牟利行為,也無利用系統漏洞。只是利用工具來有效率的完成自己想買的商品。很難用現有法條定罪。

    1. 機器人沒辦法回答「非結構性」(人類才能理解)的問題。例如那張才是出道的專輯名稱。

  1. Traceback (most recent call last):
    File “C:/Users/Le/Desktop/KKTIX.py”, line 6, in
    “auto_press_next_step_button”:true,
    NameError: name ‘true’ is not defined

    請問這個錯?

  2. 你好 想詢問 只要有問問題那欄 我的程式就無法填入答案 帶其他張數勾勾送出那都沒問題 請問是為甚麼?

    1. 加油,你的問題,我有聽懂和理解,理論上如果你勾勾和按鈕的送出可以存取的到,理論上問問題那欄應該也可以,我也不知道你實際上遇到什麼問題。我沒有遇到你的這個問題。

  3. 這是我問題那欄的指令
    driver.find_element_by_css_selector(‘#registrationsNewApp > div > div:nth-child(5) > div.captcha.ng-scope > div > div > div > div > div > div > div > input.col-6.form-control.ng-pristine.ng-valid.ng-empty.ng-touched’).send.keys(ans)

    driver.find_element_by_xpath(‘//*[@id=”registrationsNewApp”]/div/div[5]/div[3]/div/div/div/div/div/div/div/input’).send.keys(ans)

    用xpath selector都無法填入 ans為答案 例如李準基的ans = ‘DELIGHT’

    1. 我是這樣填的 但這是出完題目後才去複製字串來做的
      driver.find_element_by_name(‘captcha_answer’).send_keys(“DELIGHT”)

      1. 我沒有你的這個問題,我是取得 .custom-captcha-inner 裡的 input 來 send_keys 是可行的。

  4. 已解決了問題 但遇到開賣問問題還是無解 這點覺得拓元的架構比較人性化XD

  5. 請問有辦法寫一個時間到自動搶票的版本嗎? EX:提前按開始,然後自動偵測時間,時間到就自動開始搶票

    1. 時間到自動搶沒有用,因為驗證問題,可能過不去,需要人工去處理。由於用戶端的時間和伺服器端可能不同步,所以,只能在用戶端重新整理,才能知道能不能開始搶票。

  6. kktix的另外一種驗證碼(文中提到無法猜的那種)是固定的,一般購買人都會知道,所以理論上只要開啓機器人時將答案設置進去并且驗證時機器人使用設置的代碼就可以

  7. 怎麼我的按下run之後
    會一直自動開出新瀏覽器 要我重新輸入帳密
    是哪裡出了問題嗎….

  8. 大哥你好~
    想請問你是怎麼解決機器人的判定(reCAPTCHA)問題
    我使用了user agent,還是會被判定~

  9. Max大
    我看reCAPTCHA是對方server會記錄我有沒有重複提交
    代表我每次要買票錢換一下IP應該就不會被認為是機器人了?
    謝謝~

    1. 你的問題太複雜,我看不懂。reCaptcha 和 kktix 在 server side 有什麼程式,這個要去問 kktix 的工程師才知道哦。

  10. 請問執行一兩個小時網頁就會出錯,得自己手動重新載入原本網頁才會繼續,有解決方法嗎?

    ERROR:logger:Exception
    ERROR:logger:Message: timeout
    (Session info: chrome=79.0.3945.88)
    Traceback (most recent call last):
    File “chrome_tixcraft.py”, line 3050, in main
    File “site-packages\selenium\webdriver\remote\webdriver.py”, line 669, in current_url
    File “site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
    File “site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
    selenium.common.exceptions.TimeoutException: Message: timeout
    (Session info: chrome=79.0.3945.88)

    exc Message: timeout
    (Session info: chrome=79.0.3945.88)

    ERROR:logger:Exception2 for alert
    ERROR:logger:Message: timeout
    (Session info: chrome=79.0.3945.88)
    Traceback (most recent call last):
    File “chrome_tixcraft.py”, line 3010, in main
    File “site-packages\selenium\webdriver\remote\switch_to.py”, line 55, in alert
    File “site-packages\selenium\webdriver\common\alert.py”, line 67, in text
    File “site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
    File “site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
    selenium.common.exceptions.TimeoutException: Message: timeout
    (Session info: chrome=79.0.3945.88)

    1. 你的電腦可以撐到 1~2小時算是很厲害了!
      這個問題,小弟我也還沒有想法,才疏學淺。

  11. 想請問一下,KKTX售票系統的機制,如果說進入同意以及點選下一步後的階段,如果沒買到會跳出已售完的提示視窗,一般可以不用刷新,直接Enter+連點下一步的方式進行搶票,想知道這部分該程式是否有實作?

    1. 文字讀起來,有點複雜,我也不是很懂發生在那一個情況下。
      「一般可以不用刷新」我沒有在搶,所以不知道會不會刷新畫面。
      「這部分該程式是否有實作?」沒實作的地方,還有很多。。。。

  12. 你好,请问你是如何处理问答验证的呢?因为我自己也写了一个kktix的抢票bot,但是目前对于这个问题的处理只能通过让用户手动输入,不知道是否能提前知晓问答验证的问题呀

  13. 您好,想請教Max,我自己嘗試撰寫的搶票code

    有參照您使用undetected_chromedriver,並將option也都照您的方式填入

    但當我輸入兩張票後,我使用chrmoe的開發工具F12

    觀察network的部份,會觸發rollbar,點「下一步」,會卡住不會跳轉

    觀察您的code不會遇到這個問題

    但我用python開啟的chromedriver,如果手動輸入票券數量,再點選下一步

    是可以正常跳轉頁面的,請問您當初有遇到這個問題嗎?

  14. Max您好:
    填入括弧內的數字,現在似乎改成全形數字混砸半形數字。這個有解嗎?

  15. 我在測試KKTIX的時候,發現選擇張數那個頁面有時候+-張數的符號會變成空白,這時候程式就無法自行輸入張數,會一直重新頁面無法進行下一步(但手動點選是可行的);若是其他+-張數的符號會正常顯示的表演,程式就可以正常運作。

  16. Max大你好,我使用的是Arm Mac。
    我想問,在搶票之前,如何確認ddddocr有在正常運作?
    我在裝package的時候,已經確認”ddddocr”和”onnxruntime”這兩個package(和其他dependencies)有被安裝了。在開啟設定的UI後,也確定ddddocr選項有被勾起來,請問這樣就表示ddddocr有在運作嗎?
    還是可以藉由什麼debug message看出來?

  17. Max大你好,請問下之前有試過到最後一步,頁面有自行選位和電腦選位兩個按鍵時,程式會自動幫按左邊自行選位,會有辦法改成自動按右邊的電腦選位嗎?謝謝

發佈回覆給「Max」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *