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代码
Mar 13 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
Python进程间通信之共享内存详解
Oct 30 Python
Pycharm设置界面全黑的方法
May 23 Python
python2.7和NLTK安装详细教程
Sep 19 Python
在python中安装basemap的教程
Sep 20 Python
python画双y轴图像的示例代码
Jul 07 Python
python numpy数组中的复制知识解析
Feb 03 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
python 录制系统声音的示例
Dec 21 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 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
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
python基础教程之自定义函数介绍
2014/08/29 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python实现最大子序和的方法示例
2019/07/05 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
移动通信专业自荐信范文
2013/11/12 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
2014年收银工作总结
2014/11/13 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers