Python实现抢购IPhone手机


Posted in Python onFebruary 07, 2018

要买IPhone7主要有三个途径吧,一是官网下单;二是官网预约,直营店取货;三是第三方渠道。第一个渠道需要等3-4周,而且是直接快递过来,方便是方便,缺点主要是对物流不放心和怕遇到瑕疵机器退换货麻烦,优点是可以信用卡12期免息付款。第三个渠道加价且不放心。预约去直营店取机就是唯一选择。

预约是唯一的问题,官网上的预约号是不定时发放,基本刚出来几分钟就被抢走。编程改变世界,于是我用python写了一个查询脚本,在苹果放票的第一时间通过蜂鸣器通知抢预约。

python代码如下

#!/usr/bin/env python3
#encoding=utf8
import pycurl
import certifi
import json
import time
import ctypes
from io import BytesIO

def link(url, b):
 # print pycurl.version_info()
 # 这个函数创建一个同 libcurl中的CURL处理器相对应的Curl对象.Curl对象自动的设置CURLOPT_VERBOSE为0, CURLOPT_NOPROGRESS为1,提供一个默认的CURLOPT_USERAGENT和设置CURLOPT_ERRORBUFFER指向一个私有的错误缓冲区.
 c = pycurl.Curl() # 创建一个同libcurl中的CURL处理器相对应的Curl对象
 c.setopt(pycurl.CAINFO, certifi.where())
 c.setopt(pycurl.URL, url) # 设置要访问的网址 url = "http://www.cnn.com"
 # 写的回调
 c.setopt(pycurl.WRITEFUNCTION, b.write)
 c.setopt(pycurl.FOLLOWLOCATION, 1) # 参数有1、2
 # 最大重定向次数,可以预防重定向陷阱
 c.setopt(pycurl.MAXREDIRS, 5)
 # 连接超时设置
 c.setopt(pycurl.CONNECTTIMEOUT, 60) # 链接超时
 c.setopt(pycurl.TIMEOUT, 300) # 下载超时
 c.setopt(pycurl.HEADER, True)
 c.setopt(c.HTTPHEADER, ["Content-Type: application/x-www-form-urlencoded", "X-Requested-With:XMLHttpRequest",
       "Cookie:__cfduid=d27e1cfd61fd81d21d02b1da9fe4a72411473259699; 227c9_lastfid=0; 227c9_lastvisit=0%091473553135%09%2Fread.php%3Ftid%3D2063828; CNZZDATA950900=cnzz_eid%3D823435929-1473550264-%26ntime%3D1473550264"])
 # 模拟浏览器
 c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
 c.setopt(pycurl.AUTOREFERER, 1)
 c.setopt(c.REFERER, url)
 #设置http代理
 #c.setopt(pycurl.PROXY, 'http://10.237.28.11:8080')
 return c

def search():
 player = ctypes.windll.kernel32
 targetType = "MNFR2CH/A"#金色iphone7 plus
 storeList = [{'R401': '环贸'}, {'R581': '"五角场"'}, {'R359': '南京东路'}, {'R389': '浦东'},
     {'R683': '环球港'}, {'R390': '香港广场'}]
 url = "https://reserve.cdn-apple.com/CN/zh_CN/reserve/iPhone/availability.json"
 b = BytesIO()
 c = link(url, b)
 count = 1
 while True:
  print("第",count,"次请求")
  c.setopt(pycurl.URL, url)
  c.perform() #执行上述访问网址的操作
  jsonStr = b.getvalue().decode('utf-8')
  jsonList = jsonStr.split("\r\n")
  decodejson = json.loads(jsonList[-1])
  for store in storeList:
   for (k, v) in store.items():
    if decodejson[k][targetType] != "NONE":
     print(v, decodejson[k][targetType])
     print("https://reserve-cn.apple.com/CN/zh_CN/reserve/iPhone?partNumber="+targetType+"&channel=1&rv=&path=&sourceID=&iPP=false&appleCare=&iUID=&iuToken=&carrier=&store="+k)
     player.Beep(1000, 1000)
  time.sleep(5)
  count += 1
 b.close()
 c.close()
 print("完成")

if __name__ == "__main__":
 search()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xmlrpc实例讲解
Dec 17 Python
利用Python读取文件的四种不同方法比对
May 18 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
matplotlib设置legend图例代码示例
Dec 19 Python
Python中max函数用于二维列表的实例
Apr 03 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
pandas 如何分割字符的实现方法
Jul 29 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
python解释器spython使用及原理解析
Aug 24 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 Python
浅谈python可视化包Bokeh
Feb 07 #Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 #Python
全面分析Python的优点和缺点
Feb 07 #Python
Tensorflow环境搭建的方法步骤
Feb 07 #Python
Python pandas常用函数详解
Feb 07 #Python
详解python字节码
Feb 07 #Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 #Python
You might like
用PHP生成自己的LOG文件
2006/10/09 PHP
php实现上传图片文件代码
2015/07/19 PHP
php实现用户登陆简单实例
2017/04/04 PHP
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python 对key为时间的dict排序方法
2018/10/17 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
Pytorch之finetune使用详解
2020/01/18 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
win10安装python3.6的常见问题
2020/07/01 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
python 制作磁力搜索工具
2021/03/04 Python
互动出版网:专业书籍
2017/03/21 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
校园标语大全
2014/06/19 职场文书
文明单位创建材料
2014/12/24 职场文书
公司内部升职自荐信
2015/03/27 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
MySQL锁机制
2021/04/05 MySQL
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
pyqt5打包成exe可执行文件的方法
2021/05/14 Python