使用虛擬主機搶票好處很多, 不會遇到太多相同來源IP addres 造成的拓元售票網站的 403 錯誤, 而且網路的反應時間比用台灣的網路還更短, 最有機會買到票的方式, 應該就是用虛擬主機來搶票了。
最佳的解法之一是:租用位於美國東部的虛擬伺服器, 在Linux虛擬主機上安裝遠端桌面, 連進虛擬主機後安裝 chrome 瀏服器, 然後再執行python指令, 就可以在遠端伺服器上搶票。
透過 whois ip, 或 ip location 的服務, 我們可以知道拓元的網頁伺服器目前是在美國的 Ohio(俄亥俄州), 在搶票的連線, 如果與伺服器之間的距離愈短, 通常反應時間會較短, 自然搶到票機率就會更高。
要增加搶到票的機率除了時間更短之外,建議使用真實個人資料多創幾組帳號來搶票,可以有效地提升搶到票的機率。
雖然這篇文章是以虛擬主機來示範,但是在 Windows / macOS / Linux 平台裡的 python 操作方式是類似的,幾乎相同。
文章的目錄
- 虛擬主機執行MaxBot影片
- 虛擬主機比較快,還是自己的電腦?
- 怎麼測量與售票系統的網頁伺服器之間的距離?
- 怎麼知道虛擬伺服器的IP 是否被售票平台擋掉?
- 租用雲端運算主機的費用
- 取得 MaxBot 原始碼
- 執行 MaxBot
- 其他的售票系統的搶票
- 相關網頁
虛擬主機執行MaxBot影片
影片內容說明:
- 首先是在其他瀏覽器登入完拓元後, 取得 cookie 的 SID 值,
- 在虛擬主機的設定介面存入拓元 SID,
(指令是:python settings.py
) - 透過指令的方式執行搶票程式.
(指令是:python chrome_tixcraft.py
)
虛擬主機硬體說明:
影片的CPU 數目只有 2 CPU, 所以虛擬伺服器的CPU 選 4 CPU 應該就夠用了, 建議還是選 8 CPU, 反正才差幾塊錢, 買的到票比較重要。
如果你只是 IP 位置被擋, 或希望每次開出來的瀏覽器套用到不同的IP, 參考看看這篇文章:
如何透過Python自行架設代理伺服器 (Proxy Server)
https://stackoverflow.max-everyday.com/2023/11/python-proxy-server/
實際在搶票時的影片:
2023-11-18 五月天 [ 回到那一天 ] 25週年演唱會 搶票心得
https://youtu.be/dmc96JfG3ts
沒注意到刷錯活動, 點到返鄉專車…
虛擬主機比較快,還是自己的電腦?
在MaxBot的執行視窗可以看到目前瀏覽中的網址,在結帳的畫面時,會顯示從挑日期到最後結帳花了多少時間,雖然虛擬主機的CPU較慢,但實測花費時間較短。
以下針對同一時間,同一場次做購票測試,包括轉圈圈所花時間。虛擬主機 4 CPU 的環境,平均在 9.1 秒完成。

2 CPU 的環境,平均在 9.6秒完成。

真心建議在虛擬主機搶票的話,使用 8 CPU 來搶,效果會較好。
在古董的Windows 筆電上測試,如果多試幾次,大約可以保持在 14 秒左右,秒數被拉大的主要原因就是驗證碼遇到太難的,一但猜錯就會多花2秒左右。
古董的Windows 筆電規格:
- CPU: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 2.71 GHz
- RAM: 8 GB

在古董的Windows 筆電上,實測使用 python 原始碼執行搶票的速度比打包的執行檔速度快大約2秒左右,大約可以保持在 12 秒左右。
網友的電腦提供的數字, 大約平均在 8.7 秒完成, 偶爾時候會出現計算錯誤的情況。

花費時間的計算是從選日期的頁面開始計算, 直接彈出有座位的畫面為止,有時候猜錯驗證碼,或伺服器轉圈圈會很久,也都包括在這個花費時間中。
如果要參加拓元的跑步比賽, 建議參賽的電腦最好是可以包含轉圈圈的花費時間在10秒內,買到票的機率會較高。
https://max-everyday.com/2023/11/buy-ticket-by-vm/#vm_vs_pc
可以用這個方式到網咖去測試看看花費時間長短,再決定是要在家裡搶票還是用網咖的電腦。
怎麼測量與售票系統的網頁伺服器之間的距離?
通常選擇與伺服器同一個國家, 效果應該會最好. 實際上只要反應時間愈短就是愈好.
在網路的世界裡, 有一個叫 traceroute 指令, 在 window 裡是下 tracert, 透過這個指令可以知道你目前的網路情況下, 連到伺服器中間經過了那些主機幫你接力的傳送網路封包, 以在台灣地區, 使用台灣之星的網路, 執行畫面如下:

