預防偷改校曆⋯⋯
校曆已經做到個人日曆,但今天開會時突然想到,萬一源網頁 https://pkuschool.yuque.com/xqt6kg/gq1l46/wgq3l8qg6inpcuvx#yQ8r 被修改了,個人日曆是不能自動更新的。指望seiue的通知肯定是不成的。
GPT-4說:
-
使用网页监控工具:市面上有很多网页监控工具,例如 Distill.io、Visualping 等,它们可以帮助您监控特定网页的变化,并在检测到更新时通过电子邮件或其他方式通知您。这些工具通常提供一定程度的自定义,比如监控频率、监控区域的选择等。
-
浏览器插件:一些浏览器插件也提供了类似的监控功能。您只需要在浏览器中安装这些插件,然后设置您想要监控的网页即可。
-
开发自定义脚本:如果您有编程能力,也可以编写自定义的脚本来监控网页变化。这种方法的好处是可以完全按照您的需求定制监控逻辑,比如监控特定的内容变化、将变化记录到数据库中等。Python 的 Beautiful Soup 和 Requests 库是进行此类任务的常用工具。
-
RSS 订阅:如果该网页支持 RSS 订阅,您可以使用 RSS 阅读器订阅其更新。不过,这取决于网页是否提供 RSS 功能。
每种方法都有其优缺点,您可以根据自己的具体需求和技术背景选择最适合的方案。如果您希望对某个方案了解更多细节或需要帮助实现,我可以提供进一步的指导。
手頭性能最低的那台VPS一直相當閒,正好,它也該開個學了。
步骤 1: 检查 Python 安装python3 –version 步骤 2: 安装 requests 和 BeautifulSoup:sudo apt updatesudo apt install python3-pippip3 install requests beautifulsoup4 步驟3: nano /root/web_monitor.py 粘貼: import requestsfrom bs4 import BeautifulSoupimport hashlibimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipart # 目标网页 URLurl = “ https://pkuschool.yuque.com/xqt6kg/gq1l46/wgq3l8qg6inpcuvx#yQ8r" # 发送 HTTP GET 请求response = requests.get(url) # 使用 BeautifulSoup 解析 HTML 内容soup = BeautifulSoup(response.text, ‘html.parser’) # 提取网页主体或特定部分作为内容content = soup.get_text() # 计算内容的哈希值content_hash = hashlib.sha256(content.encode(‘utf-8’)).hexdigest() # 尝试从文件中读取上一次的哈希值try: with open(“last_hash.txt”, “r”) as file: last_hash = file.read()except FileNotFoundError: last_hash = "” # 定义发送邮件的函数def send_email(body): sender_email = “⋯⋯” receiver_email = “⋯⋯” password = “⋯⋯” # 创建 MIME 多部分消息 message = MIMEMultipart() message[“From”] = sender_email message[“To”] = receiver_email message[“Subject”] = “网页内容变化通知” # 添加邮件正文 message.attach(MIMEText(body, “plain”)) # 登录 SMTP 服务器并发送邮件 with smtplib.SMTP_SSL(‘smtp.gmail.com’, 465) as server: server.login(sender_email, password) server.sendmail(sender_email, receiver_email, message.as_string()) # 比较当前哈希值与上一次的哈希值if content_hash != last_hash: print(“网页内容发生了变化!”) # 发送通知邮件 send_email(“监控的网页内容发生了变化,请检查:” + url) # 更新存储的哈希值 with open(“last_hash.txt”, “w”) as file: file.write(content_hash)else: print(“网页内容未发生变化。”) 步驟4: crontab -e ,每天8點,跑個步0 8 * * * python3 /root/web_monitor.py 隨機拿出來一個Gmail做發送,結果 smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. 更換為163,搞定。 所以,不安全的服務,也有自己的用法。