Skip to main content

預防偷改校曆⋯⋯

 校曆已經做到個人日曆,但今天開會時突然想到,萬一源網頁 https://pkuschool.yuque.com/xqt6kg/gq1l46/wgq3l8qg6inpcuvx#yQ8r  被修改了,個人日曆是不能自動更新的。指望seiue的通知肯定是不成的。

GPT-4說:

1. **使用网页监控工具**:市面上有很多网页监控工具,例如 Distill.io、Visualping 等,它们可以帮助您监控特定网页的变化,并在检测到更新时通过电子邮件或其他方式通知您。这些工具通常提供一定程度的自定义,比如监控频率、监控区域的选择等。

2. **浏览器插件**:一些浏览器插件也提供了类似的监控功能。您只需要在浏览器中安装这些插件,然后设置您想要监控的网页即可。

3. **开发自定义脚本**:如果您有编程能力,也可以编写自定义的脚本来监控网页变化。这种方法的好处是可以完全按照您的需求定制监控逻辑,比如监控特定的内容变化、将变化记录到数据库中等。Python 的 Beautiful Soup 和 Requests 库是进行此类任务的常用工具。

4. **RSS 订阅**:如果该网页支持 RSS 订阅,您可以使用 RSS 阅读器订阅其更新。不过,这取决于网页是否提供 RSS 功能。

每种方法都有其优缺点,您可以根据自己的具体需求和技术背景选择最适合的方案。如果您希望对某个方案了解更多细节或需要帮助实现,我可以提供进一步的指导。


手頭性能最低的那台VPS一直相當閒,正好,它也該開個學了。

步骤 1: 检查 Python 安装
python3 --version

步骤 2: 安装 requests 和 BeautifulSoup:
sudo apt update
sudo apt install python3-pip
pip3 install requests beautifulsoup4

步驟3:

nano /root/web_monitor.py

粘貼:

import requests
from bs4 import BeautifulSoup
import hashlib
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart # 目标网页 URL
url = "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,搞定。

所以,不安全的服務,也有自己的用法。


Comments