Python實現(xiàn)搶購IPhone手機
要買IPhone7主要有三個途徑吧,一是官網(wǎng)下單;二是官網(wǎng)預(yù)約,直營店取貨;三是第三方渠道。第一個渠道需要等3-4周,而且是直接快遞過來,方便是方便,缺點主要是對物流不放心和怕遇到瑕疵機器退換貨麻煩,優(yōu)點是可以信用卡12期免息付款。第三個渠道加價且不放心。預(yù)約去直營店取機就是唯一選擇。
預(yù)約是唯一的問題,官網(wǎng)上的預(yù)約號是不定時發(fā)放,基本剛出來幾分鐘就被搶走。編程改變世界,于是我用python寫了一個查詢腳本,在蘋果放票的第一時間通過蜂鳴器通知搶預(yù)約。
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()
# 這個函數(shù)創(chuàng)建一個同 libcurl中的CURL處理器相對應(yīng)的Curl對象.Curl對象自動的設(shè)置CURLOPT_VERBOSE為0, CURLOPT_NOPROGRESS為1,提供一個默認的CURLOPT_USERAGENT和設(shè)置CURLOPT_ERRORBUFFER指向一個私有的錯誤緩沖區(qū).
c = pycurl.Curl() # 創(chuàng)建一個同libcurl中的CURL處理器相對應(yīng)的Curl對象
c.setopt(pycurl.CAINFO, certifi.where())
c.setopt(pycurl.URL, url) # 設(shè)置要訪問的網(wǎng)址 url = "http://www.cnn.com"
# 寫的回調(diào)
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1) # 參數(shù)有1、2
# 最大重定向次數(shù),可以預(yù)防重定向陷阱
c.setopt(pycurl.MAXREDIRS, 5)
# 連接超時設(shè)置
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)
#設(shè)置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': '環(huán)貿(mào)'}, {'R581': '"五角場"'}, {'R359': '南京東路'}, {'R389': '浦東'},
{'R683': '環(huán)球港'}, {'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() #執(zhí)行上述訪問網(wǎng)址的操作
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()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow 保存模型和取出中間權(quán)重例子
今天小編就為大家分享一篇tensorflow 保存模型和取出中間權(quán)重例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
使用Python中的pytesseract模塊實現(xiàn)抓取圖片中文字
最近同事用網(wǎng)上提供掃描軟件進行掃描識別文字,每天上線只能夠做兩次掃描,請求我研發(fā)一個小工具幫助解決識別圖片的中文字,最終我選擇使用pytesseract模塊可以解決這個需求問題,本文給大家分享實現(xiàn)代碼操作感興趣的朋友跟隨小編一起看看吧2022-11-11
基于pytorch的RNN實現(xiàn)字符級姓氏文本分類的示例代碼
當使用基于PyTorch的RNN實現(xiàn)字符級姓氏文本分類時,我們可以使用一個非常簡單的RNN模型來處理輸入的字符序列,并將其應(yīng)用于姓氏分類任務(wù),本文給大家舉了一個基本的示例代碼,需要的朋友可以參考下2023-12-12
python實現(xiàn)字符串加密 生成唯一固定長度字符串
這篇文章主要為大家詳細介紹了python實現(xiàn)字符串加密,生成唯一固定長度字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03
python 的numpy庫中的mean()函數(shù)用法介紹
這篇文章主要介紹了python 的numpy庫中的mean()函數(shù)用法介紹,具有很好對參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

