python模拟手机登录_Python(Tornado)模拟登录小米抢手机
今天看到同事参与小米的抢购,几经数个星期的尝试,终于抢到了一台小米电视……看了一下小米的抢购流程,似乎可以用程序可破。于是想写点东西玩玩(你懂的……),第一步肯定是先得模拟登录小米帐号,当练手吧。
用 Python 来实现吧,由于是写一个Web应用,那么框架就选 Tornado。
首先是定义应用的 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 过去的数据,用 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':'%3Fsid%3Dpassport', 'hidden':'', '_sign':'KKkRvCpZoDC+gLdeyOsdMhwV0Xg='})
path = 'https://account.xiaomi.com/pass/serviceLoginAuth2'
接下来函数也可以写出来了:
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 的内容。
接下来的事情貌似也很简单,就是解析 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
}
}
})
当 allow 为 true 的时候,hdurl 会有值,比如 ?_a=20131105_phone_a212a2b30e5&_op=choose&_s=72b686828&_m=1 之类的,这个就是真实的抢购地址,直接访问这个地址应该就不用再点排队的按钮。仅当抛砖引玉,懂程序的各位都该知道怎么办了吧……
仅仅适用于目前(2013年11月),后续小米那边可能会改变一些规则。
python模拟手机登录_Python(Tornado)模拟登录小米抢手机相关推荐
- python操作手机京东_Python实现自动上京东抢手机
本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python爬取京东手机参数_python抓取京东小米8手机配置信息
本文代码是使用python抓取京东小米8手机的配置信息 首先找到小米8商品的链接:https://item.jd.com/7437788.html 然后找到其配置信息的标签,我们找到其配置信息的标签为 ...
- python单用户登录_Python 实现用户登录的简单方法
#实现用户的登录 设定一个用户名和密码,用户输入正确的用户名和密码,则显示登录成功 否则提示登录失败,用户最多失败3次,否则退出程序 思路: 1)初始化用户名和密码 2)输入用户名和密码 3)判断用户 ...
- 手机编写python程序_Python实现自动上京东抢手机
本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python京东抢购手机攻略_Python实现自动上京东抢手机
本文实例为大家分享了python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python写自动抢购脚本_Python实现自动上京东抢手机
本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python 抢购小米_Python(Tornado)模拟登录小米抢手机
今天看到同事参与小米的抢购,几经数个星期的尝试,终于抢到了一台小米电视--看了一下小米的抢购流程,似乎可以用程序可破.于是想写点东西玩玩(你懂的--),第一步肯定是先得模拟登录小米帐号,当练手吧. 用 ...
- python 网站发送验证码_Python爬虫模拟登录带验证码网站
爬取网站时经常会遇到需要登录的问题,这是就需要用到模拟登录的相关方法.python提供了强大的url库,想做到这个并不难.这里以登录学校教务系统为例,做一个简单的例子. 首先得明白cookie的作用, ...
- python 12306登录_python爬虫--模拟12306登录
模拟12306登录 超级鹰: #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 class Ch ...
最新文章
- tf.nn.softmax_cross_entropy_with_logits中的“logits”到底是个什么意思?
- php 长短字符串转换,将php的数组按照字符串长短进行排序
- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
- TCP 滑动窗口协议
- positionnbsp;absolutenbsp;relativenbsp;z-index
- php5.6.16,OSX 10.11 中重新编译PHP5.6.16问题
- 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
- php常量变量连接,PHP常量及变量区别原理详解
- 前端学习(3266):js中this的指向
- html/css题库,DIV+CSS题库
- oracle报无效月份 注册表,在oracle中插入时间时出现“无效的月份”解决方法
- 简述事件接口与事件适配器的联系与区别_通过Redis学习事件驱动设计
- Mysql漏洞修复方法思路及注意事项
- JAVA CLASS混淆工具:Allatori 简单试用
- dbmsjobs记录表 oracle_【Oracle学习笔记】定时任务(dbms_job)
- Ubuntu18.04TLS运行linux版百度网盘客户端的问题
- 面试被问“你未来的职业规划是什么”,怎样回答最完美?
- There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘pypi.org‘,port=443)
- 第三人称计算机获奖感言,个人获奖感言50字第三人称
- 为什么苹果6没有录屏_苹果iPad为什么没有计算器应用程序