「Linux ブラウザ式クローラー 備忘録 (2025/10/30)」


さて、以前にも書きましたが。

わたくし今はLinuxを使っています。



(移行した理由:
 ・OSの強制アップデートがない。
 ・変なアプリの強制インストールがない。
 ・無料なので、試すだけ試してみればいい。)



その時。
普段使ってるWindows系アプリは
全てLinux系アプリに乗り換える必要があるのですが。



その中で、最も苦労したのは

  ブラウザのデータを取得して、ファイルにセーブする

いわゆる「クローラー」ソフトの製作です。


例えば、こういうチャート的なデータ。



「ブラウザの、今見ているページの.htmlデータを、一定間隔でローカルファイルに保存する」

たったそれだけの話なのですが
実際にやろうとすると、めっちゃ難しいのです。-_-;




なんでそんなに大変かと言うと。

ブラウザと言うのは(驚くべき事かも知れませんが)
 「ローカルファイルの読み書き」
が禁止されています。



ブラウザがローカルファイルに書き込みたければ、
かならず「ダウンロード」と言う形を取る必要がある。

これはセキュリティ上の要請であり。
このルールを破るのはほぼ不可能。


いずれにせよ。ブラウザのデータを
「任意のローカルファイル.html」に保存するのは
不可能なのです。




唯一の例外が。


ページの保存時でしょうか。

だがこれも、「明示的に、ユーザーが許可した時」
のみ可能であり。
絶対に「ユーザーのクリック動作」が必要。


「n分間隔で、自動で保存してくれ」 そういう動作は出来ないようになっています。





・ちなみに プログラム的に

  new System.Net.Http.HttpClient().GetStringAsync("url");


と書いて、こういう画面のデータを取得するのは不可能です。


と言うのも。
  new System.Net.Http.HttpClient().GetStringAsync("url");
が取得するのはstaticなhtmlデータ。


だが、↑のチャートなどは。
JavaScriptを使って動的にデータを取得・更新しているので。

static / html 的な視点からでは
値を取得する事ができません。
  
  
やはりブラウザで見ている(Javascriptを実行できる)
環境でないとこのデータは取得できません。





そこで次に私が試したことは:
 ・自作のブラウザの拡張 "I_Want_To_Save"を作り
 ・"I_Want_To_Save"が、自作サーバーにデータを送信し
 ・サーバーで受け取って保存する。
 



こんな感じで。
データを、外部に送り出して。
そこでキャッチするシステムを作ったのですが。

これも無理でしたね。


これをやると、


「クロスオリジン CORS」に引っかかって、実行できないんですわ。
(簡単に説明すると。Javascriptは、"サーバー側が許可した.js"のみが許可され。
 ユーザーの自作.jsは許されない。)


まぁ・・・当然ですかね。(-_-;A

何しろ。私がやろうとしてる事は:


 ・カスタムスクリプトをページに挿入し、
 ・ユーザーのアクセスしているデータを、外部サーバーに送信
 
まさしく「盗聴」行為ですので。(汗)


当然、そのような犯罪的なスクリプトの
対策はしっかりされてて。
実行できないようになっておりました。



と言うわけで。


「ブラウザの見てる画面を保存」すると言うのは。



思っているよりもずっと難しい。
セキュリティ上の懸念で。
そのような盗聴的な行為はガッチガチに規制されている。


どうやって、これ。
ローカルファイルに保存できるの?



もっと"捻った"アイディアを絞り出す必要がある。
 (だからこれは「難しい問題」なのです。-_-;)


次回。私が見つけた「保存」の手法を紹介します。