Tập lệnh python để theo dõi url

Tập lệnh Python này sẽ giám sát một trang web trên Raspberry Pi của bạn và cho bạn biết khi nào nó bị hỏng hoặc thay đổi

Điều này được thực hiện bằng cách lưu cục bộ một bản sao cơ bản của trang web và so sánh các thay đổi

Vì trình giám sát trang web này quá cơ bản nên nó chỉ hoạt động tốt trên Raspberry Pi Zero

Chúng tôi sẽ dạy bạn cách viết kịch bản của riêng bạn để giám sát một trang web trong suốt khóa học này. Bạn sẽ có thể điều chỉnh tập lệnh theo yêu cầu cá nhân của mình bằng cách sử dụng thông tin này

Bạn có thể bỏ qua phần có tiêu đề "Chạy định kỳ trình giám sát trang web Raspberry Pi" nếu bạn không muốn tìm hiểu cách thức hoạt động của mã. Tuy nhiên, để thông báo qua email hoạt động, bạn cần thực hiện một số thay đổi đối với mã

Bởi vì nó không yêu cầu giao diện, dự án này rất lý tưởng cho Raspberry Pi không đầu

Mặc dù bài viết này tập trung vào Raspberry Pi, mã này sẽ chạy trên mọi thiết bị hỗ trợ Python 3. Do đó, bạn có thể thực thi tập lệnh này trên thiết bị Windows của mình nếu muốn

Thiết bị

Thiết bị chúng tôi cần để xây dựng tập lệnh giám sát URL trên Raspberry Pi được liệt kê bên dưới

Phiên bản mới nhất của Raspberry Pi Bullseye đã được sử dụng để kiểm tra hướng dẫn này trên Raspberry Pi 400. Tuy nhiên, miễn là bạn có Python 3, dự án này sẽ hoạt động trên mọi thiết bị

Cài đặt Trình giám sát trang web trên Raspberry Pi của bạn

Trước khi bắt đầu, chúng tôi phải đảm bảo rằng chúng tôi có tất cả các gói cần thiết để thực thi tập lệnh giám sát trang web của mình

Các quy trình này liên quan đến việc đảm bảo chúng tôi đã cài đặt Python 3 và các gói Python cần thiết

1. Trước tiên, chúng tôi sẽ cập nhật danh sách gói cũng như mọi gói hiện có

Để thực hiện những thay đổi này, chúng tôi sẽ sử dụng thiết bị đầu cuối trên Raspberry Pi của mình và chạy hai lệnh sau

sudo apt update
sudo apt upgrade -y

2. Chúng tôi phải đảm bảo rằng Python 3 và trình quản lý gói của nó, "pip," đã được cài đặt trên thiết bị của chúng tôi

Để kiểm tra xem cả hai gói này đã được cài đặt chưa, hãy chạy lệnh bên dưới

sudo apt install python3 python3-pip

3. Các gói Python thiết yếu phải được cài đặt trước khi chúng tôi có thể tạo tập lệnh để giám sát các trang web của mình

Cài đặt các gói yêu cầu, beautifulsoup4 và lxml bằng lệnh này

pip3 install requests beautifulsoup4 lxml

Sử dụng Trình giám sát trang web trên Raspberry Pi của bạn

Bây giờ chúng tôi đã cài đặt tất cả các gói cần thiết, chúng tôi có thể bắt đầu viết trình giám sát trang web cơ bản của mình. Mỗi khía cạnh của điều này sẽ được chia thành phần riêng của nó để bạn có thể hiểu mọi thứ hoạt động như thế nào

Mặc dù bạn có thể tạo mã này trong trình soạn thảo văn bản nano, nhưng chúng tôi thích sử dụng một IDE tốt như Visual Studio Code

Vui lòng xem lại các bài học Python của chúng tôi nếu bạn muốn tìm hiểu thêm trước khi tiếp tục

1. Trên Raspberry Pi của bạn, hãy bắt đầu xây dựng tập lệnh Python để theo dõi trang web. Đối với ví dụ này, chúng tôi sẽ sử dụng tên tập lệnh "websitemonitor. py. "

Nếu muốn, bạn có thể bắt đầu viết tập lệnh này bằng nano bằng lệnh bên dưới

nano websitemonitor.py

Mã Python cho một màn hình trang web đơn giản

