Slide 1

Slide 1 text

ChangeDetection.io でウェブペ ージを定期チェック Kenichiro Matohara(matoken) 1

Slide 2

Slide 2 text

matoken @ 鹿児島の右下の山奥から参加 好きなLinuxディストリビューションはDebian GNU/Linux map: © OpenStreetMap contributors Kenichiro Matohara(matoken) https://matoken.org [email protected] 2

Slide 3

Slide 3 text

先月の発表より 「Glanceで個人向けポータルサイト」 ChangeDetection.io 日本でのはてなアンテナ的な? https://codeberg.org/matoken/kagolug- 2025.02/src/branch/main/slide/slide.adoc 4

Slide 4

Slide 4 text

はてなアンテナ? お気に入りのページを登録すればはてなアンテナが代わりに自動巡回。専用ページに更新順に表 示します。 人気のアンテナをインポートして自分用にカスタマイズしたり、友達だけで共有するアン テナも思いのまま! https://a.hatena.ne.jp/ 5

Slide 5

Slide 5 text

Changedetection.io はてなアンテナに似ているサービスおよびびソフトウェア OSS(Apache-2.0 license)でセルフホスト可能 セルフホストしたらはてなアンテナにあるような件数の制限などを気にせず使えそう RSSに対応していないsiteなどのチェックに良さそう 他にも気になる機能が 試してみる https://changedetection.io/ 6

Slide 6

Slide 6 text

導入 Docker pip 8

Slide 7

Slide 7 text

Docker  Debian sidのDockerは古いので公式リポジトリのものを利用  176.5MB Pulling $ git clone https://github.com/dgtlmoon/changedetection.io $ cd changedetection.io $ docker compose up -d 9

Slide 8

Slide 8 text

pip install $ pip3 install changedetection.io $ changedetection.io -d /path/to/empty/data/dir -p 5000 10

Slide 9

Slide 9 text

使ってみる http://127.0.0.1:5000 12

Slide 10

Slide 10 text

Google 初回,変更がないと寂しい 13

Slide 11

Slide 11 text

差分確認 緑が追加差分,赤が削除差分 以前のスクレイピング結果を保存して指定期間の間の差分が確認できる 14

Slide 12

Slide 12 text

インポート機能 1つずつURLを登録する以外にインポート機能がある テキストエリアに以下のような形式で貼り付け tag1, tag2, last tag Distill.io からのJSON .xlsx 形式のファイル  Distill.io は競合のWebServiceのよう https://example.com 15

Slide 13

Slide 13 text

動作しないsite Amazon日本,TVer,らじる★らじる JavaScriptで書かれた部分(Historyで表示されない場所) basic authのページ のようにしても駄目? → WebDriverを利用する http://USER:[email protected]/ Unable to extract restock data for this page unfortunately. (Got code 200 from server), no embedded stock information was found and nothing interesting in the text, try using this watch with Chrome. 16

Slide 14

Slide 14 text

WebDriver の利用 Dockerの場合,docker-compose.yml の browser-chrome: セクションをコメントを削除し有効 に down $ docker compose down up $ docker compose up -d 大量のイメージダウンロード…… → +900MB近く (ディストリビューションパッケージの ものを使ったほうがサイズは有利そう)  32bit armでは動かなそう 18

Slide 15

Slide 15 text

取得方法の変更 該当Siteの右側の「Edit」ボタン→「Request」タブ 19

Slide 16

Slide 16 text

WebDriver に変更 Amazon日本 → OK TVer → OK らじる★らじる → OK Basic Auth → OK  Basic AuthのページはJavaScript非対応のw3mでも取得できるのだけど…… 20

Slide 17

Slide 17 text

ページチェックの種類 以下の2種類がある Re-stock & Price detection for single product pages 在庫や値段チェックに?Amazon日本はうまく動かない?楽天市場はOK Webpage Text/HTML, JSON and PDF changes 通常のチェック  AmazonについてはKeepaが便利 21

Slide 18

Slide 18 text

ページチェックの頻度 全体の既定値,各項目それぞれにチェック間隔を設定できる(3秒〜) 22

Slide 19

Slide 19 text

通知( 未検証) チェック結果をさまざまな方法でプッシュ通知できる Discord, Email, POST, GET そのほか 対応のもの Apprise 23

Slide 20

Slide 20 text

フィルタ 空白を無視 アンカータグの内容をレンダリング 要素の削除 テキストを無視 24

Slide 21

Slide 21 text

API とChrome 拡張機能 API経由でchangedetection.ioを操作可能 Glanceへの表示にも利用 Chrome拡張機能とAPIでウェブブラウザから登録できるよう……Firefox版も欲しいです https://chromewebstore.google.com/detail/changedetectionio- website/kefcfmgmlhmankjmnbijimhofdjekbop 26

Slide 22

Slide 22 text

Glance で表示 - type: change-detection instance-url: http://localhost:5000/ token: lio7v6sxrolduown34zomsyyxntcxcel 27

Slide 23

Slide 23 text

RSS 閲覧だけならRSS購読が手軽そう all/タグ毎にRSSが購読できる 28

Slide 24

Slide 24 text

CAPTCHA & Proxies BrightData,Oxylabsという有料サービスを使いCAPTCHAを回避したりブロックを回避し たりできるらしい(未確認) changedetection.io全体のProxy設定もある URL毎にProxyが設定できると便利そうだが…… 29

Slide 25

Slide 25 text

バックアップ,復元 バックアップはWebUIの右上のBACKUPSより生成,ダウンロードが可能 復元にはコマンドライン操作が必要 30

Slide 26

Slide 26 text

WebDriver にLightpanda が使えないか? 🐼 v8エンジンを使ったZig製ヘッドレスブラウザ Chromeなどに比べて軽量らしい 少し試した限りでは大抵クラッシュしてしまう…… これからに期待 https://lightpanda.io/ Lightpanda is purpose-built for AI and automation workflows. 10x faster. 10x less RAM. 100x better than Chrome headless. 31

Slide 27

Slide 27 text

まとめ ウェブページを定期的にスクレイピングして差分を教えてくれるChangedetection.ioを試し た はてなアンテナに似たサービス RSSが提供されていないサイトやRSSの範囲外の部分などのチェックに良さそう 以前のスクレイピング結果を保存して差分表示してくれ,どこがどう変わったかもわかりやすい url毎にスクレイピングタイミングを指定したりフィルタを設定したりもできる 通知機能もあるのでスマートフォンなどで好みのメッセンジャーアプリで通知を受信といったこ とも可能 (urlとアプリケーション名が同じだとちょっと混乱してしまう?) 32

Slide 28

Slide 28 text

発表時のツッコミなど パスワードを設定しても結果を共有できる? パスワード設定状態でRSSは購読できるのを確認 検索機能はある? changedetection.io自体の検索機能ではtitle/urlしか検索できないよう backupを展開して別のツールで検索することは可能そう Lightpandaもスクレイピングがうまくできないと困るのできっと改善されていくのでは 33

Slide 29

Slide 29 text

奥付 発表 2025-03-16(sat) 発表者 利用ソフトウェア + ライセンス 鹿児島Linux勉強会 2025.03(オンライン開催) Kenichiro Matohara(matoken) Neovim Asciidoctor Reveal.js CC BY 4.0 34

Slide 30

Slide 30 text

No content