手机升级从iOS10升级到iOS12后,有点不适应,想降级到iOS10就没门了,太可恶了。
想着苹果曾经意外地开放过旧系统的验证通道,于是幻想会不会再次出现?
于是经常打开http://ipsw.me查询当前签名的系统版本,唉,频繁手动操作有点费时,
不如用python写个自动化脚本来实现吧,检测到IOS10的时候就给我发个邮件吧。
于是研究了一下ipsw.me,该网站提供查询接口了,并以json的格式返回数据。
于是就有了下面的代码:
定时访问ipsw.me提供的接口,检测到IOS10系统有效就发送邮件给我。
发送邮件使用了网易提供的邮件接口。
间隔10分钟查询一次,就让它在电脑的后台24小时运行吧,万一哪天真的它就给我发邮件了呢。嘿嘿。。。
#发现IOS10可以降级时通过邮件通知我
#QQ:446252221
#2018.05.10
import io
import time
import json
import urllib.request
import smtplib
import email.mime.text
import email.mime.multipart
#获取当前时间
def local_time_str():
str = time.strftime("%Y-%m-%d %X", time.localtime(time.time()+28800))
return str
#通过网易的SMTP服务器发送邮件
def send_mail(title, content):
mail_host = "smtp.163.com" #设置服务器
mail_port = 25 #SMTP端口号
mail_user = "############@163.com" #用户名
mail_pass = "########" #口令(授权码)
mail_recv = ["[email protected]"] #收件人
mail_subject = title #邮件主题
mail_content = content #邮件正文
msg = email.mime.multipart.MIMEMultipart()
msg["From"] = mail_user
msg["To"] = mail_recv[0]
msg["Subject"] = mail_subject
msg.attach(email.mime.text.MIMEText(mail_content))
try:
print("正在发送邮件...")
smtp_obj = smtplib.SMTP()
smtp_obj.connect(mail_host, mail_port)
smtp_obj.login(mail_user, mail_pass)
smtp_obj.sendmail(mail_user, mail_recv, msg.as_string())
except:
print("邮件发送失败!")
return False
else:
print("邮件发送成功.")
return True
#调用ipsw接口,查询可升级的IOS版本
def call_ipsw(iphone):
try:
print("正在获取数据...");
request_url = "https://api.ipsw.me/v4/device/" + iphone
session = urllib.request.urlopen(request_url)
except:
print("获取数据失败!")
return None
else:
print("获取数据成功.")
respon_body = session.read()
json_obj = json.loads(respon_body.decode("utf-8"))
ios_all_list = json_obj["firmwares"]
ios_signed_list = []
for item in ios_all_list:
if item["signed"]:
ios_signed_list.append(item["version"])
return ios_signed_list
#程序入口
while True:
print("当前系统时间:", local_time_str())
ios_list = call_ipsw("iPhone8,4")
for ios in ios_list:
print("当前IOS版本:", ios)
if ios.startswith("10."):
send_mail("苹果开放IOS10降级通道啦!", "当前可降级版本为:"+ios)
#延时10分钟
time.sleep(600)