サードパーティのポップアップ広告をブロックするブラウザの拡張機能を実装したいと考えています。広告ブロッカーのようなものです。しかし、どこから始めればよいかわかりません。Web コンテンツのフィルタリングについて詳しく学ぶために使用できる参考文献を教えてもらえますか? 前もって感謝します。
2 に答える
Google Chromeの場合、広告ブロックの基本はchrome.webRequest
APIです。これにより、進行中のウェブリクエストに関する拡張情報が提供され、送信中のリクエストを傍受または変更できるようになります。
私はあなたがおそらく見つけたリンクにあなたを突き刺すのは嫌いですが、あなたが本当に必要とするものはすべてここにあります:
http://developer.chrome.com/extensions/index.html
時間をかけて読むと、拡張機能がどのように構築され、ブラウザで動作するかがわかります。十分に長く読むと、次のセクションが見つかります。
http://developer.chrome.com/extensions/content_scripts.html
これは、JavaScriptをタブに挿入し、ページのコンテキストとプラグインのコンテキストで実行する方法を詳しく説明しています。
リソースはかなり詳細です、あなたはそれらを読む必要があります。
あなたのコメントをフォローアップするために、いいえ。すべてのブラウザ環境は異なる方法で設計されており、目標が同じであっても、同じ問題に対して異なるアプローチを取る必要がある可能性があります。
私の見方では、これを行うには2つの方法があります(高レベルで)。送信が発生しないようにするか、ページが読み込まれた後にページから要素をさかのぼって削除します。
送信を停止すると、バイトがコンピュータまたは少なくともページに到達しないため、多くのドライブバイエクスプロイトを防ぐことができるため、より優れています。
duskwuffが説明したように、chromeにはリクエストをインターセプトしてその時点でその決定を下すことができるAPIがあります。IEのAPIはChromeとはまったく異なり、Firefoxは両方とは異なります。
レトロアクティブなアプローチを取ると、ページに対して実行され、広告を削除するxプラットフォームであるJavaScriptを作成できる可能性があります。すべてのブラウザのタブでこのスクリプトを挿入/実行するための独自の方法を見つけることができれば、これは「クロスブラウザ」で機能しますが、その部分の実装はプラットフォームに固有のものになります。
ブラウザが異なれば、使用する言語も異なります。
Chromeはほとんどの拡張機能にJS/HTML5を使用しており、ネイティブDLLを適切に使用できますが、拡張機能をストアに送信するときは、HTML /が原因でブラウザの問題が発生しないことをバイナリで確認する必要があるため、より精査されます。 jsバージョンはサンドボックス内にあり、適切に分離できます。
Firefoxはここでかなり変更されました。私はその変更について最新の情報を入手していませんが、まったく別のボールゲームです。ある時点での拡張フレームワークは、小さなスタンドアロンアプリiircを構築するのに十分成熟していましたが、私は間違っている可能性があります。
IEは主にCOM拡張機能であり、最後に少し変更された可能性がありますが、ブラウザのCOMインターフェイスと相互運用する.NETまたはC++.dllを作成する可能性があります。
ご覧のとおり、ブラウザごとに大きく異なり、すべての外れ値があります(Safari / Operaなど...)
これらのブラウザの多くはクロスプラットフォームでもあり、問題をどのように攻撃するかによっては、それを考慮に入れる必要があることを忘れないでください。
また、注目に値するのは、Chromeは非同期モデルであり、各タブ/プラグインは互いに「分離」されており、基本的に非同期メッセージングを使用して通信します。これにより、コールバックメソッド内で多くの作業を行う必要があるため、ブラウザを操作するための一般的なアプローチが他のブラウザとは根本的に異なります。