Max的KKTIX搶票機器人

我隨手寫了一個kktix網站的搶票機器人,執行畫面:

影片網址:KKTIX 搶票機器人 (2018-12-11) 第一版
https://www.youtube.com/watch?v=R3nc3BG-LiE


我也沒搶到票,因為程式沒寫好,沒有考慮到「請回答下列問題」:
KKTIX 搶票機器人 (2018-12-12) 失敗 (第二版)
https://www.youtube.com/watch?v=PKLQ46TKlEU


KKTIX 搶票機器人 (2018-12-20) 失敗 (第3版)
https://www.youtube.com/watch?v=Kh_zWQztdhA

很認真D讀完題目,發現不知道答案是什麼。瞬間呆掉~ 呵呵,開始從後面往前猜。


附上程式掛掉的畫面:

請問下列哪張專輯為林俊傑出道專輯?(1A)飛行者(2B)礫行者(3C)樂行者(請以半形輸入法作答,大小寫需要一模一樣,範例:1A)

說明:上面的答案是 3C

以下哪個「不是」正確的林俊傑與其他藝人合唱的歌曲組合?(選項為歌名/合作藝人 ,請以半形輸入法作答選項,大小寫需要一模一樣,範例:jju) 選項: (jjz)I am alive/Jason Mraz (jjy)友人說/張懷秋 (jjx)豆漿油條/A-Sa蔡卓妍 (jjw)黑暗騎士/五月天阿信 (jjv)手心的薔薇/G.E.M鄧紫棋

說明:上面是 2/15 的問題,答案是 jjx。
附註:2/14 的問題:以下哪個「不是」正確的林俊傑與其他藝人合唱的歌曲組合?(選項為歌名/合作藝人 ,請以半形輸入法作答選項,大小寫需要一模一樣,範例:jju) 選項: (jja)小酒窩/A-Sa蔡卓妍 (jjb)被風吹過的夏天/金莎 (jjc)友人說/張懷秋 (jjd)全面開戰/五月天阿信 (jje)小說/阿杜


有時候會問開放性的問題,題目裡沒有選項:

請填入您所購買的演出日期(4位半形數字)

回答指定文字:

請回答下列問題,請在下方空格輸入DELIGHT(請以半形輸入法作答,大小寫需要一模一樣)

kktix 還有另一種的驗證碼:


KKTIX搶票機器人 (2018-12-26) (第4版):
https://www.youtube.com/watch?v=wnjcAT5I2oI

說明:上面這部影片,是假設提問的問題的答案選項有下面這幾組,並自動搶 1,000元的票2張:jja,jjb,jjc,jjd,jje,0118eveconcert

如何快速取得問題的選項:[Python] 如何取出字串中的選項
http://stackoverflow.max-everyday.com/2018/12/python-regular-expression-findall/


主要功能:

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

參數設定說明:

附上一個小程式 settings.exe 來修改設定檔(settings.json),執行畫面如下:

參數說明:

  • homepage“: 設定機器人一開始開出那一個網址。
  • browser“: 設定機器人用那一個瀏覽器,目前支援 “firefox” 和 “chrome”
  • ticket_number“: 設定票數
  • auto_press_next_step_button“: 設定要不要自動點選「下一步」。要啟用這個功能請修改打勾。即使您設定為啟用自動點選「下一步」,但如果該場次有彈出「驗證問題」,這一個設定值將會不被採用,因為沒回答問題也沒辦法點下一步,而且也不知道何時要點,這時候需要您人工手動回答完 KKTIX提問的問題後,再自己去點「下一步」按鈕。
  • auto_fill_ticket_number“: 設定自動輸入想要的票「張數」。要停用這個功能請取消勾選。
  • area_keyword“: 設定指定的票價或關鍵字,要注意,金額的格式需要和官方網站上的一致,官方有逗號的地方要一樣。

搶票的建議:

建議實際在搶票時開啟2個瀏覽器,一個是透過搶票機器人。另一個是傳統無外掛手動去搶票,因為如果遇到搶票的程式掛了或官方網站的改版,還可以搶看看第二輪或清票。

設定範例1號,挑戰完整功能:

說明:會自動點「下一步」按鈕,會自動填入張數,目標的票價是$1,000,使用這組設定搶第一輪。
附註:由於常常會發生「不可預期」的情況,像是伺服器改版,或是搶票程式沒寫好,所以會搶不到票。


設定範例2號:

說明:這個設定值,可以幫我們自動打勾「我已經閱讀並同意 授權條款 與 隱私權政策」,省下一點點的時間。建議在第一時間沒有搶到票,第二輪搶剩餘的票可以使用這個設定值。
附註:搶剩餘的票,機率也很低,有搶有機會。


搶票機器人原理:

我是使用 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:MAX搶票程式該如何取得?
A:匯錢給我,即可取得。也可以參考看看實作方法自行挑戰看看。

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

Q:若購買程式後,您有新功能或改版,能無限更新嗎?
A:沒有,因為不確定有沒有辦法更新,也許賣票的平台請到更厲害的工程師。

Q:有電腦安裝數的限制嗎?
A:沒有限制,你可以取得並修改我所寫的程式碼。

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

Q:沒辦法 點2下執行檔就跑
A:

1:請先確認您的 chrome 有更新到最新版本。

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


2:請先「解壓縮」你的壓縮檔,不能直接在壓縮檔裡執行。
3:點 2下 chrome_tixcraft.exe

macOS 的用戶請改點 MaxBot app .


相關文章:

Max的拓元搶票機器人
http://max-everyday.com/2018/03/tixcraft-bot/

Max的FamiTicket搶票機器人
http://max-everyday.com/2019/01/maxbot-famiticket/

Max自動掛號機器人
http://max-everyday.com/2018/08/max-auto-reg-bot/

Max 學習 selenium
http://stackoverflow.max-everyday.com/tag/selenium/

Facebook網友回應

21 comments

    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”)

寫留言

你的電子郵件位址並不會被公開。 必要欄位標記為 *