Trước khi chúng ta đi quá sâu vào việc xây dựng một tập lệnh giám sát trang web tinh vi cho Raspberry Pi của mình, hãy bắt đầu với giải pháp đơn giản nhất

Chúng ta sẽ xây dựng một tập lệnh cơ bản trong phần này để ghi lại một trang web, so sánh nó với nội dung gốc nếu có và xuất bản thông báo nếu có sự khác biệt

1. Luôn bắt đầu tập lệnh của bạn bằng cách nhập các gói mà chúng tôi sẽ sử dụng. Chúng tôi sẽ cần ba gói để bắt đầu với tập lệnh này. "os," "sys," và "yêu cầu. "

os — Bạn có thể sử dụng gói này để giao tiếp với hệ điều hành

Điều này sẽ được sử dụng trong trường hợp của chúng tôi để tạo bộ đệm cho yêu cầu trang web gần đây nhất của chúng tôi. Chúng tôi sẽ kiểm tra bộ đệm này để xem có gì thay đổi không

sys — Để nhận bất kỳ tham số nào được cung cấp trong tập lệnh, chúng tôi sẽ sử dụng gói sys. Trong kịch bản của chúng tôi, người dùng sẽ có thể cung cấp URL của trang web cũng như tên cho bộ đệm

Python có thể thực hiện các yêu cầu nhờ thư viện yêu cầu

Chúng tôi có thể sử dụng điều này để lấy và bảo quản nội dung của một trang web nhất định

import os
import sys
import requests

Tạo hàm has_website_changed()

2. Tiếp theo, chúng tôi sẽ phát triển một chức năng để xử lý phần lớn lý luận của chúng tôi

Chức năng này sẽ được gọi là "trang web đã thay đổi" và sẽ yêu cầu đầu vào của hai đối số

Tùy chọn đầu tiên (url trang web) chỉ định địa chỉ của trang web. Đây là nơi yêu cầu nhận của chúng tôi sẽ được thực hiện

Tên trang web (tên trang web) là đối số thứ hai. Đây sẽ là dạng rút gọn của tên tệp bộ đệm

Hàm này sẽ trả về một trong ba trạng thái. -1 nếu trang web "không ổn", 0 nếu trang web không thay đổi và 1 nếu trang web đã thay đổi

def has_website_changed(website_url, website_name):

Hãy nhớ rằng thụt lề là rất quan trọng trong Python. Hãy chắc chắn để giữ thụt đầu dòng khi chúng tôi điền vào chức năng này

3. Bây giờ chúng tôi đã tạo chức năng của mình, chúng tôi có thể bắt đầu thêm chức năng thực tế

Chúng tôi có thể bắt đầu bằng cách chỉ định các tiêu đề sẽ được mô-đun yêu cầu sử dụng khi yêu cầu trang web. Chúng tôi đang thiết lập hai điều với những tiêu đề này

Tiêu đề "Tác nhân người dùng" là tiêu đề đầu tiên. Hãy thay đổi điều này cho phù hợp với nhu cầu của bạn. Điều này sẽ khá đơn giản

Thứ hai, chúng tôi đặt tiêu đề "Kiểm soát bộ đệm" thành "không có bộ đệm", điều này cho biết rằng cả yêu cầu và máy chủ cuối đều không nên lưu vào bộ đệm này. Yêu cầu này sẽ không được thực hiện bởi tất cả các máy chủ web

import os
import sys
import requests
8

headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; PIWEBMON)',
'Cache-Control': 'no-cache'
}

Sử dụng trang web để thực hiện một yêu cầu

4. Chúng tôi có thể sử dụng gói yêu cầu một cách an toàn để truy xuất URL đã nhập với các tiêu đề mà chúng tôi đã yêu cầu

Đây là một trong những dòng quan trọng nhất trong tập lệnh giám sát trang web Raspberry Pi của chúng tôi vì nó xác định tình trạng hiện tại của trang web

Phương thức get của gói "yêu cầu" được đặt tên theo tên này. Biến "url trang web" và "tiêu đề" của chúng tôi được gửi vào. Biến "phản hồi" của chúng tôi sẽ giữ kết quả của yêu cầu này

________số 8

5. Sau khi truy xuất phản hồi của chúng tôi, hãy kiểm tra kỹ xem trang web có trả về kết quả "OK" không

Điều này chỉ ngụ ý rằng chúng tôi phải xác minh rằng mã trạng thái không nhỏ hơn 200 và không lớn hơn 299

