前言
我是一加手机的死忠粉,一加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