Max的拓元搶票機器人

2018-10-20 更新:
https://www.youtube.com/watch?v=huU4e9pcQLM

 


2018-09-28 更新:
https://www.youtube.com/watch?v=VvLm7wxm2lk


2018-02-28 搶安室奈美惠的票,透過純手動人工搶票,一張都沒搶到,也有挑戰搶清票那場,也是都沒搶到 @[email protected];,怒寫了一個web bot(網頁機器人)。

主要功能:

  • 1:會自動按「立即購票」的按鈕。
  • 2:自動選取第1個可以購買的場次(可以參數調整)。
  • 3:自動選取第1個可以購買的區域(可以參數調整)。
  • 4:自動選擇「張數」(目前是會自動選擇 2張,該場次沒有 2張可選會改選 1張)。
  • 5:自動「打勾」會員服務條款
  • 6:把驗證碼的框框點一下,讓鍵盤可以直接輸入。

有了機器人,買票就只剩下要打驗證碼。這個驗證碼,請記得提早去練習

這個機器人滿好玩的,可以跑在 Linux / Mac OS / Windows 這 3個平台上。除了使用 Chrome 瀏覽器也可以 FireFox 或 Safari。

除了 python 可以使用 selenium,也可以用 c#, java, ruby, perl.


實際程式碼,大約 40行 python 的  source code,原理:

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

手動操作:拓元搶票技巧
http://max-everyday.com/2018/02/tixcraft/

關於「場次」和「區域」參數調整的我想到的方法有二個,可以用「文字」也可以用 「索引」(第幾個),也許還有其他更好的解法。

在場次的網頁裡,點選的文字都是「立即訂購」,這個要透過「文字」來處理上就比較麻煩一點,需要去取得第一欄位裡文字來判斷。

在場次的網頁裡,透過超連結的「索引」值來判斷有另一個需要處理的就是提早賣完的場次會顯示「已售完」,是沒有超連結可以選取,所以「索引」值會出問題。但是如果是先去找出第幾行,再去找該行裡的超連結,這樣子透過索引值來處理就一定不會出錯,可以準確自動點選到想要的場次。

對於會被秒殺的演唱會,大多都是一票難求,如果您的網頁基礎還有程式設計的邏輯能力沒有很強,而且開發的時間沒有很時間充裕,建議場次和區域這部份不要寫程式去自動點選,場次和區域自己透過手動操作就好了,這樣會簡單一點。

「場次」和「區域」,用程式去點和人工手動去點差不了多少。選坐位、勾選同意,也不會花掉很多時間,也和人工手動去點差不多,有沒有使用這個機器人去搶票,其實不會差太多。


相關新聞:

為什麼這些臉書社團總有熱門演唱會黃牛票?國內工程師因撰寫秒殺訂票程式遭刑事局逮捕
https://www.techbang.com/posts/48849

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

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

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


結論:

python 滿神奇的,有空應該要學一下,很實用。

 

無論你遇見誰,他都是你生命該出現的人,絕非偶然,他一定會教會你一些什麼,無論我們走到哪裡,那都是我該去的地方,經歷一些我該經歷的事,遇見我該遇見的人。每件事的發生必有其原因,也有助於你。


Sometimes you fall down because there is something down there that you are supposed to find.

Facebook網友回應

相關文章

12 comments

    1. 拓元的「驗證問題」,通常需要手動去 copy/paste畫面上指定的文字。理論上程式也可以做到,但由於無法重覆驗證,還是透過滑鼠點2下複製/貼上會快一點。

  1. 你好
    想請問一下,一個人要同時搶兩天的票,第一天搶到票了我可以不先結帳而直接按繼續選購後直接跳到選位的頁面,直接選擇第二天的日期及位置嗎?
    這樣我第一天的票還是保留著嗎?

    1. 理論上針對「熱門的」活動,不是第一時間能搶到票的機率很低。針對你的這個需求,建議你分2個瀏覽器去搶,第一個去搶第一天的並開始出現「轉圈圈」時就可以切到第二個瀏覽器去搶第二天的。

    1. 已重新修改範例2號,不能執行的原因是因為使用了 time.sleep(5) 卻沒有 import time, 解法是刪除 time 相關程式碼即可。

  2. Max大 您好
    雖然文章中未提到,但想請問關於驗證碼自動填入的部分,您是否有比較推薦的實作方向?
    謝謝

    1. 當人們在網站註冊或購物時,經常會出現圖像驗證碼的輸入要求,為了區分「真人」與「機器人」,圖片會出現線條及扭曲分隔開的文字,讓電腦程式的機器人難以辨識,目前Max的搶票機器人沒有辦法處理「驗證碼」的部份,需要人工去輸入,機器人幫忙處理其他的欄位的輸入。

      人外有人,天外有天,驗證碼的部份應該也可以透過程式識別,識別也是有分難度的,簡單的驗證碼可以透過去切割圖片,再把切割好的圖片採用深度學習(Deep learning)的方式去訓練就可以有效提升識別率。難一點的驗證碼就是字元會變形、重疊還有雜訊。拓元網站是屬於中上等級,只有變形和重疊。

      沒有推薦的實作方向,因為我也沒有研究過。

寫留言

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