Nếu nó nằm ngoài phạm vi chấp nhận được của chúng tôi, chúng tôi sẽ trả về "-1", cho biết lỗi máy chủ

if (response.status_code < 200 or response.status_code > 299):
return -1

Lưu Văn bản Phản hồi và Tên Tệp của Bộ nhớ đệm 6. Bây giờ, hãy tạo thêm hai biến nữa khi câu trả lời đã được xem xét để đảm bảo rằng chúng tôi có được ít nhất một mã trạng thái phù hợp

Đầu tiên là "văn bản phản hồi", sẽ lưu trữ tạm thời văn bản từ phản hồi mà chúng tôi đã truy xuất trước đó

Biến này có thể được sử dụng để thay đổi văn bản trả lời trước khi lưu nó. Tuy nhiên, hiện tại, trình giám sát trang web Raspberry Pi của chúng tôi sẽ chấp nhận nội dung câu trả lời như hiện tại

Thứ hai, chúng tôi tạo một biến có tên "tên tệp bộ đệm", sẽ giữ tên tệp bộ đệm của chúng tôi. Biến "tên trang web" và "_cache. txt" sẽ được kết hợp để tạo tên tệp này

Vì vậy, nếu tên trang web của chúng tôi là "pimylifeup", thì tên tệp sẽ là "pimylifeup cache. txt. "

sudo apt install python3 python3-pip
0

Tạo bộ đệm trên một trang web mới

7. Tệp bộ đệm cho URL trang web hiện tại có thể không tồn tại khi bạn thực thi tập lệnh lần đầu

Chúng tôi sử dụng đường dẫn "os" packages ". tồn tại ()" để xem liệu tệp bộ nhớ cache này đã tồn tại chưa

Nếu tệp này không tồn tại, chúng tôi tạo nó bằng cách sử dụng tùy chọn "w" để mở tên tệp bộ đệm của chúng tôi. Sau đó, văn bản phản hồi hiện tại được lưu vào tệp, sẵn sàng để Raspberry Pi của chúng tôi theo dõi các thay đổi trên trang web

Chúng tôi trả về 0 vì đây là một yêu cầu mới, cho biết rằng phản hồi không thay đổi

sudo apt install python3 python3-pip
0

Xem phản hồi được lưu trong bộ nhớ cache của yêu cầu trước đó

8. Nếu mã đạt đến giai đoạn này, chúng ta phải truy cập tệp bộ đệm và đọc nội dung vào biến "văn bản phản hồi trước. "

Lần này chúng ta sẽ sử dụng "r+" cho chức năng mở. Điều này hướng dẫn mở để đọc và ghi vào tệp bộ đệm của chúng tôi

Python dịch chuyển vị trí luồng sau khi đọc tệp, do đó chúng ta phải sử dụng phương thức "seek()" để đưa nó trở lại từ đầu. Nếu có câu trả lời mới, điều này sẽ giúp việc cắt bớt tệp dễ dàng hơn

sudo apt install python3 python3-pip
1

Kiểm tra văn bản phản hồi để xem nó có khớp với phản hồi được lưu trong bộ nhớ cache không

9. Bây giờ chúng ta có văn bản trả lời cũng như văn bản trước đó, chúng ta có thể so sánh cả hai

Chúng tôi đóng xử lý tệp và trả về 0 nếu văn bản trong cả hai câu trả lời khớp. Như đã nêu trước đây, giá trị 0 cho biết rằng các câu trả lời không thay đổi và không có sửa đổi nào xảy ra

Phần cuối cùng của chức năng "trang web đã thay đổi" trên màn hình Raspberry Pi của chúng tôi là dòng này và dòng khác

sudo apt install python3 python3-pip
2

Nếu phản hồi mới khác, hãy lưu trữ nó

Nếu các câu trả lời không khớp, Raspberry Pi của chúng tôi đã xác định được một thay đổi trong khi theo dõi trang

Để bắt đầu, chúng tôi cắt bớt tệp đến vị trí hiện tại của nó. Vị trí nào sẽ là vị trí 0 tại thời điểm chạy?

Chúng tôi viết phản hồi cập nhật cho tệp sau khi tệp đã bị cắt bớt. Chúng ta có thể đóng file handle sau khi viết xong vì nó không còn cần thiết nữa

Chúng tôi trả về 1 để cho biết rằng phản hồi đã thay đổi

