作者: goofyz 時間: 2014-10-15 09:09 標題: 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 看。
作者: Newbie 時間: 2014-10-15 15:35
Thanks, 一路都想學呢類野

作者: smith1943 時間: 2014-10-15 15:39
Thanks, Learning !
作者: ss08116g 時間: 2014-10-15 21:21
Learning
作者: PC147 時間: 2014-10-16 01:46
THANKS
ID 已用晒 不過一直都好想了解下
作者: eh 時間: 2014-10-16 07:57
留名學野
作者: D@niel 時間: 2014-10-16 09:45
原理明白,就是進不到第三頁,然後就放棄了。
作者: qtimeqtime 時間: 2014-10-16 15:09
有好野緊唔會比佢沉啦.
期待你的PART 2
作者: zero1992 時間: 2014-10-16 15:26
期待PART 2,多謝分享
作者: carlchanhm 時間: 2014-10-17 00:31
Great !!!
作者: user369 時間: 2014-10-19 11:59
推下先
改precaptcha 係唔係先抽其他地區 IR PAGE session , 係未 expired 之前要入返香港IR 地址 ??
作者: cheung74 時間: 2014-10-19 18:15
只差SMS個位,求教學
作者: kkeennken 時間: 2014-10-19 18:52
十分感謝
作者: goofyz 時間: 2014-10-19 22:33
推下先
改precaptcha 係唔係先抽其他地區 IR PAGE session , 係未 expired 之前要入返香港IR 地址 ?? ...
user369 發表於 2014-10-19 11:59
我都想知 ...
作者: goofyz 時間: 2014-10-19 22:34
SMS 要到 part 3 先講到.....part 2 仲係努力緊
作者: gsmjmm 時間: 2014-10-19 23:21
thank for sharing ...
先研究下part1.... 先
作者: 是但 時間: 2014-10-20 21:52
如何 0 秒登入 iReserve ,得唔得?
https://www.youtube.com/watch?v=pwaUlP55TIM
作者: stlive 時間: 2014-10-21 12:39
我相信有高級bot做到,因為每日最貴model都畀人秒殺了
作者: goofyz 時間: 2014-10-21 15:19
久等了的Part 2:
http://www.hkepc.com/forum/viewt ... ;extra=#pid32553583
作者: PC147 時間: 2014-10-21 15:43
作者: goofyz 時間: 2015-9-15 20:00
iPhone6s 又有得玩,推返上黎先。
作者: ftset 時間: 2015-9-16 02:29
回覆 21# goofyz
今年o個login page... a bit different wor
作者: bugb 時間: 2015-9-16 03:47
login容易,dims有冇人識?
作者: scotland 時間: 2015-9-16 13:51
回覆 23# bugb
c兄已經搞掂個login? 就咁 form submit好似唔得喎!
作者: othree 時間: 2015-9-16 18:13
今年有冇 irc group

作者: bugb 時間: 2015-9-17 05:17
回覆 24# scotland
login冇難度,bot唔會用form的
作者: scotland 時間: 2015-9-17 08:56
回覆 26# bugb
唔用form submit? C兄可唔可以比多d hints,用什麼submit?
我 compose晒 d account password post json, 再 post forms parameters 上 server,頭一個response 無問題,第二個response唔係200而係302?redirect 唔到去 execution而去返 login page!
作者: 艾迪 時間: 2015-9-17 09:35
你該應講 POST...
關鍵係第一個 POST, 第一個 POST send 齊野, 第二個 POST 就會 redirect 去 sms page.
作者: scotland 時間: 2015-9-17 09:54
回覆 28# 艾迪
多謝C兄提點!但除了account, password, remember me仲有其他野要send?
作者: 是但 時間: 2015-9-17 17:35
我都係唔知第1個post 仲有乜嘢要sent?有無Tips?
作者: ftset 時間: 2015-9-18 04:52
/availability.json... 冇左content...
作者: cheryl12 時間: 2015-9-20 21:16
提示: 作者被禁止或刪除 內容自動屏蔽
作者: scotland 時間: 2015-9-20 22:44
基本上完工了,測試可成功reserve,要再fine tune下program flow同error handling。
作者: goofyz 時間: 2015-9-21 10:10
最麻煩係 d 位
作者: scotland 時間: 2015-9-21 10:37
回覆 34# goofyz
C兄 you are right. Test唔到香港嘅flow好麻煩,轉model唔知要唔要relogin,要唔要再sms,唔知仲有無30秒order limit....
作者: ftset 時間: 2015-9-21 14:05
回覆 35# scotland
30 sec.. yes... i used Canada IR...
作者: scotland 時間: 2015-9-21 14:16
回覆 36# ftset
Thank you for your input!
作者: TunnelBear 時間: 2015-10-9 13:13
提示: 作者被禁止或刪除 內容自動屏蔽
作者: AnsonMk 時間: 2015-10-9 16:52
有無人知點解reserve 到CA 定reserve 唔到HK
HK 次次都出createReservationError
求教
作者: goofyz 時間: 2015-10-9 21:17
太快了
作者: kch123 時間: 2015-10-13 17:53
仲未搵到dims 點黎

有冇師兄可以比下貼士小弟 orz
作者: cosco252 時間: 2015-10-28 09:41
趁IR 就玩完,有野想請教吓!
到底除咗 &selectedGovtIdType=idHongkongCard&govtId=A1234567 之外,
訂 CA 同訂 HK 有乜 settings/parameters 唔同?點解同一段code, 訂CA ok,訂 HK 就create reservation error?啲requests之間加晒delay都一樣死。用always有貨嘅細機16試都唔得。個program加返carrier等info甚至訂 us 都冇問題!
作者: ftset 時間: 2015-10-31 22:04
回覆 42# cosco252
header?
作者: Jazz 時間: 2015-11-2 13:24
已經跟post學緊

