Web サイトの更新があった場合、これを検知してメールなどで通知する方法として、Python を利用した Web ページ監視ツール「urlwatch」があります。
urlwatch とは
Github に公開されている urlwatch は、特定サイトの Web ページまたは任意のシェルコマンドの出力を監視し、前回の取得した情報との差分を抽出できます。レポートはメールなどで送信が可能です。
https://github.com/thp/urlwatch
https://urlwatch.readthedocs.io/en/latest/index.html
インストールと設定
openSUSE Tumbleweed に urlwatch 2.21 をインストールする場合の例です。
インストール
openSUSE ソフトウェアで「urlwatch」を検索し、openSUSE Tumbleweed の「1クリックインストール」をクリックしてインストールします。
SSH 有効化(オプション)
hostname:~# systemctl status sshd.service hostname:~# systemctl start sshd.service hostname:~# systemctl stop firewalld.service
urlwatch ジョブ作成
username@hostname:~> export EDITOR="/usr/bin/vi" username@hostname:~> urlwatch --edit
urlwatch をアップグレード
hostname:~# pip3 install --upgrade urlwatch
監視サイトとフィルタの設定
name: に任意の名前、url: に監視したい URL を設定します。複数定義する場合は、--- で区切ります。
filter: に何も指定しない場合、Web ページ全体が取得対象となります。Flash などの動的なページでは、ソースコードが頻繁に変わるため、filter: で監視対象を可能な限り絞る必要があります。filter: の詳細はこちらを参照
vi ./.config/urlwatch/urls.yaml kind: url name: Network Engineer Blog url: https://friendsnow.hatenablog.com/ filter: - element-by-tag: body - html2text --- kind: url name: オープンソースの WAF(ModSecurity)について url: https://friendsnow.hatenablog.com/entry/2020/11/21/110000 filter: - element-by-tag: body - html2text:
通知設定
Gmail で送信する場合は以下のように設定します。
vi ./.config/urlwatch/urlwatch.yaml report: email: enabled: true from: '*******@gmail.com' html: ture method: smtp sendmail: path: sendmail smtp: auth: true host: smtp.gmail.com port: 587 starttls: true user: '' insecure_password: ******* subject: 'Webサイトの更新がありました!: {jobs}' to: '*******@gmail.com'
注意点として、Gmail を利用する場合は、以下の手順で Gmail アカウント構成の変更も必要です。
- https://myaccount.google.com へアクセスします。
- 左ペインの「セキュリティ」をクリックします。
- 「安全性の低いアプリのアクセス」を有効にします。
※プライマリ Gmail アカウントでこの設定はセキュリティ対策として適切ではなく非推奨です。
urlwatch 専用のアカウントを作成することを強く推奨します。
確認
urlwatch --list コマンドで確認します。
username@hostname:~> urlwatch --list 1: Network Engineer Blog ( https://friendsnow.hatenablog.com/ ) 2: オープンソースの WAF(ModSecurity)について ( https://friendsnow.hatenablog.com/entry/2020/11/21/110000 )
実行
urlwatch を実行します。最初の実行でソースコードを保存し、2回目の実行で差分があった場合、更新内容(赤字:削除、緑字:追加)が出力されます。
username@hostname:~> urlwatch
出力例
以上