sudo apt install python3 python3-pip
3

tạo hàm main()

Chức năng chính cho giai đoạn tiếp theo của màn hình trang web Raspberry Pi của chúng tôi phải được viết. Bất cứ khi nào tập lệnh được thực thi, chức năng này sẽ được gọi

Phần này của tập lệnh sẽ đơn giản và chủ yếu xử lý việc gọi hàm mà chúng ta đã xây dựng

11. Đầu tiên, hãy xác định chức năng chính

Bộ não giám sát trang web Raspberry Pi của chúng tôi sẽ được đặt trong chức năng này

sudo apt install python3 python3-pip
4

Kiểm tra trang web để thay đổi

12. Hiện có thể sử dụng phương thức "trang web đã thay đổi ()". Tham số thứ nhất và thứ hai sẽ được gửi vào phương thức này bằng gói "sys"

URL trang web sẽ là tham số đầu tiên. Tên của tệp bộ đệm sẽ là tên thứ hai

Kết quả trả về của phương thức này được lưu trong biến "trạng thái trang web. "

sudo apt install python3 python3-pip
5

Phản hồi in dựa trên trạng thái trang web

13. Bây giờ chúng tôi có trạng thái trang web được lưu trữ trong biến của chúng tôi, chúng tôi có thể sử dụng nó để in một tin nhắn

Đây là phần cuối cùng của tập lệnh giám sát trang web Raspberry Pi của chúng tôi. Chúng tôi sẽ có thể mở rộng tính năng này để gửi email hoặc tin nhắn văn bản

Đây là câu lệnh if, elif đơn giản tạo ra một thông báo khác dựa trên phản hồi

sudo apt install python3 python3-pip
6

14. Cuối cùng, chúng ta có thể hoàn thành tập lệnh của mình bằng cách thêm lệnh gọi mà khi được thực thi sẽ gọi hàm chính

Câu lệnh if đơn giản này đảm bảo rằng tập lệnh được gọi thay vì được nhập dưới dạng mô-đun Python

Mã cơ bản ở dạng cuối cùng

15. Bây giờ chúng ta có thể lưu tập lệnh và chạy nó qua các bước của nó. Mã hoàn thành sẽ giống như ví dụ bên dưới

Nếu bạn muốn sử dụng trình soạn thảo văn bản nano, hãy lưu công việc của bạn bằng cách nhấn CTRL + X, rồi Y, rồi ENTER

sudo apt install python3 python3-pip
7

Trên Raspberry Pi của chúng tôi, chúng tôi đang thử nghiệm Trình theo dõi trang web cơ bản

Bây giờ chúng tôi có thể thực thi phần mềm giám sát trang web của mình trên Raspberry Pi vì chúng tôi đã phát triển nó. Các hành động bên dưới sẽ hỗ trợ chúng tôi đảm bảo rằng tập lệnh đang hoạt động bình thường

1. Trước tiên, chúng tôi phải đảm bảo rằng tập lệnh giám sát trang web của chúng tôi có quyền thực thi

Chạy lệnh sau trên Raspberry Pi sẽ cung cấp quyền này cho tập lệnh giám sát web

sudo apt install python3 python3-pip
8

2. Bây giờ chúng tôi có thể chạy tập lệnh vì nó có quyền thích hợp

Bạn sẽ cần biết URL bạn muốn theo dõi và tên bạn muốn sử dụng cho bộ đệm khi thực thi tập lệnh này

Chúng tôi sẽ sử dụng "https. //pimylifeup. com/" làm URL màn hình của chúng tôi và "pimylifeup" làm tên bộ đệm của chúng tôi trong ví dụ này

sudo apt install python3 python3-pip
9

3. Sử dụng lệnh ls trong thiết bị đầu cuối để kiểm tra xem trình giám sát trang web đã tạo tệp bộ đệm chưa

Một tệp có phần mở rộng "_cache. txt" sẽ xuất hiện. "bộ đệm pimylifeup. txt" là một ví dụ

4. Nếu bạn khởi động lại tập lệnh này, bạn có thể phát hiện ra sự cố ngay lập tức. Vì một số trang web đặt thông tin động nên mỗi yêu cầu có thể là duy nhất ngay cả khi nội dung không thay đổi

Ví dụ: nếu bạn sử dụng trang web của chúng tôi, bạn sẽ thấy rằng tập lệnh của chúng tôi sẽ luôn gắn nhãn là "đã sửa đổi" bằng mã hiện tại

