看黑客如何分分鐘“插隊(duì)”預(yù)約一加手機(jī)
前言
我是一加手機(jī)的死忠粉,一加1手機(jī)出來(lái)的時(shí)候,我就想盡了一切辦法,參加了各種活動(dòng),但還是沒(méi)搞到邀請(qǐng)碼。最終我從XDA論壇找了個(gè)人,花了20美元買(mǎi)了個(gè)邀請(qǐng)碼。因此我很討厭一加的預(yù)約+邀請(qǐng)系統(tǒng)。
一加2使用了排隊(duì)預(yù)約機(jī)制,雖然我早早地就申請(qǐng)了,當(dāng)時(shí)我的排名位置大概是9000左右,但是在一加2的排隊(duì)機(jī)制中,可以通過(guò)推薦好友來(lái)提升排名(即填寫(xiě)好友郵箱,一加會(huì)給好友發(fā)送郵件,邀請(qǐng)好友一起排隊(duì),而邀請(qǐng)者也可借此提升自己的排名)。我檢查我的排名的時(shí)候已經(jīng)跌到了70,000多。
我試著在一加的邀請(qǐng)頁(yè)面填上mailinator.com的臨時(shí)郵箱地址,居然可以用。我搞了10次,順利將我的排名提升到了50,000名以上。于是我就想,能不能搞個(gè)什么腳本,自動(dòng)幫我發(fā)送大量推薦郵件,提升我的排名。
大量發(fā)送推薦郵件
首先我要提取邀請(qǐng)頁(yè)面里面的URL。使用Chrome的調(diào)試工具,在里面的網(wǎng)絡(luò)標(biāo)簽就可以看到(點(diǎn)擊圖片放大)。
https://invites.oneplus.net/index.php?r=share/signup&success_jsonpCallback=success_jsonpCallback&email=test%40mailinator.com&_=1438634544515
上面這個(gè)就是郵箱填test@mailinator.com的時(shí)候收到的邀請(qǐng)郵件中的網(wǎng)址。注意網(wǎng)址***的那串?dāng)?shù)字,這是個(gè)cache buster,功能是防止瀏覽器緩存鏈接,還可以驗(yàn)證鏈接是不是舊鏈接。
一會(huì)兒我們要用python完成整個(gè)自動(dòng)發(fā)送邀請(qǐng)、點(diǎn)擊郵件內(nèi)鏈接的過(guò)程,所以我們得把上面的網(wǎng)址改成這種形式:
https://invites.oneplus.net/index.php?r=share/signup&success_jsonpCallback=success_jsonpCallback&email={{name}}%40mailinator.com&_=1438634544515
{{name}}就是填寫(xiě)mailinator郵箱用戶(hù)名的位置。
接下來(lái)我寫(xiě)了幾行python代碼,生成一個(gè)32位的隨機(jī)字符串用作我的郵箱用戶(hù)名。我用到了Requests庫(kù)。
我們可以通過(guò)一加的系統(tǒng)向mailinator郵箱發(fā)送確認(rèn)郵件了。但怎么獲取確認(rèn)郵件里的內(nèi)容呢?
在https://mailinator.com/注冊(cè)后,我們就能在設(shè)置頁(yè)面找到API token。然后根據(jù)官方的指導(dǎo)頁(yè)面使用就可以了。
獲取確認(rèn)郵件確認(rèn)鏈接
我們先要得到確認(rèn)郵件的emailID,所以requests.get這里請(qǐng)求的得是mailinatorInbox。
一開(kāi)始requests.get這里請(qǐng)求的必須得是mailinatorInbox。
我解釋一下為什么我要添加sleep timer。我們先來(lái)看一下我們收到的回應(yīng)。
{‘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}]}
一開(kāi)始,消息的鍵值返回的是空。經(jīng)過(guò)一番調(diào)試,我設(shè)置mailinator的API在收到確認(rèn)郵件之后再創(chuàng)建新的用戶(hù)名。所以我加了個(gè)timer,發(fā)送一個(gè)請(qǐng)求之后暫停五秒再獲取。
我們得要用emailID獲取郵件正文。從json提取一下就可以了。
有了emailID,我們就可以請(qǐng)求email,獲取郵件正文了。
下圖是獲取的正文
稍微用點(diǎn)正則表達(dá)式,就可以提取到確認(rèn)郵件中的URL了。
把所有的代碼結(jié)合起來(lái)!
我把它放著運(yùn)行了一會(huì),去喝了杯茶,我回來(lái)的時(shí)候排名已經(jīng)上升50,000位了。
代碼下載
附上所有代碼:https://github.com/JakeCooper/OnePlusTwoBot