traceroute 簡介:
https://zh.wikipedia.org/zh-tw/Traceroute
使用 digital ocean 在米國紐約市的伺服器, 雖然比不上直接使用 Amazon 虛擬主機, 數據上也很漂亮。

linode 日本連到美國, 雖然比台灣快, 但是還是慢了一些些:

在建立 Linux 的虛擬主機時, 大多建議使用 ubuntu 且有 LTS 的版本, 會遇到的問題較少一點, 不只是 ubuntu 可以用, 我是使用 Rocky Linux, 如何在 Amazon/Microsoft/DigitalOcean/Linode/TWCC 的虛擬主機上安裝遠端桌面, 參考看看:
Linux VM 上安裝桌面環境
https://stackoverflow.max-everyday.com/2023/02/linux-vm-xrdp-desktop/
當然, 除了 Linux 可以選擇之外, 也有 Window 的虛擬光碟可以選擇。
幫虛擬主機開機後, 請幫主機安裝 chrome 瀏覽器, 安裝好後, 再按裝 python 3.10 或 python 3.9 在伺服器裡, 由於我選的 Rocky Linux 8.0 版太古老, 內建的python 是 3.6 , 我另外安裝了 python 3.9 版.
怎麼知道虛擬伺服器的IP 是否被售票平台擋掉?
只要先連進伺服器後, 下 curl + 網址的指令, 就可以知道結果, 例如:
curl https://tixcraft.com

顯示 403 Forbidden
或是 {"response":"block"}
就是被擋掉了.
Q: 我有使用虛擬主機,但 ticketmaster.sg好像封鎖了所有虛擬主機的ip,無論怎麼切換都無法進入網頁,這個有解決方案嗎?
A: 測試用digital ocean 在sg 的虛擬主機, 的確是被封了, 顯示: {"response":"block"}
, 使用 linode 虛擬主機結果也是一樣不行.
目前虛擬主機對搶票系統來看, 似乎是知名的就會被封鎖, 目前只能除了常見的這些業者, 才不會被擋掉.
台灣與大陸還是有很多雲端運算 (IaaS)的提供業者, 目前我使用中的台灣的業者並沒被被 ticketmaster.sg 伺服器封鎖.
Q: 如何選擇較佳的虛擬主機?
A: 當然是距離實際售票的主機連線反應時間愈短愈好.
以 ticketmaster.sg 伺服器在美國的加洲(California) 為例子, 雖然官方擋掉部份IP address, 但是這世界上還是有暫時沒被封鎖的虛擬主機, 可以先試看看美國業者提供的虛擬主機, 如果被封鎖, 再慢慢往外找.
Q: 是不是拓元把網站伺服器架在國外比較安全?
A: 並不是, 因為 Amazon 的雲端運算是世界第一品牌, 而且平常時不需要使用到那麼多台的網站伺服器, 就可以只開的夠用的數目做負載平衡(Load Balancing), 等有大型搶票活動, 可以動態地加開伺服器, 不需要平常時就花大錢養機器。
Server Load Balance(伺服器負載平衡),功能在於將企業內多部伺服器的負載量作平衡,將過大流量轉向相同功能的其他伺服器,讓每一部伺服器工作量維持平均,保持服務不因流量過大而變慢或中斷。
租用雲端運算主機的費用
在 Digital Ocean 以 8 intel CPU + 16GB Ram 的主機, 1小時是 0.19 美元 等於 台幣 $6.13元, 滿便宜的, 比去網咖還便宜。

在 Linode, 以 8 intel CPU + 16GB Ram 的主機, 1小時是 0.216 美元 等於 台幣 $6.96元,
華盛頓特區在俄亥俄州的右邊, 實體距離應該也很近。

Amazon 虛擬伺服器定價:
https://aws.amazon.com/ec2/pricing/on-demand/
8 CPU + 16GB RAM, 每小時 $0.2688美金=8.66台幣.

中華電信, 台灣的南部的”運算優化型”的價格:
https://cloud.hinet.net/hicloud/index.html?type=cvpc§ion=price
8 CPU, 16GB RAM, 每小時 10.32台幣, 對Linux 不熟悉的, 可以選擇貴一倍的Window, 預算不夠多, 就選 4 CPU 版本, 價格少一半。