Phần tiếp theo sẽ minh họa cách chúng ta có thể sử dụng món súp đáng yêu của Python để làm sạch kết quả và loại bỏ bất kỳ thứ gì có thể khiến trang web bị liệt vào danh sách "đã sửa đổi" một cách không cần thiết

Sử dụng beautifulsoup để cải thiện Trình giám sát trang web Raspberry Pi

Trong phần này, chúng ta sẽ sử dụng beautifulsoup để cải thiện cách Raspberry Pi xem các trang web

Beautifulsoup là một thư viện Python mạnh mẽ cho phép chúng ta dễ dàng chỉnh sửa văn bản HTML. Ví dụ: chúng tôi có thể sử dụng điều này để xóa nội dung không cần thiết như kiểu và thẻ tập lệnh

1. Bạn sẽ cần thay đổi tập lệnh mà chúng tôi đã tạo trước đây cho phần này

Để bắt đầu, chúng tôi sẽ thêm một lần nhập mới vào đầu tập lệnh. Mô-đun BeautifulSoup từ thư viện bs4 sẽ được nhập

pip3 install requests beautifulsoup4 lxml
0

Tạo một Phương thức html() dọn dẹp mới

Bây giờ chúng ta phải bắt đầu chức năng mới của mình. Phương pháp này sẽ được sử dụng để dọn sạch bất kỳ HTML nào được trả về bởi gói yêu cầu

Điều này sẽ giúp Raspberry Pi của chúng tôi hiển thị hành vi nhất quán hơn khi theo dõi các trang web

2. Thêm dòng sau vào tệp để xác định chức năng mới này

Chúng tôi sẽ cung cấp văn bản HTML để hàm phân tích thành một tham số duy nhất cho hàm này

pip3 install requests beautifulsoup4 lxml
1

Tạo một đối tượng BeautifulSoup mới

3. Chúng ta sẽ tạo một đối tượng BeautifulSoup mới ở đây. Chúng tôi cung cấp trong chuỗi HTML mà chúng tôi muốn xóa trong đối số đầu tiên

Tùy chọn thứ hai chỉ định trình phân tích cú pháp sẽ xử lý HTML của chúng tôi. Chúng tôi chọn lxml vì nó nhanh và cung cấp tất cả các khả năng mà chúng tôi muốn

Khi chạy thứ gì đó như màn hình trang web trên Raspberry Pi, khi tài nguyên bị hạn chế, mã nhanh hơn và hiệu quả hơn luôn có lợi

pip3 install requests beautifulsoup4 lxml
2

Sử dụng BeautifulSoup để dọn sạch HTML

4. Giờ đây, chúng tôi có thể đưa BeautifulSoup hoạt động bằng cách phân tích cú pháp văn bản HTML và xóa các thẻ cụ thể

Chúng tôi phân tích cú pháp và xóa các thẻ "script", "style" và "meta" bằng cách sử dụng một số vòng lặp for và chức năng "select" của BeautfulSoup

Bạn sẽ thấy rằng chúng tôi sử dụng ". extract()" trong mỗi vòng lặp. Chức năng này loại bỏ phần tử HTML đã được phát hiện

pip3 install requests beautifulsoup4 lxml
3

Đối tượng BeautifulSoup được trả về dưới dạng Chuỗi

5. Cuối cùng, chúng tôi có thể trả lại BeautifulSoup sau khi xử lý xong HTML mà tập lệnh giám sát trang web của chúng tôi thu được

Bạn không thể trả lại đối tượng soup ở trạng thái hiện tại. Để chuyển đổi nó thành một chuỗi tiêu chuẩn, chúng ta cần sử dụng hàm "str()"

pip3 install requests beautifulsoup4 lxml
4

Dọn dẹp Phản hồi HTML đã được truy xuất

Chúng tôi cần thay đổi một phần khác của tập lệnh để sử dụng phương thức "dọn dẹp html ()" của chúng tôi ngay bây giờ khi chúng tôi có nó

6. Xác định vị trí và thay đổi dòng mã sau

Điều này làm thay đổi tập lệnh sao cho văn bản trả lời không còn được lưu trữ vô mục đích và thay vào đó được gửi qua chức năng mới của chúng tôi

Hãy tìm dòng mã dưới đây. Nó phải ở dạng "trang web đã thay đổi(). "

