看黑客如何分分鐘“插隊”預約一加手機
前言
我是一加手機的死忠粉,一加1手機出來的時候,我就想盡了一切辦法,參加了各種活動,但還是沒搞到邀請碼。最終我從XDA論壇找了個人,花了20美元買了個邀請碼。因此我很討厭一加的預約+邀請系統。
一加2使用了排隊預約機制,雖然我早早地就申請了,當時我的排名位置大概是9000左右,但是在一加2的排隊機制中,可以通過推薦好友來提升排名(即填寫好友郵箱,一加會給好友發送郵件,邀請好友一起排隊,而邀請者也可借此提升自己的排名)。我檢查我的排名的時候已經跌到了70,000多。
我試著在一加的邀請頁面填上mailinator.com的臨時郵箱地址,居然可以用。我搞了10次,順利將我的排名提升到了50,000名以上。于是我就想,能不能搞個什么腳本,自動幫我發送大量推薦郵件,提升我的排名。
大量發送推薦郵件
首先我要提取邀請頁面里面的URL。使用Chrome的調試工具,在里面的網絡標簽就可以看到(點擊圖片放大)。
https://invites.oneplus.net/index.php?r=share/signup&success_jsonpCallback=success_jsonpCallback&email=test%40mailinator.com&_=1438634544515
上面這個就是郵箱填test@mailinator.com的時候收到的邀請郵件中的網址。注意網址***的那串數字,這是個cache buster,功能是防止瀏覽器緩存鏈接,還可以驗證鏈接是不是舊鏈接。
一會兒我們要用python完成整個自動發送邀請、點擊郵件內鏈接的過程,所以我們得把上面的網址改成這種形式:
https://invites.oneplus.net/index.php?r=share/signup&success_jsonpCallback=success_jsonpCallback&email={{name}}%40mailinator.com&_=1438634544515
{{name}}就是填寫mailinator郵箱用戶名的位置。
接下來我寫了幾行python代碼,生成一個32位的隨機字符串用作我的郵箱用戶名。我用到了Requests庫。
我們可以通過一加的系統向mailinator郵箱發送確認郵件了。但怎么獲取確認郵件里的內容呢?
在https://mailinator.com/注冊后,我們就能在設置頁面找到API token。然后根據官方的指導頁面使用就可以了。
獲取確認郵件確認鏈接
我們先要得到確認郵件的emailID,所以requests.get這里請求的得是mailinatorInbox。
一開始requests.get這里請求的必須得是mailinatorInbox。
我解釋一下為什么我要添加sleep timer。我們先來看一下我們收到的回應。
{‘messages’: [{‘to’: ‘test@mailinator.com’, ‘ip’: ‘198.2.132.96’, ‘fromfull’: ‘invites@oneplus.net’, ‘id’: ‘14385
98503–141602468-test’, ‘seconds_ago’: 2621, ‘subject’: ‘Confirm your email’, ‘time’: 1438598503781, ‘from’: ‘OneP
lus’, ‘been_read’: False}, {‘to’: ‘test@mailinator.com’, ‘ip’: ‘198.2.132.96’, ‘fromfull’: ‘invites@oneplus.net’, ‘id’: ‘1438598522–141603512-test’, ‘seconds_ago’: 2602, ‘subject’: ‘Successful sign-up for the reservation list’
, ‘time’: 1438598522985, ‘from’: ‘OnePlus’, ‘been_read’: False}]}
一開始,消息的鍵值返回的是空。經過一番調試,我設置mailinator的API在收到確認郵件之后再創建新的用戶名。所以我加了個timer,發送一個請求之后暫停五秒再獲取。
我們得要用emailID獲取郵件正文。從json提取一下就可以了。
有了emailID,我們就可以請求email,獲取郵件正文了。
下圖是獲取的正文
稍微用點正則表達式,就可以提取到確認郵件中的URL了。
把所有的代碼結合起來!
我把它放著運行了一會,去喝了杯茶,我回來的時候排名已經上升50,000位了。
代碼下載
附上所有代碼:https://github.com/JakeCooper/OnePlusTwoBot