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中去空格函数的用法
Aug 21 Python
Python运算符重载用法实例
May 28 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
Python类继承和多态原理解析
Feb 05 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
python要安装在哪个盘
Jun 15 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
Python调用C/C++的方法解析
Aug 05 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
Python 创建守护进程的示例
Sep 29 Python
Python Matplotlib绘制动画的代码详解
May 30 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获取服务器信息的实现代码
2013/02/04 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
js 页面执行时间计算代码
2009/03/04 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
Python OS模块常用函数说明
2015/05/23 Python
python实现电脑自动关机
2018/06/20 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
校园之声广播稿
2014/01/31 职场文书
体育教学随笔感言
2014/02/24 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
嘉宾邀请函
2015/01/31 职场文书