pip3 install requests beautifulsoup4 lxml
5

Thay thế dòng sau cho dòng đó

pip3 install requests beautifulsoup4 lxml
6

Trình giám sát trang web mở rộng mới đang được lưu

7. Sau khi bạn đã thực hiện tất cả các thay đổi ở trên đối với tệp, mã sẽ trông như thế này

Nếu bạn đang sử dụng nano, hãy đảm bảo rằng bạn đã lưu tệp bằng cách nhấp vào CTRL + X, rồi Y, rồi ENTER

pip3 install requests beautifulsoup4 lxml
7

8. Bây giờ bạn có thể chạy lại tập lệnh. Lần này các phát hiện sẽ nhất quán hơn nhiều. Chúng ta nên hạn chế tỷ lệ dương tính giả bằng cách xóa các thẻ "script", "style" và "meta"

Mọi yêu cầu sẽ không còn được gắn thẻ là "đã sửa đổi" nếu bạn đang sử dụng ví dụ này trên trang web của chúng tôi

Trình giám sát trang web Raspberry Pi hiện có hỗ trợ qua email

Nếu Raspberry Pi của chúng tôi không cung cấp cho bạn một số dạng tín hiệu khi một trang web thay đổi, thì nó sẽ không được sử dụng nhiều

Chúng tôi sẽ cải thiện khả năng của mình trong phần này bằng cách gửi email bất cứ khi nào tập lệnh phát hiện ra thay đổi. Xin lưu ý rằng bạn sẽ cần biết thông tin SMTP cho bất kỳ ai đang xử lý email của bạn

Chúng tôi sẽ sử dụng thông tin máy chủ SMTP của Gmail làm ví dụ

Nhập tệp mới

Chúng tôi cần tải một gói khác để thực thi các kết nối SMTP trong Python. Thư viện này may mắn được đóng gói với Python

1. Thêm dòng sau vào đầu danh sách nhập của tập lệnh

Dòng này nhập gói "smtplib", cho phép chúng tôi nhanh chóng bắt đầu các kết nối SMTP

pip3 install requests beautifulsoup4 lxml
8

Xác định các hằng số để lưu trữ dữ liệu email

Khi bắt đầu tập lệnh Python, chúng ta phải chỉ định một số hằng số. Trong các khai báo "nhập khẩu" khác, phải thêm các dòng sau

Mặc dù Python không hỗ trợ hằng, nhưng chúng ta có thể nâng cao bằng cách sử dụng chữ in hoa để đặt tên cho các biến này. Các giá trị này không nên thay đổi trong thời gian chạy

NGƯỜI DÙNG SMTP \s

2. Tên người dùng đăng nhập cho kết nối SMTP của bạn được xác định bởi hằng số này. Nếu bạn sử dụng Gmail, đây là email bạn sẽ sử dụng để đăng nhập

Kết nối SMTP được thực hiện bằng cách sử dụng giá trị chứa trong hằng số này

pip3 install requests beautifulsoup4 lxml
9

MẬT KHẨU SMTP

3. Bạn phải xác định mật khẩu cho tài khoản đang thực hiện kết nối SMTP trong hằng số này

Đây là mật khẩu tài khoản Gmail của bạn nếu bạn sử dụng nó. Bạn sẽ cần thiết lập mật khẩu ứng dụng nếu bạn đã bật 2FA (bạn nên làm như vậy)

nano websitemonitor.py
0

MÁY CHỦ SMTP

4. Hằng số "SMTP HOST" chỉ định địa chỉ IP hoặc URL sẽ sử dụng cho kết nối SMTP

Chúng tôi sẽ sử dụng dữ liệu kết nối SMTP của Gmail làm ví dụ

nano websitemonitor.py
1

CỔNG SMTP

5. Chúng tôi xác định cổng mà trình giám sát trang web Raspberry Pi của chúng tôi sẽ sử dụng để gửi email khi phát hiện thay đổi bằng cách sử dụng biến này

Chúng tôi sẽ sử dụng cổng của Gmail cho SSL ẩn trong ví dụ bên dưới (cổng 465)

nano websitemonitor.py
2

SMTP SSL

6. Ngày nay, hầu hết các hệ thống email đều cung cấp SSL hoặc TLS. Chỉ SSL chứ không phải STARTTLS mới được hỗ trợ trong mã của chúng tôi