Q: 該選中華電信南區還是國外的虛擬主機呢?
A:要選那一台主機都可以,主機選擇,第一步是要先確定有沒有被網頁伺服器封鎖。
如果是要搶拓元家族的話,可以確定Linode/DigitalOcean 的伺服器的IP很多都被擋掉了。
第二步,才是用「網路反應」時間來決定,traceroute 遇到的節點較多的,不一定會比較差,一般的情況下,traceroute 經過的節點數目較少時,反應時間會較短。
第三步,執行瀏覽器主機的選擇,一般的情況下,虛擬主機的網路通常會比家用的網路快,家用的筆電的CPU數及硬體設備會比虛擬主機好。
建議在虛擬主機上,開分身的帳號來自動搶票。
取得 MaxBot 原始碼
安裝好 python 之後, 請下載我的 MaxBot 原始碼:
https://github.com/max32002/tixcraft_bot

可以直接在 github 上下載 zip 檔, 也可以使用 git 指令來 clone(複製) 專案:
git clone https://github.com/max32002/tixcraft_bot.git
有原始碼之後, 需要安裝 python 相依的套件, 請在 Terminal 裡進入 tixcraft_bot 目錄後, 執行以下指令:
python3 -m pip install -r pip-req.txt
我的虛擬主機, 無法直接執行上面的指令, 因為 python3 會使用系統內建的 python 3.6, 所以我是使用指令:
python3.9 -m pip install -r pip-req.txt
說明: 建議把 python3 這個指令的 symbol link 指到你目前習慣使用的 python 版本, 這句話太難, 一般人應該比較難理解, 我是沒去修改.
安裝好之後, 需要再下一行指令:
python -m pip install git+https://github.com/max32002/python-chromedriver-autoinstaller@master
說明: 這裡的 python, 需要手動修改為 python3 或 python3.9 要以你的環境為準.
前置工作都準備好了,
執行 MaxBot
需要使用參數設定可以執行指令:
python setting.py

要執行搶票程式, 如果無法按下”搶票” 按鈕, 請手動執行指令:
python chrome_tixcraft.py
說明: 這裡的 python, 需要手動修改為 python3 或 python3.9 要以你的環境為準.
Q: 售票的主機在國外, 是不是就不適用台灣的《文創法》或《社會秩序維護法》?
其他的售票系統的搶票
都比照這篇文章的解法就可以了, 看是要搶便宜機票, 還是搶PS5, 搶蝦皮優惠券之類, 先找出主機的實體位置, 或是找一台 traceroute 路徑較短的虛擬主機, 在主機上搶票效果就會很好。
相關網頁
台灣:
- Max的拓元搶票機器人
http://max-everyday.com/2018/03/tixcraft-bot/ - Max的KKTIX搶票機器人
http://max-everyday.com/2018/12/kktix-bot/ - Max的FamiTicket搶票機器人
http://max-everyday.com/2019/01/maxbot-famiticket/ - Max的ibon搶票機器人
https://max-everyday.com/2023/01/ibon-bot/
香港:
- Max的城市售票網搶票機器人
http://max-everyday.com/2019/02/urbtix-bot/ - Max的cityline搶票機器人
https://max-everyday.com/2019/03/cityline-bot/ - Max的快達票搶票機器人
https://max-everyday.com/2023/01/hkticketing-bot/
韓國:
- Max interpark 搶票機器人
https://max-everyday.com/2023/08/interpark-bot/
其他:
- Max自動掛號機器人
http://max-everyday.com/2018/08/max-auto-reg-bot/ - inline 填表單機器人
https://max-everyday.com/2022/09/inline-bot/ - [MaxBot]請問新加坡的 ticketmaster 怎麼輸入選區呢?
https://max-everyday.com/2023/10/ticketmaster-area-auto-select/ - Max 學習 selenium
http://stackoverflow.max-everyday.com/tag/selenium/ - Max搶票機器人Facebook粉絲團:
https://www.facebook.com/maxbot.ticket/ - 香港的售票網站的等待10秒後重試
https://max-everyday.com/2023/01/cityline-wait-10-seconds-retry/ - 拓元的搶票,要多少的網路頻寬才夠?
https://max-everyday.com/2023/02/how-many-band-width-you-need-to-buy-ticket/ - Max 搶票機器人的固障排除
https://max-everyday.com/2023/11/maxbot-troubleshooting/ - 搶票常見問題整理
https://max-everyday.com/2023/02/common-problem-when-you-buy-ticket/ - 如何用虛擬主機搶拓元的門票
https://max-everyday.com/2023/11/buy-ticket-by-vm/ - 如何透過Python自行架設代理伺服器 (Proxy Server)
https://stackoverflow.max-everyday.com/2023/11/python-proxy-server/