iPhone Reserve Bot 教學 1 - 搜集資料
前言
全城熱炒的 iPhone,每次 Apple 一放貨出來,不用三十秒便已被人訂光,不用自動化程式去遞交基本上沒有機會訂到。其實這類自動化程式不太難寫,因為只是模擬 html request 而已。我們來研究一下吧。
要求
開始前,建議你對 html get/post 有基本認識,也要對 programming 有基本底子。另外由於 Reserve 需用到 SMS,我們會用 Android 來寫此程式,所以你最好對 Android App development 有所了解。
基本流程
要寫 bot,當然要了解整個流程,如有幾多個頁面,每頁之間要交換的資料等。
如你已買過一次,應該也知道整個預訂流程,現在整理一下:
- 瀏覽第一頁
- 用戶在輸入 apple ID 、密碼和驗證碼 captcha,按遞交
- 第二頁會顯示 SMS 的碼
- 用戶用手機將 SMS 碼以 SMS 形式寄到 Apple 電話,等待回覆
- Apple 回覆 SMS 預訂號碼
- 用戶到第二頁輸入發送 SMS 的手機號碼和 SMS 預訂號碼,遞交
- 用戶選擇 Apple Store、iPhone Model 、容量大小和 Contract type
- 如有存貨,用戶可輸入姓名、電話、身份證明號碼和時間後,遞交
- 預訂成功/失敗
Developer Tools
要獲得這些資料,以前可能要自行分析網頁設計,所幸現在的 browser 非常先進,內置 developer tools,可以方便的查看 html form 遞交的資訊,要了解整個流程真是簡單得行。
以下以 Firefox 為示範,Google Chrome 內置的 Developer tools 同樣可以做到,不過我個人喜歡 Firefox 多一點。
用 Firefox 的話,請先安裝 Firebug extension。安裝後,開一新 Private Window,用 Private Window 是排除蘋果網站種下 cookie 影響測試結果。
按 F12 開啟 Firebug,Firebug 有幾個 tab ,我們會用到的主要是 Net,enable 它後,開啟 Persist 設定,這樣所有網絡的 request 和 response 都會記錄下來。
準備好後瀏覽:
https://reserve-hk.apple.com/HK/en_HK/reserve/iPhone
可以看到所有圖片、js、css 的所有 request 都有記錄。讓我們來看看第一頁的情況:
接下來是偵探遊戲,要找找那一個 request 是有用的。JPG/PNG、javascript、css 的相關 request 都可以不理,慢慢的看會發現類似 request:
https://signin.apple.com/IDMSWebAuth/imageCaptcha/942#XXXXXXX
看一下 response 便會發現是 captcha 圖片,由此可以知道此便是 captcha 的 request。除非你有所謂的「大法」,不然的話 bot 必須完整模擬整個預訂過程。所以先記住此 URL,到實際寫 bot 時會用到的。
現在輸入 apple ID 密碼和 captcha 再 submit, 在 firebug 便可看到一個 post request,點選即可查看遞交了的 paramters
點擊一下便可查看遞交的 parameters:
其他頁面的做法相同,只要自己試一次預訂便可知道所有相關的資料了。
沒有存貨?
但在最後一版若沒有存貨可以怎試? 可用 html tab 的 mouse (1)
再點選其中一個 iPhone Model 後,在 html tab 可看到有很多隱藏的 li
, 先揀其中一個 (2), 再 disable hidden style (3), 便可在網頁揀選一個 iPhone Model 繼續了。
若沒 timeslot 的話,便點擊 timeslot box 後用 edit function 自行加一個 option 進去, value 隨便打的便可以,畢竟我們的目的是測試和記錄所有 parameter,只要可以遞交便行。
完整流程
如果你完整的記錄整個步驟的話, 便會發覺網頁在看不見的地方也做了些 data loading, 來看看完整的步驟:
- 在第一頁
- 網頁會下載驗證碼 captcha
- 用戶在輸入 apple ID 、密碼和 驗證碼 captcha,按遞交
- 在第二頁會用 ajax 下載顯示 SMS 的碼
- 用戶用手機將 SMS 碼以 SMS 形式寄到 Apple 電話,等待回覆
- Apple 回覆 SMS code
- 用戶到第二頁輸入發送 SMS 的手機號碼和 SMS 回覆碼,遞交
- 在第三頁網頁會自動下載你的個人資訊
- 用戶選擇 Apple Store
- 網頁會下載 Apple Store 的 timeslot 資料
- 用戶選擇 iPhone Model 、大小和 Contract type 後
- 網頁會下載存貨資料
- 如有存貨,用戶可輸入姓名、電話、身份證明號碼,遞交
- 預訂成功/失敗
知道需要的資料後,下一步便是實際寫 bot。
Apple iPhone Reserve Bot 教學 - 首頁