网页变化监控Python脚本

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

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

Email通知部分

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

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

1

监控网页变化

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

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
#!/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()