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的web框架编写MVC配置来使其运行的教程
Apr 30 Python
详解在Python的Django框架中创建模板库的方法
Jul 20 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python实现SMTP发送邮件详细教程
Mar 02 Python
python最长回文串算法
Jun 04 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
用python爬取租房网站信息的代码
Dec 14 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
解决python对齐错误的方法
Jul 16 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
对于Python装饰器使用的一些建议
2015/06/03 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
领导调研接待方案
2014/02/27 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
红旗渠导游词
2015/02/09 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
Python 数据可视化之Matplotlib详解
2021/11/02 Python