0%

网页变化监控Python脚本

网页变化监控Python脚本

本博客的第一篇日志吧,写于石家庄出差中~
熟悉我的朋友都知道,我是一个忠实的果粉。但有些IOS系统问题我也是很郁闷,就是误操作导致的系统升级。两周前的某天中午,苹果突然开放了ios降级通道,真是千载难逢的机会啊,然后上班就错过了。。。
于是萌生了一个想法,写一个监控脚本,不断地看苹果是否开放了降级通道。

考虑要做监控,就要完成两个部分,第一是方便的通知到我,第二是能监控网页变化。

Email通知部分

首先在考虑这部分的时候,想了多种解决方法。最后选定email方法,Python中原生包括了发送mail的模块,集成比较方便。然后把邮箱绑定到微信或QQ上,就可以做到收到邮箱第一时间推送。

这里我们使用SMTP3来发送邮件

1
2


监控网页变化

要忙别的了,先把最后的代码放上未完待续

#!/usr/bin/python3
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib,requests,json,difflib,sys,hashlib

from_addr = '1******4@qq.com'
to_addr = '1*******5@qq.com'
strtext = ""
def by_signed(t):
    return t['signed']
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))
r = requests.get('https://ipsw.me/api/ios/v3/device/iPhone6,2',headers={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'});
downloadfile = r.text
with open('/root/jiankong/compare.json', 'r') as f:
    comparefile=f.read()
md5_1 = hashlib.md5(downloadfile.encode())
md5_2 = hashlib.md5(comparefile.encode())

if md5_1.hexdigest() != md5_2.hexdigest():
    with open('/root/jiankong/compare.json', 'w') as f:
        f.write(downloadfile)
    strtrue = "<font color=\"#33CC33\"><b>True</b></font>"
    strfalse = "<font color=\"#ff0000\"><b>False</b></font>"
    #text2=sorted(json.loads(comparefile)['iPhone6,2']['firmwares'] , key=by_signed , reverse=True)
    text2=sorted( r.json()['iPhone6,2']['firmwares'] , key=by_signed , reverse=True)
    for i in range(len(text2)):
        strtext=strtext+'<p>%-10s:[%s]</p>'% ('['+str(text2[i]['version']) +']', strtrue if text2[i]['signed'] else strfalse)
    msg = MIMEText(strtext, 'html', 'utf-8')
    msg['From'] = _format_addr('搬瓦工传家宝_监控 <%s>' % from_addr)
    msg['To'] = _format_addr('yxq <%s>' % to_addr)
    msg['Subject'] = Header('iPhone 5s 的ipsw发生变化', 'utf-8').encode()
    server = smtplib.SMTP_SSL('smtp.qq.com', 465)
    server.set_debuglevel(1)
    server.login(from_addr, 'zhelishimima')
    server.sendmail(from_addr, [to_addr], msg.as_string())
    server.quit()