Delphi 7 で記述されたバックグラウンド サービスを使用して、特定の URL がブラウザによって読み込まれないようにしたいと考えています。これは可能ですか?
誰かが私を方向に向けることができますか?
前もって感謝します。
シェーン
2 つのアプローチがあり、2 番目のアプローチが技術的に最適です。
すべてのプロセスに挿入する DLL を作成します。これらのプロセスがブラウザー用の場合は、Windows ソケットなどを使用して、すべてのトラフィックをインターセプトしてフィルター処理する必要があります。
(OS の下位レベルで) ファイアウォールのように機能するレイヤード サービス プロバイダーを記述します。
私はインターネット フィルタリング ソフトウェアの仕事をしてきましたが、どちらも大企業です。最初は最初のアプローチを採用しましたが、技術的に優れているため、別のアプローチに切り替えました。[そして、会社が倒産したため、その移行を完了することはできませんでした;-(]
私たちは独自の LSP を作成しませんでしたが (それ自体が大きな仕事です)、Komodiaの製品を使用しました。彼らは C 用に書いていますが、Delphi への移植に関する私たちの質問に答えてくれてとても助かりました。
しかし、前に述べたように、これは大きな問題です。32 ビットと 64 ビットのコード、http と https、サービスが停止しないように保護するなどの処理を行う必要があります。見つけることができる非プログラミング ソリューションの方が優れています (回避するのは簡単ですが)。 .
それでもプログラミングしたい場合: LSP を使用した 1 人年のコーディングの準備をしてください。
サービス、いいえ、そうは思いません。ただし、「hosts」ファイルを編集して、URL のドメインが 127.0.0.1 を指すようにすることができます。このファイルを「保護」するサービスを作成できますが、サービス自体はそれを編集できる昇格された権限を持っている必要があり、もちろん、ユーザーがそうする権限を持っている場合、サービス自体も強制終了できます。
とにかく、ファイルを編集できたとしても、ブラウザはドメイン名でサーバーを見つけることができません。もちろん、IP アドレスを持つ URL をこの方法でブロックすることはできません。また、特定の URL をブロックすることも、ドメイン全体のみをブロックすることもできません。
しかし、一般的に、これはカスタム サービスを使用して解決するものではなく、PC またはルーターのファイアウォールで解決するものです。
Internet Explorer の場合、IE 自体がブラウザー イベントを読み込んで渡すブラウザー ヘルパー オブジェクトを作成できます。BHO は、必要に応じて、要求ごとに URL を受け入れ/拒否できます。