最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Python(Tornado)模擬登錄小米搶手機

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:39:01
文檔

Python(Tornado)模擬登錄小米搶手機

Python(Tornado)模擬登錄小米搶手機:今天看到同事參與小米的搶購,幾經(jīng)數(shù)個星期的嘗試,終于搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程序可破。于是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登錄小米帳號,當(dāng)練手吧。用 Python 來實現(xiàn)吧,由于是寫一個Web應(yīng)用,那
推薦度:
導(dǎo)讀Python(Tornado)模擬登錄小米搶手機:今天看到同事參與小米的搶購,幾經(jīng)數(shù)個星期的嘗試,終于搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程序可破。于是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登錄小米帳號,當(dāng)練手吧。用 Python 來實現(xiàn)吧,由于是寫一個Web應(yīng)用,那

今天看到同事參與小米的搶購,幾經(jīng)數(shù)個星期的嘗試,終于搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程序可破。于是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登錄小米帳號,當(dāng)練手吧。
用 Python 來實現(xiàn)吧,由于是寫一個Web應(yīng)用,那么框架就選 Tornado。
首先是定義應(yīng)用的 URL:

代碼如下:


def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
(r"/mibuy/", MiBuyHandler),
],**settings)
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()


接下來就是尋找需要 post 過去的數(shù)據(jù),用 Fiddler 來嗅探一下:

也就是說,POST 的地址是 https://account.xiaomi.com/pass/serviceLoginAuth2

需要構(gòu)造的表單參數(shù)也很簡單(已進行 URL 編碼):passToken=&user=www.nowamagic.net&pwd=password&callback=https%3A%2F%2Faccount.xiaomi.com&sid=passport&qs=%253Fsid%253Dpassport&hidden=&_sign=KKkRvCpZoDC%2BgLdeyOsdMhwV0Xg%3D。即:

代碼如下:


post_data = urllib.urlencode({'passToken':'', 'user': 'www.nowamagic.net', 'pwd': 'password', 'callback':'https://account.xiaomi.com', 'sid':'passport', 'qs':'%3Fsid%3Dpassport', 'hidden':'', '_sign':'KKkRvCpZoDC+gLdeyOsdMhwV0Xg='})
path = 'https://account.xiaomi.com/pass/serviceLoginAuth2'


接下來函數(shù)也可以寫出來了:

代碼如下:


class MiBuyHandler(tornado.web.RequestHandler):
def get(self):
cj = cookielib.CookieJar()
post_data = urllib.urlencode({'passToken':'', 'user': 'www.nowamagic.net', 'pwd': 'password', 'callback':'https://account.xiaomi.com', 'sid':'passport', 'qs':'%3Fsid%3Dpassport', 'hidden':'', '_sign':'KKkRvCpZoDC+gLdeyOsdMhwV0Xg='})
path = 'https://account.xiaomi.com/pass/serviceLoginAuth2'
cookieHandle = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookieHandle)
#opener.addheaders = [('User-agent', 'Opera/9.23')]
urllib2.install_opener(opener)
req = urllib2.Request(path, post_data)
response = urllib2.urlopen(req)
html = response.read()
self.render("mibuy.html",message=html)


如何需要把 cookie 打印出來,直接 print cj 就可以看到 cookie 的內(nèi)容。
接下來的事情貌似也很簡單,就是解析 hdcontrol (URL:http://tc.hd.xiaomi.com/hdget?callback=hdcontrol) 這個 json。

代碼如下:


hdcontrol(
{
stime: 1383645496,
status: {
allow: true,
miphone: {
hdurl: "",
duration: null,
hdstop: true,
reg: true,
pmstart: false,
hdstart: false
},
mibox: {
hdurl: "",
duration: null,
hdstop: true,
reg: true,
pmstart: false,
hdstart: false
},
mitv: {
hdurl: "",
duration: null,
hdstop: true,
reg: false,
pmstart: false,
hdstart: false
}
}
})


當(dāng) allow 為 true 的時候,hdurl 會有值,比如 ?_a=20131105_phone_a212a2b30e5&_op=choose&_s=72b686828&_m=1 之類的,這個就是真實的搶購地址,直接訪問這個地址應(yīng)該就不用再點排隊的按鈕。僅當(dāng)拋磚引玉,懂程序的各位都該知道怎么辦了吧……
僅僅適用于目前(2013年11月),后續(xù)小米那邊可能會改變一些規(guī)則。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python(Tornado)模擬登錄小米搶手機

Python(Tornado)模擬登錄小米搶手機:今天看到同事參與小米的搶購,幾經(jīng)數(shù)個星期的嘗試,終于搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程序可破。于是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登錄小米帳號,當(dāng)練手吧。用 Python 來實現(xiàn)吧,由于是寫一個Web應(yīng)用,那
推薦度:
標(biāo)簽: 登錄 小米 搶購
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top