网页变化监控Python脚本 本博客的第一篇日志吧,写于石家庄出差中~ 熟悉我的朋友都知道,我是一个忠实的果粉。但有些IOS系统问题我也是很郁闷,就是误操作导致的系统升级。两周前的某天中午,苹果突然开放了ios降级通道,真是千载难逢的机会啊,然后上班就错过了。。。 于是萌生了一个想法,写一个监控脚本,不断地看苹果是否开放了降级通道。
考虑要做监控,就要完成两个部分,第一是方便的通知到我,第二是能监控网页变化。
Email通知部分 首先在考虑这部分的时候,想了多种解决方法。最后选定email方法,Python中原生包括了发送mail的模块,集成比较方便。然后把邮箱绑定到微信或QQ上,就可以做到收到邮箱第一时间推送。
这里我们使用SMTP3来发送邮件
监控网页变化 要忙别的了,先把最后的代码放上未完待续
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 from email import encodersfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.utils import parseaddr, formataddrimport smtplib,requests,json,difflib,sys,hashlibfrom_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 ( 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()