Python(Tornado)模擬登入小米搶手機 | 搶小米程式
今天看到同事參與小米的搶購,幾經數個星期的嘗試,終於搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程式可破。於是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登入小米帳號,當練手吧。用Python來實現吧,由於是寫一個Web應用,那麼框架就選Tornado。首先是定義應用的URL:複製程式碼[1]程式碼如下:defmain(): tornado.options.parse_command_line() application=tornado.web.Application([ (r”/”,MainHandler), (r”/mibuy/”,MiBuyHandler), ],**settings) http_server=tornado.httpserver.H...
今天看到同事參與小米的搶購,幾經數個星期的嘗試,終於搶到了一臺小米電視……看了一下小米的搶購流程,似乎可以用程式可破。於是想寫點東西玩玩(你懂的……),第一步肯定是先得模擬登入小米帳號,當練手吧。用 Python 來實現吧,由於是寫一個Web應用,那麼框架就選 Tornado。首先是定義應用的 URL:複製程式碼[1] 程式碼如下: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 過去的資料,用 Fiddler 來嗅探一下:
也就是說,POST 的地址是 https://account.xiaomi.com/pass/serviceLoginAuth2需要構造的表單引數也很簡單(已進行 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’:’%3F...