[心得分享] iPhone Reserve Bot 教學 1 - 搜集資料

本帖最後由 goofyz 於 2015-9-15 20:01 編輯

原 blog link ,圖片請到原 post 看。

==================================
前言

全城熱炒的 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

接下來是偵探遊戲,要找找那一個 request 是有用的。JPG/PNG、javascript、css 的相關 request 都可以不理,慢慢的看會發現類似 request:

Captcha request

https://signin.apple.com/IDMSWebAuth/imageCaptcha/942#XXXXXXX

看一下 response 便會發現是 captcha 圖片,由此可以知道此便是 captcha 的 request。除非你有所謂的「大法」,不然的話 bot 必須完整模擬整個預訂過程。所以先記住此 URL,到實際寫 bot 時會用到的。

現在輸入 apple ID 密碼和 captcha 再 submit, 在 firebug 便可看到一個 post request,點選即可查看遞交了的 paramters

Post request

點擊一下便可查看遞交的 parameters:

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。

====================================
原 blog link ,圖片請到原 post 看。

Thanks, 一路都想學呢類野

TOP

Thanks, Learning !

TOP

Learning

TOP

THANKS
ID 已用晒 不過一直都好想了解下

TOP

留名學野

TOP

原理明白,就是進不到第三頁,然後就放棄了。

TOP

有好野緊唔會比佢沉啦.
期待你的PART 2

TOP

期待PART 2,多謝分享

TOP

Great !!!

TOP

相關文章