Đảm bảo hằng số sau được đặt thành True để bật hỗ trợ này. Đặt giá trị này thành Sai nếu bạn muốn tắt SSL

nano websitemonitor.py
3

SMTP TỪ EMAIL

7. Cuối cùng, chúng tôi có thể chỉ định địa chỉ email sẽ được sử dụng để gửi email này. Đây phải là một địa chỉ email cá nhân

Đây phải là một email được kết nối với tài khoản Gmail của bạn chẳng hạn. Bạn phải định cấu hình địa chỉ và tên miền đó nếu bạn sử dụng dịch vụ thư giao dịch như Mailgun

nano websitemonitor.py
4

SMTP ĐẾN EMAIL

8. Biến cuối cùng cần đặt là biến chỉ định nơi tập lệnh sẽ gửi email

Điền địa chỉ email bạn muốn nhận thông tin cập nhật về những thay đổi đối với trang web

nano websitemonitor.py
5

Bây giờ chúng ta có thể viết chức năng "email notification()" vì chúng ta đã khai báo tất cả các hằng số có liên quan. Chức năng này chịu trách nhiệm thiết lập máy chủ SMTP và gửi email

9. Đầu tiên, hãy xác định chức năng mới của chúng tôi. Sẽ có hai tham số trong đó. Chúng ta có thể dễ dàng chỉ định dòng chủ đề với đối số thứ nhất và chính thông báo đó với đối số thứ hai

nano websitemonitor.py
6

Thiết lập kết nối SMTP

Chúng tôi bắt đầu thủ tục này bằng cách thiết lập kết nối SMTP. Chúng tôi cần hai cuộc gọi riêng biệt được phân tách bằng câu lệnh if để hỗ trợ SSL và các kết nối không được mã hóa

Nếu "SMTP SSL" được đặt thành True, kết nối SMTP được thiết lập và lưu trữ trong biến "máy chủ smtp"

Khi tắt SSL ta cũng làm tương tự. Khi thiết lập kết nối, chúng ta sử dụng biến SMTP HOST và SMTP PORT

nano websitemonitor.py
7

Truy cập máy chủ SMTP

11. Bây giờ chúng tôi có thể gửi email vì chúng tôi đã thiết lập kết nối với máy chủ SMTP

Điều đầu tiên chúng ta sẽ làm là gửi cho máy chủ một tin nhắn "ehlo". Điều này cho máy chủ biết nhiều thứ, nhưng chúng tôi sẽ không đi vào chi tiết

Bước tiếp theo là gửi thông báo đăng nhập đến máy chủ. Chúng tôi gửi người dùng và mật khẩu được lưu trong "SMTP USER" và "SMTP PASSWORD" cho phương thức đăng nhập này

nano websitemonitor.py
8

Tạo một định dạng email

12. Tiếp theo, chúng tôi sẽ xây dựng email sẽ được gửi qua kết nối SMTP

Đây là một trong những thành phần quan trọng nhất vì đó là cách Raspberry Pi của chúng tôi sẽ thông báo cho bạn khi phát hiện thấy bản cập nhật trang web

Bạn có thể thay đổi định dạng theo ý thích của bạn. Chỉ cần đảm bảo rằng các dòng "TỪ," "ĐẾN," và "Chủ đề" được định dạng chính xác. Mỗi người có một dòng riêng

Trước khi bắt đầu phần nội dung email của bạn, phải có một dòng trống

nano websitemonitor.py
9

truyền thư điện tử

13. Chúng tôi hoàn thành chức năng này bằng cách gửi email qua kết nối SMTP của chúng tôi

Chúng tôi chuyển email đã lưu trong "SMTP FROM EMAIL," "SMTP TO EMAIL," và cuối cùng là email mà chúng tôi đã chuẩn bị trước đó vào lệnh gọi phương thức này

Sau khi email được gửi đi, chúng ta ngắt kết nối SMTP

import os
import sys
import requests
0

Các cuộc gọi đến chức năng thông báo email () đang được thêm vào

Bây giờ chúng tôi đã phát triển chức năng cần thiết của mình, chúng tôi cần gọi nó từ bên trong mã

Chúng ta sẽ điều chỉnh chức năng "main()" trong phần này

14. Trong tập lệnh Python của bạn, tìm dòng sau

import os
import sys
import requests
1

Trên nó, thêm dòng hiển thị bên dưới

Khi trình giám sát trang web Raspberry Pi gặp sự cố khi kết nối với trang web, tập lệnh sẽ gửi email

import os
import sys
import requests
2

15. Chúng tôi cũng nên bao gồm một dòng để chúng tôi được thông báo khi trang web được cập nhật

Trong tập lệnh của bạn, tìm dòng sau. Nó phải nằm ngay bên dưới dòng trước đó mà bạn đã phát hiện ra

import os
import sys
import requests
3

Trên đó, thêm dòng sau. Khi trang web được công nhận là đã thay đổi, dòng này sẽ gửi email

import os
import sys
import requests
4

Mã ở dạng cuối cùng của nó

16. Mã của tập lệnh của bạn bây giờ trông giống như mã bên dưới sau khi bạn đã thực hiện tất cả các sửa đổi

Trước khi tiếp tục, hãy nhớ lưu mã của bạn

import os
import sys
import requests
5

17. Trình giám sát trang web của bạn bây giờ sẽ gửi cho bạn thông báo qua email nếu mọi thứ đang hoạt động bình thường

Nó sẽ gửi một email bất cứ khi nào nó được khởi chạy và phát hiện một thay đổi trong trang web. Nó cũng sẽ gửi email nếu trang web đó gặp sự cố hoặc tạo mã trạng thái không phải 2XX

Định kỳ chạy Trình theo dõi trang web Raspberry Pi của bạn

Bạn sẽ muốn chạy tập lệnh Python để theo dõi các trang web một cách thường xuyên khi bạn đã tạo tập lệnh này

Mặc dù bạn có thể thêm một vòng lặp vô tận vào tập lệnh để tập lệnh chạy vô thời hạn, thay vào đó, chúng tôi sẽ sử dụng một cronjob đơn giản

1. Đảm bảo rằng tập lệnh Python của chúng tôi đã được cài đặt trên Raspberry Pi của bạn trước khi tiếp tục

Bạn có thể lấy tập lệnh từ kho lưu trữ GitHub của chúng tôi nếu bạn bỏ qua các phần trước. Chỉ cần đảm bảo rằng thông tin cho kết nối SMTP của bạn đã được điền vào

Phần hướng dẫn này sẽ giả định rằng tập lệnh nằm trong thư mục chính của người dùng "pi" (/home/pi/)

2. Bây giờ chúng tôi có thể sửa đổi crontab để tập lệnh của chúng tôi chạy mỗi phút

Để chỉnh sửa crontab của người dùng hiện tại, hãy sử dụng lệnh sau

import os
import sys
import requests
6

Khi được hỏi bạn muốn sử dụng trình soạn thảo văn bản nào, chúng tôi khuyên dùng "nano. "

3. Ở cuối tệp, thêm dòng sau

Để trỏ đến URL bạn muốn theo dõi, bạn sẽ cần điều chỉnh lệnh một chút. Bạn cũng phải đặt tên cho bộ đệm của mình. Tên bộ đệm có thể là bất kỳ chuỗi nào;

import os
import sys
import requests
7

4. Nhấn CTRL + X, sau đó Y, tiếp theo là phím ENTER để lưu các thay đổi vào crontab

5. Sau đó, Raspberry Pi của bạn sẽ bắt đầu theo dõi trang web được chỉ định mỗi phút

Nếu tập lệnh phát hiện có sự thay đổi trong nội dung của trang web, thì bây giờ tập lệnh sẽ thông báo cho bạn

Sự kết luận

Chúng tôi đã hướng dẫn bạn cách thiết lập trình theo dõi trang web đơn giản trên Raspberry Pi của bạn trong suốt bài viết này

Mỗi khi tập lệnh Python này được gọi, nó sẽ truy xuất phiên bản mới nhất của URL được cung cấp. Phản hồi sau đó được lưu vào bộ đệm để xem liệu có bất kỳ thay đổi nào kể từ yêu cầu cuối cùng hay không

Sử dụng máy chủ email bên ngoài, tập lệnh này có thể gửi email cho bạn bất cứ khi nào URL thay đổi hoặc không thể truy cập được

Vui lòng để lại nhận xét bên dưới nếu bạn gặp bất kỳ vấn đề nào với tập lệnh giám sát trang web này

Bài gốc - https. // shopmakergenix. blogspot. com/2022/05/how-to-use-python-to-monitor-webpage-on. html