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 Show
Đ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ạnTrướ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
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
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
Sử dụng Trình giám sát trang web trên Raspberry Pi của bạnBâ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
Mã Python cho một màn hình trang web đơn giảnTrướ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
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
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 8
Sử dụng trang web để thực hiện một yêu cầu4. 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ố 85. 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ủ
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. " 0Tạo bộ đệm trên một trang web mới7. 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 0Xem 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 1Kiể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 2Nế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 3tạ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 4Kiểm tra trang web để thay đổi12. 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. " 5Phản hồi in dựa trên trạng thái trang web13. 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 614. 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ùng15. 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 7Trê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ảnBâ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 82. 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 93. 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 PiTrong 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 0Tạo một Phương thức html() dọn dẹp mớiBâ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 1Tạo một đối tượng BeautifulSoup mới3. 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 2Sử dụng BeautifulSoup để dọn sạch HTML4. 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 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()" 4Dọn dẹp Phản hồi HTML đã được truy xuấtChú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(). " 5Thay thế dòng sau cho dòng đó 6Trì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 78. 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 emailNế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ớiChú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 8Xác định các hằng số để lưu trữ dữ liệu emailKhi 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 \s2. 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 9MẬT KHẨU SMTP3. 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) 0MÁY CHỦ SMTP4. 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ụ 1CỔNG SMTP5. 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) 2SMTP SSL6. 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 3SMTP TỪ EMAIL7. 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 4SMTP ĐẾN EMAIL8. 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 5Bâ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 6Thiết lập kết nối SMTPChú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 7Truy cập máy chủ SMTP11. 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 8Tạo một định dạng email12. 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 9truyề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 0Cá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 1Trê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 215. 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 3Trê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 4Mã ở 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 517. 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ạnBạ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 6Khi đượ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; 74. 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ậnChú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 |