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支持断点续传的多线程下载示例
Jan 16 Python
Python标准库之sqlite3使用实例
Nov 25 Python
Python实现读写INI配置文件的方法示例
Jun 09 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
使用GitHub和Python实现持续部署的方法
May 09 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
把vgg-face.mat权重迁移到pytorch模型示例
Dec 27 Python
用python解压分析jar包实例
Jan 16 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
php实现图片压缩处理
2020/09/09 PHP
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
天巡全球:Skyscanner Global
2017/06/20 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
软件测试面试题
2015/10/21 面试题
企业年会主持词
2014/03/27 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
宣传稿格式范文
2015/07/23 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS