次に以下に、コンテンツのハッシュベースの動的制限およびその対抗手段のデプロイメントの方法、装置、およびシステムに関係する様々な概念ならびにそれらの方法、装置、およびシステムの実装形態のより詳細な説明を示す。上で導入され、以下でより詳しく説明されている様々な概念は、多数の方法のうちのどれかで実装されてよく、説明されている概念は特定の実装様式に限定されない。
以下の様々な実施形態の説明を読むことを目的として、本明細書のセクションおよびそれらのセクションのそれぞれの内容の次の説明は有益な場合がある。
セクションAでは、コンテンツのハッシュベースの動的制限およびそれらの対抗手段のデプロイメントに対するコンピュータネットワーク接続環境を説明する。
セクションBでは、情報リソース内に挿入されるコンテンツを制限するシステムおよび方法を説明する。
セクションCでは、情報リソースの完全性に干渉するスクリプトに対する対抗手段をデプロイするシステムおよび方法を説明する。
セクションDでは、本明細書で詳細が説明されているシステムおよび方法を実施するために有益であり得るコンピューティングシステムアーキテクチャを説明している。
A. 情報リソース上のコンテンツのハッシュベースの動的制限およびそれらの対抗手段のデプロイメントに対するコンピュータネットワーク環境
図1は、情報リソース上のコンテンツのハッシュベースの動的制限およびその対抗手段のデプロイメントのための環境の一実装形態を示すブロック図である。環境100は、ネットワーク105を介して、少なくとも1つのコンテンツプロバイダデバイス115、少なくとも1つのコンテンツパブリッシャデバイス120、少なくとも1つのクライアントデバイス125、少なくとも1つのプロキシデバイス145、および少なくとも1つのリモートコンテンツリストリクタデバイス115に接続されている少なくとも1つのデータ処理システム110を備える。
手短に概要を述べると、クライアントデバイス125からコンテンツを求める要求があると、データ処理システム110は、ネットワーク105を介して1つまたは複数のコンテンツ要素を含む情報リソースをクライアントデバイス125に提供をすることができる。情報リソースは、コンテンツパブリッシャデバイス120から取り出されるものとしてよく、1つまたは複数のコンテンツ要素は、コンテンツプロバイダデバイス115から取得されるものとしてよい。情報リソースおよびそれに関するコンテンツ要素は、クライアントデバイス125上でレンダリングするためにアプリケーション160によって処理され得る。相前後して、リモートコンテンツリストリクタデバイス150は、プレゼンテーションリストリクタ165を使用して、データ処理システム110によってクライアントデバイス125に提供される情報リソース上のコンテンツ要素のうちのいくつかの表示もしくはレンダリングを無効化するか、またはいくつかの実装形態では、干渉することができる。プレゼンテーションリストリクタ165は、それぞれのデバイス上でプレゼンテーションリストリクタ165を実行するためにプロキシデバイス145およびクライアントデバイス125に提供され得る。情報リソースとその上のコンテンツ要素との完全性を維持するために、データ処理システム110は、対抗手段スクリプトを実行してコンテンツ要素のバリアント(variant)を生成することができる。コンテンツ要素のバリアントを生成し、生成されたバリアントの各々の再処理をプレゼンテーションリストリクタ165に行わせることによって、対抗手段スクリプトは、生成されたバリアントを再処理するときにプレゼンテーションリストリクタ165がコンピューティングデバイスのコンピューティングリソースを利用するとプレゼンテーションリストリクタ165を実行しているコンピューティングデバイスのパフォーマンスを低下させることがある。ネットワーク105、データ処理システム110、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125、プロキシデバイス145、リモートコンテンツリストリクタデバイス150、およびそれらのコンポーネントのさらなる詳細が本明細書において提供される。
さらに詳しく言うと、データ処理システム110は、少なくとも1つのプロセッサとメモリ、すなわち、処理回路を備えることができる。メモリは、プロセッサによって実行されたときに、プロセッサに本明細書において説明されているオペレーションのうちの1つまたは複数を実行させるプロセッサ実行可能命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、など、またはこれらの組合せを含み得る。メモリは、限定はしないが、プロセッサにプログラム命令を提供することができる電子デバイス、光デバイス、磁気デバイス、または他の記憶または伝送デバイスを含み得る。メモリは、フロッピィディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラム可能ROM(EPROM)、フラッシュメモリ、光媒体、またはプロセッサが命令を読み出すことができる他の好適なメモリをさらに含み得る。命令は、好適なコンピュータプログラミング言語からのコードを含むものとしてよい。データ処理システムは、様々な機能を実行することができる1つまたは複数のコンピューティングデバイスまたはサーバを備えることができる。いくつかの実装形態において、データ処理システムは、オークションをホストするように構成されているコンテンツ配置システムを含むことができる。いくつかの実装形態において、データ処理システムは、コンテンツ配置システムを含まないが、ネットワーク105を介してコンテンツ配置システムと通信するように構成される。
ネットワーク105は、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロエリアネットワーク、もしくは他のエリアネットワーク、イントラネット、衛星ネットワーク、音声もしくはデータ携帯電話通信ネットワークなどの他のコンピュータネットワーク、およびこれらの組合せなどのコンピュータネットワークを含み得る。システム100のデータ処理システム110は、ネットワーク105を介して、たとえば少なくとも1つのコンテンツプロバイダデバイス115、少なくとも1つのコンテンツパブリッシャデバイス120、少なくとも1つのクライアントデバイス125、または少なくとも1つのリモートコンテンツリストリクタデバイス150と通信することができる。ネットワーク105は、クライアントデバイス125、データ処理システム110、および1つまたは複数のコンテンツソース、たとえば、ほかにもあるがとりわけ、ウェブサーバの間で情報を中継する任意の形態のコンピュータネットワークであってよい。いくつかの実装形態において、ネットワーク105は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、または他のタイプのデータネットワークなどの、インターネットおよび/または他のタイプのデータネットワークを含み得る。ネットワーク105は、また、ネットワーク105内でデータを受信し、および/または伝送するように構成されている任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含み得る。ネットワーク105は、任意の数のハード配線および/またはワイヤレス接続をさらに含み得る。クライアントデバイス125は、ネットワーク105内の他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどを介して)ハード配線されているトランシーバとワイヤレス方式で(たとえば、Wi-Fi、セルラー、無線などを介して)通信し得る。クライアントデバイス125は、また、プロキシデバイス145(たとえば、ルータ、ネットワークスイッチ、またはゲートウェイ)を介してネットワーク105のコンピューティングデバイスとワイヤレス方式で通信し得る。
コンテンツプロバイダデバイス115は、コンテンツ要素をコンテンツパブリッシャデバイス120またはデータ処理システム110に提供するためにコンテンツプロバイダエンティティによって操作されるサーバまたは他のコンピューティングデバイスを含むことができる。コンテンツプロバイダデバイス115によって提供されるコンテンツは、一次コンテンツ、たとえば、コンテンツパブリッシャデバイス120によって提供されるコンテンツを含むウェブサイトまたはウェブページなどの、情報リソース上に表示するサードパーティコンテンツ要素を含むことができる。コンテンツ要素は、また、検索結果ウェブページ上にも表示され得る。コンテンツプロバイダデバイス115に関連付けられているコンテンツ要素は、スマートフォンまたは他のクライアントデバイス125上のアプリケーションの実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上に表示され得る。次いで、コンテンツパブリッシャデバイス120またはデータ処理システム110は、コンテンツプロバイダデバイス115のコンテンツ要素を選択することができる。データ処理システム110は、コンテンツ配置プロセスを実行してそれぞれのコンテンツ要素の様々なパフォーマンスメトリックに基づきコンテンツ要素を選択することができる。コンテンツパブリッシャデバイス120またはデータ処理システム110は、クライアントデバイス125において情報リソース上に表示するためにコンテンツプロバイダコンピューティングデバイスの選択されたコンテンツ要素を伝送することができる。
コンテンツパブリッシャデバイス120は、一次コンテンツを提供してネットワーク105を介して表示するためにコンテンツパブリッシングエンティティによって動作させられるサーバまたは他のコンピューティングデバイスを含み得る。たとえば、コンテンツパブリッシャデバイス120は、ウェブページ上に表示する一次コンテンツを提供するウェブページ運営者によって管理され得る。コンテンツパブリッシャデバイス120は、また、ネットワーク105を介して表示するためにコンテンツプロバイダデバイス115から受信されたサードパーティコンテンツも提供することができる。一次コンテンツは、コンテンツパブリッシャデバイス120によって提供されるもの以外のコンテンツを含むことができ、ウェブページは、コンテンツプロバイダデバイス115からコンテンツパブリッシャデバイス120によって受信されたコンテンツ要素を表示するように構成されているコンテンツスロットも含むことができる。たとえば、コンテンツパブリッシャデバイス120は、会社のウェブサイトを稼動させることができ、ウェブサイトのウェブページ上に表示するその会社に関するコンテンツを提供することができる。ウェブページは、コンテンツプロバイダデバイス115から受信された画像、テキスト、ビデオ、またはこれらの任意の組合せなどのコンテンツ要素を表示するように構成されているコンテンツスロットを含むことができる。いくつかの実装形態において、コンテンツパブリッシャデバイス120は、検索エンジンウェブサイトを運営する検索エンジン運営者の検索エンジンコンピューティングデバイス(たとえば、サーバ)を含む。検索エンジンウェブページの一次コンテンツ(たとえば、結果またはランディングウェブページ)は、コンテンツプロバイダデバイス115からのコンテンツ要素などのコンテンツスロット内に表示される、検索の結果さらにはサードパーティコンテンツ要素を含むことができる。いくつかの実装形態において、コンテンツパブリッシャデバイス120は、ビデオコンテンツを供給するためのサーバを含むことができる。
コンテンツパブリッシャデバイス120は、ネットワーク105を介してクライアントデバイス125上に表示するために一次コンテンツとともに情報リソースに含めるコンテンツプロバイダデバイス115から受信された1つまたは複数のコンテンツ要素を選択することができる。コンテンツパブリッシャデバイス120は、クライアントデバイス125からのコンテンツを求める要求に応答して、クライアントデバイス125に、一次コンテンツとともにコンテンツパブリッシャデバイス115から受信されたコンテンツ要素を伝送することができる。いくつかの実装形態において、一次コンテンツを伝送した後に、コンテンツパブリッシャデバイス120は、クライアントデバイス125からの追加のコンテンツを求める要求に応答して、クライアントデバイス125に、コンテンツパブリッシャデバイス115から受信されたコンテンツ要素を伝送することができる。いくつかの実装形態において、コンテンツパブリッシャデバイス120は、クライアントデバイス125から一次コンテンツを求める初期要求を受信し、それに応答して、一次コンテンツを含む情報リソースをクライアントデバイス125に伝送することができる。いくつかの実装形態において、データ処理システム110は、コンテンツプロバイダデバイス115から受信された1つまたは複数のコンテンツ要素を選択し、コンテンツパブリッシャデバイス120から受信された一次コンテンツ(たとえば、一般的に情報リソースの中心に及び得る本文、段落、テキスト、ビデオ、または他の要素)を選択することができる。データ処理システム110は、コンテンツプロバイダデバイス115からの選択された1つまたは複数のコンテンツ要素およびコンテンツパブリッシャデバイス120からの一次コンテンツを使用して情報リソースを生成することができる。情報リソースを生成するデータ処理システム110の機能に関するさらなる詳細は、本明細書の以下で説明される。
クライアントデバイス125は、コンテンツパブリッシャデバイス120によって提供されるコンテンツ(たとえば、一次ウェブページコンテンツまたは他の情報リソース)およびコンテンツプロバイダデバイス115によって提供されるコンテンツ(たとえば、情報リソース内に表示するように構成されているコンテンツ要素)などのデータを表示するためにネットワーク105を介して、またはプロキシデバイス145を通じてネットワーク105を介して通信するように構成されているコンピューティングデバイスを含むことができる。クライアントデバイス125、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、およびリモートコンテンツリストリクタデバイス150は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末、モバイルデバイス、コンシューマコンピューティングデバイス、サーバ、クライアント、デジタルビデオレコーダー、テレビ用セットトップボックス、ビデオゲーム機、またはネットワーク105を介して通信するように構成されている他の任意のコンピューティングデバイスを含むことができる。クライアントデバイス125は、エンドユーザがコンテンツを受信する要求をサブミットする際に使用できる通信デバイスであってよい。要求は検索エンジンへの要求であってよく、要求は検索クエリを含むことができる。いくつかの実装形態において、要求は、ウェブページにアクセスする要求を含むことができる。
クライアントデバイス125は、アプリケーション160を実行することができる。アプリケーション205は、たとえば、インターネットブラウザ、モバイルアプリケーション、または情報リソースに含まれるコンピュータ実行可能命令または情報リソースに含まれるコンテンツ要素などの、クライアントデバイス125によって処理されるコンピュータ実行可能命令を実行するか、または他の何らかの方法で呼び出すことができる他の任意のコンピュータプログラムを含むことができる。情報リソースおよびその中に含まれるコンテンツ要素は、スクリプト、論理、マークアップ、または命令(たとえば、ハイパーテキストマークアップ言語(HTML)、拡張可能ハイパーテキストマークアップ言語(XHTML)、拡張可能マークアップ言語(XML)、カスケーディングスタイルシート(CSS)、およびJavaScript(登録商標)、またはこれらの任意の組合せ)に対応するものとしてよい。アプリケーション205は、情報リソースおよびその中に含まれるコンテンツ要素を処理するために、ドキュメントツリージェネレータ、レンダリングツリージェネレータ、および表示モジュールなどの任意の数のコンポーネントを備えることができる。ドキュメントツリージェネレータは、情報リソースを構文解析して、階層様式で構成されている情報リソースのコンテンツ要素を含むドキュメントオブジェクトモデル(DOM)ツリーを生成することができる。DOMツリーを使用することで、レンダリングツリージェネレータは、情報リソースのコンテンツ要素の視覚的プロパティまたは属性を指定するレンダリングツリーを生成することができる。この表示モジュールは、レンダリングツリーに基づきクライアントデバイス125のディスプレイ上に情報リソースをレンダリングし、表示することができる。
プロキシデバイス145は、クライアントデバイス125とネットワーク105との間にデプロイされたコンピューティングデバイスを含むことができる。プロキシデバイス145は、ネットワーク105を介してデータ処理システム110、コンテンツプロバイダデバイス115、およびコンテンツパブリッシャデバイス125などの、1つまたは複数の他のコンピューティングデバイスと通信するように構成され得る。プロキシデバイス145は、たとえば、クライアントデバイス125からネットワーク105にもしくはネットワーク105からクライアントデバイス125にデータパケットを受信し、転送するように構成されている、ルータ、ネットワークスイッチ、ゲートウェイ、ネットワークノード、または他のコンピューティングデバイスであってよい。
リモートコンテンツリストリクタデバイス150は、ネットワーク105に接続されているコンピューティングデバイス上で実行するプレゼンテーションリストリクタ165を実現するためにコンテンツフィルタリングエンティティ(たとえば、スクリプトブロッカー、広告ブロッカー、インターネットサービスプロバイダ(ISP)、他のコンテンツプロバイダなど)によって動作させられるサーバまたは他のコンピューティングデバイスを含むことができる。いくつかの実装形態において、リモートコンテンツリストリクタ150は、プロキシデバイス145またはクライアントデバイス125にインストールし、実行するためのプレゼンテーションリストリクタ165を実現することができる。プレゼンテーションリストリクタ165は、プロキシデバイス145またはクライアントデバイス125において実行される別々のアプリケーションとしてまたはアプリケーションへの拡張としてインストールされ得る。プレゼンテーションリストリクタ165の機能は、リモートコンテンツリストリクタデバイス150、プロキシデバイス145、およびクライアントデバイス125において個別に、またはリモートコンテンツリストリクタデバイス150、プロキシデバイス145、およびクライアントデバイス125にまたがって連動して実行され得る。実行されたときに、プレゼンテーションリストリクタ165は、ネットワーク105を介してクライアントデバイス125に提供される情報リソースのコンテンツ要素を修正するか、または変更することができる。
クライアントデバイス125、プロキシデバイス145、およびリモートコンテンツリストリクタデバイス150は、プレゼンテーションリストリクタ165を実行することができる。プレゼンテーションリストリクタ165は、情報リソース上のコンテンツ要素を修正または変更するために任意の数のモジュール、コンポーネント、またはデータベースを備えることができる。プレゼンテーションリストリクタ165は、ネットワーク105を介してプレゼンテーションリストリクタ165を実行するデバイスのほかに他のコンピューティングデバイスと通信するように構成されている少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、またはプログラマブルロジックアレイなどの他の論理デバイスを備えることができる。プレゼンテーションリストリクタ165は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むか、または実行することができる。プレゼンテーションリストリクタ165は、1つまたは複数のスクリプトを実行するように構成されている1つまたは複数のプロセッサなどの、ソフトウェアとハードウェアとの組合せを備えることができる。いくつかの実装形態において、プレゼンテーションリストリクタ165は、拡張機能、アドオン、またはクライアントデバイス125上で実行するアプリケーション160上にインストールされている拡張機能であってよい。いくつかの実装形態において、プレゼンテーションリストリクタ165は、アプリケーション160とインターフェースする別個のスタンドアロンの実行ファイルであってもよい。
コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125、およびリモートコンテンツリストリクタデバイス150は、プロセッサおよびメモリ、すなわち処理回路を備えることができる。メモリは、プロセッサによって実行されたときに、プロセッサに本明細書において説明されているオペレーションのうちの1つまたは複数を実行させる機械語命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、など、またはこれらの組合せを含み得る。メモリは、限定はしないが、プロセッサにプログラム命令を提供することができる電子デバイス、光デバイス、磁気デバイス、または他の記憶または伝送デバイスを含み得る。メモリは、フロッピィディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラム可能ROM(EPROM)、フラッシュメモリ、光媒体、またはプロセッサが命令を読み出すことができる他の好適なメモリをさらに含み得る。命令は、好適なコンピュータプログラミング言語からのコードを含むものとしてよい。
コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125、およびリモートコンテンツリストリクタデバイス155は、1つまたは複数のユーザインターフェースデバイスも備え得る。一般に、ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイ上の視覚化、1つまたは複数の音声など)を生成することによりデータをユーザに伝達し、および/またはユーザから受信された感覚情報を電子信号に変換する電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)を指す。1つまたは複数のユーザインターフェースデバイスは、様々な実装形態により、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、およびクライアントデバイス125のハウジングの内部にある(たとえば、内蔵ディスプレイ、マイクロフォンなど)か、またはコンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125(たとえば、クライアントデバイス125に接続されているモニタ、クライアントデバイス125に接続されているスピーカーなど)、およびリモートコンテンツリストリクタデバイス155のハウジングの外部にあるものとしてよい。たとえば、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125、およびリモートコンテンツリストリクタデバイス155は、電子ディスプレイを備えるものとしてよく、これはネットワーク105を介して1つまたは複数のコンテンツソースから、および/またはデータ処理システム110から受信されたウェブページデータを使用してウェブページを視覚的に表示する。
データ処理システム110は、少なくとも1つのサーバを備え得る。たとえば、データ処理システム110は、少なくとも1つのデータセンターまたはサーバファーム内に配置されている複数のサーバを備え得る。いくつかの実装形態において、データ処理システム110は、コンテンツ配置システムを含む。データ処理システム110は、少なくとも1つのコンテンツ要求モジュール130、少なくとも1つのリソースアセンブラモジュール135、および少なくとも1つのデータベース140を備えることができる。コンテンツ要求モジュール130およびリソースアセンブラモジュール135は各々、ネットワーク105を介してデータベース140と、および他のコンピューティングデバイス(たとえば、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、またはクライアントデバイス125)と通信するように構成されている少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、またはプログラマブルロジックアレイなどの他の論理デバイスを含むことができる。
コンテンツ要求モジュール130、リソースアセンブラモジュール135、リソースアセンブラモジュール140は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むか、または実行することができる。コンテンツ要求モジュール130およびリソースアセンブラモジュール135は、別個のコンポーネント、単一のコンポーネント、またはデータ処理システム110の一部であってもよい。コンテンツ要求モジュール130およびリソースアセンブラモジュール135は、1つまたは複数のスクリプトを実行するように構成されている1つまたは複数のプロセッサなどの、ソフトウェアとハードウェアとの組合せを備えることができる。
データ処理システム110は、また、1つまたは複数のコンテンツリポジトリまたはデータベース140を備えることができる。データベース140は、データ処理システム110のローカルにあってもよい。いくつかの実装形態において、データベース140は、データ処理システム110のリモートにあってもよいが、ネットワーク105を介してデータ処理システム110と通信することができる。データベース140は、ほかにもあるがとりわけ、クライアントデバイス125にサービスを提供するために、情報リソースと情報リソースに含まれるコンテンツ要素とを含むことができる。データベース140に記憶されているデータの追加の詳細が以下に詳述される。
コンテンツ要求モジュール130は、クライアントデバイス125からコンテンツを求める要求を受信することができる。コンテンツを求める要求は、情報リソースを求める要求または情報リソースのコンテンツ要素を求める要求を含むことができる。コンテンツを求める要求は、クライアントデバイス125に対応するデバイス識別子を含み得る。コンテンツを求める要求は、クライアントデバイス125上で実行されるアプリケーションを識別するアプリケーションプロファイルを含むことができる。コンテンツを求める要求は、情報リソースまたはコンテンツ要素に対する識別子を含むことができる。たとえば、コンテンツを求める要求は、ウェブページ(たとえば、「https://www.example.com/ homepage.html」)などの、特定のリソースを参照するユニホームリソースロケータ(URL)を含むことができる。情報リソースに対するURLのホスト名は、コンテンツ要素に対するURLのホスト名と異なっていてもよい。たとえば、情報リソースに対するURLは、「https://www.example_publisher.com/index.html」であり得るが、コンテンツ要素に対するURLは「https://www.example_thirdparty.com/content_item_271828.html」であり得る。コンテンツ要素を求める要求に対するURLは、情報リソースに対するURLと同じであるホストページを含むことができる。たとえば、情報リソースに対するURLは、「https://www.example.com/index.html」であり得るが、コンテンツ要素に対するURLは「https://www.example.com/content_item_978.html」であり得る。コンテンツ要求モジュール130は、また、追加のデータに対するコンテンツを求める要求も構文解析することができる。
クライアントデバイス125からのコンテンツを求める要求の受信に応答して、リソースアセンブラモジュール135は、要求のアドレスまたは識別子に基づき情報リソースまたは情報リソースのコンテンツ要素を伝送することができる。リソースアセンブラモジュール135は、アドレスまたは識別子に基づきコンテンツを求める要求に含まれる情報リソースおよびコンテンツ要素を識別することができる。リソースアセンブラモジュール135は、データベース140にアクセスして、アドレスまたは識別子によって識別された情報リソースおよびコンテンツ要素を選択することができる。いくつかの実装形態において、リソースアセンブラモジュール135は、アドレスまたは識別子によって識別された情報リソースまたはコンテンツ要素にアクセスするか、取り出すか、または他の何らかの方法で受け取ることを求める要求をコンテンツプロバイダ115またはコンテンツパブリッシャ120に伝送することができる。
リソースアセンブラモジュール135は、コンテンツパブリッシャデバイス120またはコンテンツプロバイダデバイス115からのリダイレクトに基づき情報リソースに対するコンテンツ要素の情報リソースをクライアントデバイス125に伝送することができる。コンテンツパブリッシャデバイス125は、また、コンテンツパブリッシャデバイス125によって維持される情報リソースにアクセスすることを求める要求がデータ処理システム110に向けられるようにドメインまたはアドレスを構成することができる。コンテンツ要求モジュール130は、コンテンツパブリッシャデバイス125の情報リソースを取り出すか、またはアクセスすることを求める要求を受信することができる。いくつかの実装形態において、要求は、(たとえば、コンテンツ配置システムを使用して)要求を送ったクライアントデバイスの要求に関連するコンテンツを選択するためにリソースアセンブラモジュール135が使用することができるデバイス識別子または他の情報を含むことができる。リソースアセンブラモジュール135は、コンテンツプロバイダデバイス115またはコンテンツプロバイダデバイス115に代わってコンテンツ要素を維持する他のサーバもしくはデバイスにアクセスしてよい。
リソースアセンブラモジュール135は、1つまたは複数のコンテンツパブリッシャデバイス120およびコンテンツプロバイダデバイス115に代わってコンテンツをクライアントデバイス125に伝送することができる。リソースアセンブラモジュール135は、アドレスまたは識別子によって識別された情報リソースまたはコンテンツ要素をクライアントデバイス125に伝送または転送することができる。たとえば、データ処理システム110は、クライアントデバイス125から、情報リソースまたはコンテンツ要素を求める要求を受信することができる。要求は、コンテンツパブリッシャデバイス120のうちの1つおよびコンテンツプロバイダデバイス115のうちの1つを指すアドレスを含み得る。この例では、リソースアセンブラモジュール135は、情報リソースを求める要求をそれぞれのコンテンツパブリッシャ120に転送することができる。リソースアセンブラモジュール135は、また、情報リソース内に挿入するコンテンツ要素を求める要求をそれぞれのコンテンツプロバイダデバイス115に伝送することができる。それぞれのコンテンツパブリッシャ120から情報リソースを、それぞれのコンテンツプロバイダデバイス115からコンテンツ要素を受信した後、リソースアセンブラモジュール135は、コンテンツドキュメントを元の要求に関連付けられているクライアントデバイス125に転送することができる。
リソースアセンブラ135は、1つまたは複数のコンテンツ要素を含む情報リソースを生成することができる。いくつかの実施形態において、リソースアセンブラ135は、コンテンツプロバイダデバイス115によって提供されるコンテンツ要素を挿入するようにコンテンツパブリッシャデバイス125によって維持される既存の情報リソースを修正することができる。いくつかの実装形態において、リソースアセンブラ135は、コンテンツパブリッシャデバイス125およびコンテンツプロバイダデバイス115からのコンテンツ要素を含めるように新しい情報リソースを生成することができる。情報リソースのコンテンツ要素のサブセットは、コンテンツパブリッシャデバイス120からの一次コンテンツを含み得る。情報リソースのコンテンツ要素の別のサブセットは、コンテンツプロバイダデバイス115からのサードパーティコンテンツを含み得る。一次コンテンツおよびサードパーティコンテンツは、たとえば特に、テキストコンテンツ要素、画像コンテンツ要素、およびビデオコンテンツ要素を含むことができる。サードパーティは、クライアントデバイス125をリダイレクトする埋め込みリンクを備え、そのリンクのアドレスに対応するコンテンツプロバイダデバイス115またはコンテンツパブリッシャデバイス120からコンテンツを取り出すことができる。一次コンテンツの送信元アドレス(たとえば、URL)は、最初はサードパーティコンテンツの送信元アドレスと異なり得る。いくつかの実装形態において、リソースアセンブラ135は、一次コンテンツおよびサードパーティコンテンツに対するコンテンツ要素の送信元アドレスを同じ送信元アドレスとなるように修正することができる。いくつかの実装形態において、コンテンツパブリッシャデバイス120は、リソースアセンブラ135を実行するかまたはホストすることができる。
相前後して、リモートコンテンツリストリクタデバイス150、プロキシデバイス145、またはクライアントデバイス125において実行しているプレゼンテーションリストリクタ165は、情報リソースのコンテンツ要素を修正または変更することを試みることができる。プレゼンテーションリストリクタ165は、追加のコンテンツ要素を情報リソースに挿入して、識別されたコンテンツ要素をわかりにくくすることもできる。いくつかの実装形態において、プレゼンテーションリストリクタ165は、識別されたコンテンツ要素のプレゼンテーションが、元のプレゼンテーション形式と異なる形式でコンテンツ要素が提示されるように修正されることを引き起こし得る。次いで、データ処理システム110は、プレゼンテーションリストリクタ165に対する対抗手段をデプロイして、ネットワーク105上で伝送される情報リソースおよびコンテンツ要素の完全性を維持することができる。
B.情報リソース内に挿入されるコンテンツを制限するシステムおよび方法
情報リソースは、1つまたは複数のコンテンツ要素(たとえば、ほかにもあるがとりわけ、インラインフレーム、画像、およびセクション)を含むことができる。コンテンツ要素は、情報リソースの視覚的コンテンツ構成を定義することができる。たとえば、情報リソースは、一次コンテンツ(たとえば、本文テキスト)と画像を含むコンテンツ要素とを含むことができる。アプリケーション(たとえば、ウェブブラウザ)は、そのようなコンテンツ要素を使用して、情報リソースを処理し、レンダリングして、コンピューティングデバイスのディスプレイ上に表示することができる。これらのコンテンツ要素のうちのいくつかは、情報リソースを提供するサーバと異なるサーバを出所とするものとしてよい。そのようなものとして、そのようなコンテンツ要素を含む情報リソースは、セキュリティ上の脆弱性を抱え得る。たとえば、プロキシデバイスは、その情報リソースに元々向けられているコンテンツ要素をインターセプトして、インターセプトされた要素をそのプロキシデバイスが有するコンテンツ要素で置き換えることもあり得る。そのようなコンテンツ要素は、マルウェア、トロイの木馬、およびウイルスなどの、悪質なコードを含み得る。それに加えて、ヒューマンコンピュータインタラクション(HCI)から、これらのコンテンツ要素は、悪質なコードの注入がないとしても、ユーザが情報リソースの一次コンテンツを読んだり表示したりできることを妨げる可能性がある。たとえば、一方のコンテンツ要素が情報リソース上の残りのすべてのコンテンツ要素と異なる色を有し、それによって、ユーザの注意が一次コンテンツまたは他のコンテンツ要素から逸らされるという事態を引き起こし得る。
コンテンツ要素は、多数の技術を使用することで情報リソースに含めること、またはその上に表示することを無効化され得る。送信元アドレスを使用してコンテンツ要素が情報リソースの残り部分と異なる送信元からのものであることを識別する一技術もあり得る。しかしながら、この技術は、コンテンツ要素に対する送信元アドレスが情報リソースと同じである場合または情報リソース内に挿入するコンテンツ要素を求める別の要求がない場合にそのようなコンテンツ要素を識別することができないことがある。画像処理技術を使用してコンテンツ要素と下にある情報リソースとの間の差を検出することでコンテンツ要素を識別する別の技術もあり得る。しかしながら、そのような技術は、計算負荷が高く、その結果遅れが生じ、コンピュータのパフォーマンスを低下させることになり得る。
これらの技術的難題および他の技術的難題を解決するために、本明細書において提案されているシステムは、コンテンツ要素を識別し、無効化するためにハッシュ関数を活用することができる。画像処理アルゴリズムと比較すると、ハッシュ関数は、あまり複雑な計算を行わず、したがって、必要とする計算処理能力も低くてよい。プレゼンテーション制限スクリプトを実行するコンピューティングデバイスは、無効化すべき情報リソース上のコンテンツ要素を識別することができる。各コンテンツ要素について、クライアントデバイスは、対応するビットストリームを識別することができる。次いで、コンピューティングデバイスは、対応するビットストリームをハッシュ関数に対する入力パラメータとして使用してハッシュ値を計算し、要素識別子を生成することができる。
次いで、コンピューティングデバイスは、ローカルまたはサーバのいずれかで、計算された要素識別子を有する既知の制限されたコンテンツ要素のデータベースにアクセスし、要素識別子が見つかったかどうかに基づきコンテンツ制限ポリシーを適用することができる。要素識別子がデータベース内に見つかった場合、コンピューティングデバイスは、情報リソースからそれぞれのコンテンツ要素を取り除くことができる。その一方で、要素識別子が見つからなかった場合、クライアントデバイスは、画像処理アルゴリズムをコンテンツ要素に適用して、情報リソースからコンテンツ要素を取り除くべきかどうかを決定することができる。コンピューティングデバイスは、要素識別子をサーバに伝送して、要素識別子がサーバに記憶されている制限されたコンテンツ要素のデータベース上にあるかどうかを決定することもできる。受信された後、サーバは、画像処理アルゴリズムを実行してもよい。したがって、コンピューティングデバイスは、プロセッサおよびメモリに対する要求条件が比較的低い技術を使用してコンテンツ要素の初期解析を実行することができる。それに加えて、サーバは、すべてのコンテンツ要素に対してプロセッサ負荷が高い技術を使用することなく、コンテンツ要素の高精度の識別が行えるようにプロセッサ負荷が比較的高い技術を実行するか、またはクライアントデバイスにおいて実行されるべきプロセッサ負荷の高い技術を実行するために使用され得る。この技術により、コンテンツ要素を検出するために画像処理技術に頼ることは軽減され得る。さらに、ハッシュ関数を計算することは画像処理アルゴリズムに比べてあまり計算パワーを消費しないので、コンピューティングデバイスおよびサーバのプロセッサおよびメモリは、他の機能のために解放され得る。
図2を参照すると、図2は、情報リソース内に挿入されるコンテンツを制限するためのシステム200を示すブロック図である。システム200は、図1の文脈においてシステム100で説明されているようなアプリケーション160およびプレゼンテーションリストリクタ165の詳細な図であり得る。概略を述べると、システム200は、アプリケーション160と、プレゼンテーションリストリクタ165と、リモート制限コンテンツデータベース245とを備えることができる。アプリケーション160は、クライアントデバイス125上で実行されてよく、データ処理システム110またはコンテンツパブリッシャデバイス120から受信された情報リソース205を含むことができる。情報リソース205は、1つまたは複数のコンテンツ要素210A〜Nを含むことができる。プレゼンテーションリストリクタ165は、クライアントデバイス125、プロキシデバイス145、またはリモートコンテンツリストリクタデバイス150などの、コンピューティングデバイス上で、個別にまたは連動して実行され得る。プレゼンテーションリストリクタ165は、リソースパーサー215と、要素ハッシャー220と、コンピューティングデバイスと、レンダリングリストリクタ230と、コンテンツ制限ポリシーデータベース235と、ローカル制限コンテンツデータベース240とを備えることができる。プレゼンテーションリストリクタ165は、リモート制限コンテンツデータベース245と通信しているものとしてよい。
さらに詳しく言うと、リソースパーサー215は、コンテンツ要素210A〜Nのプレゼンテーションを修正するためのコンテンツ制限ポリシーを適用する情報リソース205に含まれるコンテンツ要素210A〜Nを識別することができる。コンテンツ制限ポリシーは、コンテンツ制限ポリシーデータベース235に記憶され、プレゼンテーションリストリクタ165によって維持され得る。コンテンツ制限ポリシーで、コンテンツ要素210A〜Nのどの要素タイプがさらに解析されるべきか、また制限されているとして識別されたコンテンツ要素210A〜Nをどのように修正するかを指定するものとしてよい。リソースパーサー215は、アプリケーション160とインターフェースして、情報リソース205および情報リソース205に含まれているコンテンツ要素210A〜Nにアクセスすることができる。
プレゼンテーションリストリクタ165によって適用されるコンテンツ制限ポリシーは、識別されたコンテンツ要素210A〜Nまたはそのようなコンテンツ要素210A〜Nを含む情報リソース205がどのように修正されるか、変更されるか、または無効化されるかを指定するものとしてよい。コンテンツ要素210A〜Nおよびコンテンツ要素210A〜Nを含む情報リソース205の修正に関する詳細は、本明細書の以下で説明される。コンテンツ制限ポリシーは、コンテンツプロバイダデバイス115またはコンテンツパブリッシャデバイス120の特定のドメインに特有のものであってよい。コンテンツ制限ポリシーは、特定のクライアントデバイス125に特有のものであってよい。コンテンツ制限ポリシーは、1つまたは複数のクライアントデバイス125に関連付けられている特定のアカウント識別子またはユーザプロファイルに特有のものであってよい。コンテンツ制限ポリシーは、1つまたは複数のクライアントデバイス125に関連付けられているユーザプロファイルの特性情報に特有のものであってよい。コンテンツ制限ポリシーは、クライアントデバイス125で実行される特定のアプリケーション160(たとえば、モバイルアプリケーション、いくつかのウェブブラウザなど)に特有のものであってよい。コンテンツ制限ポリシーは、クライアントデバイス125で実行されるアプリケーション160にインターフェースするプログラム(たとえば、プラグイン、アドオンなど)に特有のものであってよい。
コンテンツ制限ポリシーによれば、リソースパーサーは、さらなる解析のために情報リソース205に含まれるコンテンツ要素210A〜Nのサブセットを識別することができる。リソースパーサー215は、情報リソース205に含まれる各コンテンツ要素210A〜Nに対する要素タイプを識別することができる。要素タイプは、ほかにもあるがとりわけ、本文、段落、区分、セクション、インラインフレーム、画像、キャンバス、アプレット、スクリプト、オーディオ、ビデオ、テーブル、およびリストのうちの1つを含み得る。要素タイプは、HTMLタグ(たとえば、インラインフレームに対して「<iframe>」)に対応し得る。いくつかの実装形態において、コンテンツ制限ポリシーは、さらに解析されるべき要素タイプ(たとえば、インラインフレーム、画像、アプレットなど)を指定するものとしてよい。リソースパーサー215は、コンテンツ制限ポリシーで指定されているようにさらに解析されるべき要素タイプとマッチするコンテンツ要素210A〜Nのサブセットを識別することができる。この方式で、プレゼンテーションリストリクタ165は、処理されるべきコンテンツ要素210A〜Nの数を減らし、それによって、コンピューティングリソースを解放し得る。
コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定するために、リソースパーサー215は、情報リソース205に含まれるコンテンツ要素210A〜Nに対応するビットストリームを識別することができる。情報リソース205は、2進数列(たとえば、バイト配列またはバイトストリーム)に対応するものとしてよい。情報リソース205に含まれる各コンテンツ要素210A〜Nは、2進数列の一部に対応し得る。いくつかの実装形態において、リソースパーサー215は、アプリケーション160とインターフェースし、情報リソース205に対応する2進数列にアクセスすることができる。いくつかの実装形態において、リソースパーサー215は、アプリケーション160とインターフェースし、コンテンツ要素210A〜Nのうちの1つに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、リソースパーサー215は、アプリケーション160とインターフェースし、コンテンツ制限ポリシーによって指定されているようにさらに解析されるべき要素タイプとマッチするものとして識別されたコンテンツ要素210A〜Nのサブセットに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、リソースパーサー215は、コンテンツ要素210A〜Nのビットストリームのサブセット部分(たとえば、ビットストリーム内のビットの最初のN個またはビットストリーム内の5ビット毎)を識別することができる。
リソースパーサー215がコンテンツ要素210A〜Nに対するビットストリーム全体を識別している場合、要素ハッシャー220は、識別済みのビットストリームをハッシュ化してコンテンツ要素210A〜Nに対応する要素識別子を生成することができる。いくつかの実装形態において、要素ハッシャー220は、識別されたビットストリーム上でハッシュ関数を使用してコンテンツ要素210A〜Nに対応する要素識別子を生成することができる。ハッシュ関数は、ほかにもあるがとりわけ、暗号学的ハッシュ関数(たとえば、セキュアハッシュアルゴリズム(SHA-1、SHA-2、およびSHA-3)、メッセージダイジェストアルゴリズム(MD2、MD4、MD5、およびMD6)、チェックサム関数など)、巡回冗長検査アルゴリズム、ハッシュテーブル(たとえば、連想配列)、および幾何学的ハッシュ関数、または一対一ハッシュ関数などの、コンテンツ要素210A〜Nに対する識別されたビットストリームの任意の組合せを含み得る。ハッシュ関数は、ハッシュ衝突を最小にするように構成されるか、または選択されてよく、それにより、同じ要素識別子が2つの異なるコンテンツ要素210A〜Nを識別する可能性が低減される。いくつかの実装形態において、要素ハッシャー220は、コンテンツ要素210A〜Nのビットストリームのサブセット部分をハッシュすることができる。
いくつかの実装形態において、要素ハッシャー220によって使用されるハッシュ関数は、プレゼンテーションリストリクタ165のすべてのインスタンス化にわたって(たとえば、リモートコンテンツリストリクタ150、プロキシデバイス145、およびクライアントデバイス125にわたって)共通であってよい。同じコンテンツ要素210A〜Nについて、1つのコンピューティングデバイス(たとえば、リモートコンテンツリストリクタ150、プロキシデバイス145、またはクライアントデバイス125のうちの1つ)における要素ハッシャー220の1つのインスタンス化は、別のコンピューティングデバイスにおける要素ハッシャー220の別のインスタンス化と同じ要素識別子を生成することができる。この方式で、要素ハッシャー220は、プレゼンテーションリストリクタ165を実行する接続されているコンピューティングデバイス(たとえば、他のクライアントデバイス125、プロキシデバイス145、およびリモートコンテンツリストリクタデバイス150)にネットワーク105上で伝送される同じコンテンツ要素210A〜Nを識別するための単一の要素識別子を生成することができる。同じコンテンツ要素210A〜Nに対する単一の要素識別子を有することによって、プレゼンテーションリストリクタ165を実行するコンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定するために計算負荷がより高いアルゴリズム(たとえば、画像処理アルゴリズム)を実行することを回避し得る。
いくつかの実装形態において、要素ハッシャー220によって使用されるハッシュ関数は、プレゼンテーションリストリクタ165のローカルインスタンス化に(たとえば、クライアントデバイス125において)固有のものであってよい。同じコンテンツ要素210A〜Nについて、1つのコンピューティングデバイス(たとえば、リモートコンテンツリストリクタ150、プロキシデバイス145、またはクライアントデバイス125のうちの1つ)における要素ハッシャー220の1つのインスタンス化は、別のコンピューティングデバイスで実行される要素ハッシャー220の別のインスタンス化によって生成される要素識別子と異なる要素識別子を生成することができる。要素ハッシャー220は、プレゼンテーションリストリクタ165のローカルインスタンス化に固有の要素識別子を生成することができる。プレゼンテーションリストリクタ165のローカルインスタンス化に固有のハッシュ関数を使用することによって、要素ハッシャー220は、データセキュリティおよび暗号化、さらにはユーザプライバシーを強化することができる。
いくつかの実装形態において、要素ハッシャー220によって使用されるハッシュ関数は、情報リソース205またはコンテンツ要素210A〜Nに対応する2進数列の暗号化アルゴリズムを考慮したものとすることができる。クライアントデバイス125、プロキシデバイス145、または任意の媒介デバイスは、暗号化アルゴリズムを情報リソース205またはコンテンツ要素210A〜Nに対応する2進数列に適用し、それによって2進数列を変えることができる。いくつかの実装形態において、2進数列に適用される暗号化アルゴリズムは、ほかにも暗号プロトコルはあるがとりわけ、Wired Equivalent Privacy(WEP)およびWi-Fi Protected Access(WPA)を含むものとしてよい。暗号化アルゴリズムにより、一方のコンピューティングデバイスで実行される要素ハッシャー220は、他方のコンピューティングデバイスで実行される要素ハッシャー220によって生成される要素識別子と異なる要素識別子を生成することができる。2進数列に適用される暗号化アルゴリズムの効果をバイパスするか、または無効にするために、要素ハッシャー220は、一対一ハッシュ関数を使用して各識別されたビットストリームに対する要素識別子を生成することができる。この方式で、要素ハッシャー220によって生成される要素識別子は、プレゼンテーションリストリクタ165のローカルインスタンス化に固有のものであり得るけれども、クライアントデバイス125、プロキシデバイス145、または他の媒介デバイスによって暗号化アルゴリズムが適用された結果、一意的な値が得られるものとしてよい。そのようなものとして、プレゼンテーションリストリクタ165の一方のインスタンス化において要素ハッシャー220によって生成される要素識別子は、他のデバイスにおけるプレゼンテーションリストリクタ165の他方のインスタンス化にわたって使用され得る。
要素ハッシャー220によって生成される要素識別子を使用することで、コンテンツリストリクタ225は、ローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245にアクセスして、コンテンツ制限ポリシーをコンテンツ要素210A〜Nに適用すべきかどうかを決定することができる。ローカル制限コンテンツデータベース240は、クライアントデバイス125またはプロキシデバイス145などの、要素ハッシャー220を実行するコンピューティングデバイスのローカルにあるプレゼンテーションリストリクタ165のインスタンス化によって維持され得る。ローカル制限コンテンツデータベース240は、ほかにもあるがとりわけ、要素識別子と対応する要素識別子が制限されるべきか許可されるべきかを指定する許可インジケータとを記憶するためのデータ構造体(たとえば、配列、ヒープ、リンクリスト、2分木、行列、テーブルなど)を含むことができる。いくつかの実装形態において、ローカル制限コンテンツデータベース240は、許可されるべき要素識別子の第1のリスト(たとえば、ホワイトリスト)と、制限されるべき要素識別子の第2のリスト(たとえば、ブラックリスト)とを含み得る。リモート制限コンテンツデータベース245は、別のコンピューティングデバイスによって維持され得る。いくつかの実装形態において、リモート制限コンテンツデータベース245は、要素ハッシャー220を実行するコンピューティングデバイスと異なるプレゼンテーションリストリクタ165のインスタンス化によって維持され得る。いくつかの実装形態において、ローカル制限コンテンツデータベース240は、プロキシデバイス145またはリモートコンテンツリストリクタデバイス150として記憶され維持され得る。リモート制限コンテンツデータベース245は、要素識別子と対応する要素識別子が制限されるべきか許可されるべきかを指定する許可インジケータとを記憶するためのデータ構造体(たとえば、配列、ヒープ、リンクリスト、2分木、行列、テーブルなど)を含むことができる。いくつかの実装形態において、リモート制限コンテンツデータベース245は、許可されるべき要素識別子の第1のリストと、制限されるべき要素識別子の第2のリストとを含み得る。いくつかの実装形態において、プレゼンテーションリストリクタ
165のローカルインスタンス化は、ローカル制限コンテンツデータベース245(たとえば、ブラックリスト)を維持し、制限されるように指定され識別されている要素を記憶することができる。いくつかの実装形態において、プレゼンテーションリストリクタ165のローカルインスタンス化は、別個のローカル非制限コンテンツデータベース(たとえば、ホワイトリスト)を維持し、許可されるように指定されている要素識別子を記憶することができる。いくつかの実装形態において、プレゼンテーションリストリクタ165のリモートインスタンス化は、リモート制限コンテンツデータベース245(たとえば、ブラックリスト)を維持し、制限されるように指定され識別されている要素を記憶することができる。いくつかの実装形態において、プレゼンテーションリストリクタ165のリモートインスタンス化は、別個のリモート非制限コンテンツデータベース(たとえば、ホワイトリスト)を維持し、許可されるように指定されている要素識別子を記憶することができる。
コンテンツリストリクタ225は、最初に、ローカル制限コンテンツデータベース240にアクセスすることができる。コンテンツリストリクタ225は、ローカル制限コンテンツデータベース240において要素識別子の検索を実行することができる。いくつかの実装形態において、コンテンツリストリクタ225は、ローカル制限コンテンツデータベース240をトラバースして、要素識別子を見つけることができる。いくつかの実装形態において、コンテンツリストリクタ225は、ローカル制限コンテンツデータベース240に記憶されているデータ構造体に対するインデックスとして要素識別子を使用することができる。
コンテンツリストリクタ225がローカル制限コンテンツデータベース240において要素識別子を見つけた場合、コンテンツリストリクタ225は、要素識別子に対する許可インジケータを識別することができる。コンテンツリストリクタ225は、許可インジケータを使用して、コンテンツ制限ポリシーを要素識別子に対応するコンテンツ要素210A〜Nに適用すべきかどうかを決定することができる。
その一方で、コンテンツリストリクタ225がローカル制限コンテンツデータベース240において要素識別子を見つけない場合、コンテンツリストリクタ225は、要素識別子を見つける要求をリモート制限コンテンツデータベース245に伝送することができる。要素識別子を見つける要求は、ほかにもデータはあるがとりわけ、要素ハッシャー220によって生成される要素識別子を含むものとしてよい。リモート制限コンテンツデータベース245は、プレゼンテーションリストリクタ165のローカルインスタンス化からリモートにあるデバイスとともに維持されるか、またはそれに関連付けられ得る。いくつかの実装形態において、クライアントデバイス125上で実行するコンテンツリストリクタ225は、その要求をプロキシデバイス145またはリモート制限コンテンツデータベース245を維持するリモートコンテンツリストリクタデバイス150に伝送することができる。
コンピューティングデバイスから要求を受信したことに応答して、リモートデバイス(たとえば、プロキシデバイス145またはリモートコンテンツリストリクタデバイス150)は、要求の中の要素識別子を使用してリモート制限コンテンツデータベース245にアクセスすることができる。リモートデバイスは、リモート制限コンテンツデータベース245において要素識別子の検索を実行することができる。いくつかの実装形態において、リモートデバイスは、リモート制限コンテンツデータベース245をトラバースして、要素識別子を見つけることができる。いくつかの実装形態において、リモートデバイスは、リモート制限コンテンツデータベース245に記憶されているデータ構造体に対するインデックスとして要素識別子を使用することができる。
リモートデバイスがリモート制限コンテンツデータベース245において要素識別子を見つけた場合、リモートデバイスは、要素識別子に対する許可インジケータを識別することができる。要素識別子を見つけたことに応答して、リモートデバイスは、肯定応答をコンテンツリストリクタ225に伝送することもできる。肯定応答は、要素識別子がリモート制限コンテンツデータベース245上にあることを示し得る。肯定応答は、リモート制限コンテンツデータベース245において指定されているような許可インジケータも含み得る。コンテンツリストリクタ225は、リモート制限コンテンツデータベース245に関連付けられているリモートデバイスから肯定応答を受信することができる。コンテンツリストリクタ225は、要素識別子と、リモートデバイスから受信された許可インジケータをローカル制限コンテンツデータベース240に記憶することができる。許可インジケータに基づき、コンテンツリストリクタ225は、コンテンツ制限ポリシーを許可インジケータに対応するコンテンツ要素210A〜Nに適用すべきかどうかを決定することができる。
リモートデバイスがリモート制限コンテンツデータベース245において要素識別子を見つけない場合、リモートデバイスは、否定応答をコンテンツリストリクタ225に伝送することもできる。否定応答は、要素識別子がリモート制限コンテンツデータベース245上にないことを示し得る。コンテンツリストリクタ225は、リモート制限コンテンツデータベース245に関連付けられているリモートデバイスから否定応答を受信することができる。リモートデバイスからの否定応答の受信に応答して、コンテンツリストリクタ225は、レンダリングリストリクタ230を呼び出して、レンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。
それに加えて、リモートデバイスがリモート制限コンテンツデータベース245内に要素識別子を見つけなかった場合、リモートデバイスは、コンテンツ要素210A〜Nがコンテンツ要素210A〜Nおよび情報リソース205のレンダリングプロパティに基づきレンダリングベースの制限拡張に従って修正されるべきかどうかを決定することができる。コンテンツ要素210A〜Nがレンダリングベースの制限拡張に従って修正されるべきかどうかを決定することは、リモートデバイスにおけるレンダリングリストリクタ230のインスタンス化によって実行され得る。リモートデバイスは、アプリケーション160によって受信されたコンテンツ要素210A〜Nおよび情報リソース205のレンダリングプロパティにアクセスすることができる。いくつかの実装形態において、リモートデバイスは、レンダリングプロパティを求める要求をアプリケーション160を実行しているデバイスに伝送することができる。リモートデバイスは、その後、デバイスから情報リソース205のコンテンツ要素210A〜Nのレンダリングプロパティを受信することができる。
レンダリングベースの制限拡張に従ってコンテンツ要素210A〜Nのレンダリングプロパティおよび情報リソース205のレンダリングプロパティを解析することによって、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。レンダリングベースの制限拡張では、コンテンツ制限ポリシーが特定のレンダリングプロパティを有するコンテンツ要素210A〜Nに適用されるべきであると指定し得る。一般に、レンダリングベースの制限拡張に従ってコンテンツ要素210A〜Nのレンダリングプロパティおよび情報リソース205のレンダリングプロパティを解析することは、ハッシュ関数に比べて計算の複雑度が高くなることがある。そのようなものとして、レンダリングベースの制限拡張は、ハッシュ関数に比べてコンピュータリソースをより多く消費し、より処理時間もかかり、リモートデバイスのパフォーマンスの低下および時間遅延が生じ得る。コンピュータリソースの消費を部分的に軽減し、処理時間をある程度短縮するために、ハッシュ関数と、レンダリングプロパティの解析結果を使用して要素識別子を生成することは、複数のデバイスとプレゼンテーションリストリクタ165のインスタンス化との間に分岐されるか、または他の何らかの方法で割り振られるものとしてよい。
レンダリングベースの制限拡張により、リモートデバイスは、コンテンツ要素210A〜Nのレンダリングプロパティを、指定されたレンダリングプロパティと比較して、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。いくつかの実装形態において、リモートデバイスは、情報リソース205上のコンテンツ要素210A〜Nの寸法を、予め指定されている寸法(たとえば、468×60ピクセル(フルバナー)、160×600ピクセル(ワイドスカイスクレイパーバナー)、および720×300ピクセル(ポップアンダー))と比較することができる。リモートデバイスがコンテンツ要素210A〜Nの寸法と予め指定されている位置との間にマッチがあると決定した場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。いくつかの実装形態において、リモートデバイスは、情報リソース205上のコンテンツ要素210A〜Nの位置を、予め指定されている位置(たとえば、情報リソース205の上の方へ、またはサイドに沿って)と比較することができる。リモートデバイスがコンテンツ要素210A〜Nの位置と指定されている位置との間にマッチがあると決定した場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。いくつかの実装形態において、リモートデバイスは、コンテンツ要素210A〜Nの色値(たとえば、RGB値、英数字識別子、またはHTMLカラーコード)と、情報リソース205の色値とを識別することができる。コンテンツ要素210A〜Nの色値および情報リソース205の色値が事前定義されたマージンだけ異なる場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。これらがどれもマッチしない場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきでないと決定することができる。
リモートデバイスは、また、任意の数の画像認識アルゴリズムおよび画像認識アルゴリズムの組合せを適用し、レンダリングベースの制限拡張に従ってレンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することもできる。コンテンツ要素210A〜Nは、画像を含み得るか、または画像に対する送信元アドレスを含み得る。コンテンツ要素210A〜Nは、ビデオを含み得るか、またはビデオに対する送信元アドレスを含み得る。いくつかの実装形態において、リモートデバイスは画像認識アルゴリズムを適用し、コンテンツ要素210A〜Nの画像またはビデオが制限された視覚要素(たとえば、裸体、暴力、ドラッグ、および画像またはビデオ中の他の望ましくない要素)を含んでいるかどうかを決定することができる。画像認識アルゴリズムは、ほかにもあるがとりわけ、光学式文字認識、物体認識、エッジ検出、特徴検出(たとえば、アフィン特徴検出)、およびパターン認識アルゴリズムを含み得る。いくつかの実装形態において、リモートデバイスは、光学式文字認識アルゴリズムを使用してコンテンツ要素210A〜Nの画像から文字列を識別することができる。リモートデバイスは、識別された文字列を、予め指定されている文字列(たとえば、「click here」、「purchase」、「sale」、「XXX」、「$」など)と比較することができる。識別された文字列が予め指定されている文字列とマッチした場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。そうでない場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきでないと決定することができる。
レンダリングプロパティの解析結果に基づきコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することと併せて、リモートデバイスは、コンテンツ要素210A〜Nに対応する要素識別子をリモート制限コンテンツデータベース245に追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきとリモートデバイスが決定した場合、リモートデバイスは、要素識別子に対応するコンテンツ要素210A〜Nが制限されるべきであると指定する許可インジケータを追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきでないとリモートデバイスが決定した場合、リモートデバイスは、要素識別子に対応するコンテンツ要素210A〜Nがリモート制限コンテンツデータベース245に入れられることを許可されるべきであると指定する許可インジケータを追加するか、または挿入することができる。その後、リモートデバイスは、肯定応答をコンテンツリストリクタ225に伝送することができる。肯定応答は、要素識別子がリモート制限コンテンツデータベース245上にあることを示し得る。肯定応答は、リモート制限コンテンツデータベース245から取り出された許可インジケータも含み得る。
いくつかの実装形態において、コンテンツリストリクタ225がローカル制限コンテンツデータベース240において要素識別子を見つけなかった場合、コンテンツリストリクタ225は、レンダリングリストリクタ230を呼び出すことができる。呼び出されると、レンダリングリストリクタ230は、コンテンツ要素210A〜Nを解析して、レンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。コンテンツリストリクタ225は、また、レンダリングリストリクタ230を呼び出して、リモート制限コンテンツデータベース245に関連付けられているリモートデバイスからの要素識別子に対する否定応答の受信に応答してコンテンツ要素210A〜Nを解析することもできる。
レンダリングベースの制限拡張に従ってコンテンツ要素210A〜Nのレンダリングプロパティおよび情報リソース205のレンダリングプロパティを解析することによって、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。レンダリングベースの制限拡張では、コンテンツ制限ポリシーが特定のレンダリングプロパティを有するコンテンツ要素210A〜Nに適用されるべきであると指定し得る。
レンダリングベースの制限拡張により、レンダリングリストリクタ230は、コンテンツ要素210A〜Nのレンダリングプロパティを、指定されたレンダリングプロパティと比較して、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。いくつかの実装形態において、レンダリングリストリクタ230は、情報リソース205上のコンテンツ要素210A〜Nの寸法を、予め指定されている寸法(たとえば、468×60ピクセル(フルバナー)、160×600ピクセル(ワイドスカイスクレイパーバナー)、および720×300ピクセル(ポップアンダー))と比較することができる。レンダリングリストリクタ230がコンテンツ要素210A〜Nの寸法と予め指定されている位置との間にマッチがあると決定した場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。いくつかの実装形態において、レンダリングリストリクタ230は、情報リソース205上のコンテンツ要素210A〜Nの位置を、予め指定されている位置(たとえば、情報リソース205の上の方へ、またはサイドに沿って)と比較することができる。レンダリングリストリクタ230がコンテンツ要素210A〜Nの位置と指定されている位置との間にマッチがあると決定した場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。いくつかの実装形態において、レンダリングリストリクタ230は、コンテンツ要素210A〜Nの色値(たとえば、RGB値、英数字識別子、またはHTMLカラーコード)と、情報リソース205の色値とを識別することができる。コンテンツ要素210A〜Nの色値および情報リソース205の色値が事前定義されたマージンだけ異なる場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。これらがどれもマッチしない場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきでないと決定することができる。
レンダリングリストリクタ230は、また、任意の数の画像認識アルゴリズムおよび画像認識アルゴリズムの組合せを適用し、レンダリングベースの制限拡張に従ってレンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することもできる。コンテンツ要素210A〜Nは、画像を含み得るか、または画像に対する送信元アドレスを含み得る。コンテンツ要素210A〜Nは、画像を含み得るか、または画像に対する送信元アドレスを含み得る。いくつかの実装形態において、レンダリングリストリクタ230は画像認識アルゴリズムを適用し、コンテンツ要素210A〜Nの画像またはビデオが制限された視覚要素(たとえば、裸体、暴力、ドラッグ、および画像またはビデオ中の他の望ましくない要素)を含んでいるかどうかを決定することができる。画像認識アルゴリズムは、ほかにもあるがとりわけ、光学式文字認識、物体認識、エッジ検出、特徴検出(たとえば、アフィン特徴検出)、およびパターン認識アルゴリズムを含み得る。いくつかの実装形態において、レンダリングリストリクタ230は、光学式文字認識アルゴリズムを使用してコンテンツ要素210A〜Nの画像から文字列を識別することができる。レンダリングリストリクタ230は、識別された文字列を、予め指定されている文字列(たとえば、「click here」、「purchase」、「sale」、「XXX」、「$」など)と比較することができる。識別された文字列が予め指定されている文字列とマッチした場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定することができる。そうでない場合、レンダリングリストリクタ230は、コンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきでないと決定することができる。
レンダリングプロパティの解析結果に基づきコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することと併せて、レンダリングリストリクタ230は、コンテンツ要素210A〜Nに対応する要素識別子をローカル制限コンテンツデータベース240に追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきとレンダリングリストリクタ230が決定した場合、レンダリングリストリクタ230は、要素識別子に対応するコンテンツ要素210A〜Nが制限されるべきであると指定する許可インジケータを追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきでないとレンダリングリストリクタ230が決定した場合、レンダリングリストリクタ230は、要素識別子に対応するコンテンツ要素210A〜Nが許可されるべきであると指定する許可インジケータを追加するか、または挿入することができる。レンダリングリストリクタ230またはコンテンツリストリクタ225は、要素識別子および許可インジケータをネットワークに接続されている他のコンピューティングデバイス(たとえば、他のクライアントデバイス125、プロキシデバイス145、およびリモートコンテンツリストリクタデバイス150)に伝送することができる。いくつかの実装形態において、レンダリングリストリクタ230またはコンテンツリストリクタ225は、要素識別子および許可インジケータを、第2のクライアントデバイス125によって維持されるローカル制限コンテンツデータベースに記憶するためにネットワーク105を介して第2のクライアントデバイス125に伝送することができる。いくつかの実装形態において、レンダリングリストリクタ230またはコンテンツリストリクタ225は、要素識別子および許可インジケータを、プロキシデバイス145によって維持される制限コンテンツデータベースに記憶するためにプロキシデバイス145に伝送することができる。いくつかの実装形態において、レンダリングリストリクタ230またはコンテンツリストリクタ225は、要素識別子および許可インジケータを、リモート制限コンテンツデータベース250に記憶するためにリモートコンテンツリストリクタデバイス150に伝送することができる。ネットワーク105に接続されているコンピュー
ティングデバイスにまたがって要素識別子を共有することによって、プレゼンテーションリストリクタ165を実行するコンピューティングデバイスは、同じコンテンツ要素210A〜N上で計算の複雑度が高い画像処理技術を繰り返し適用することを回避し得る。したがって、要素識別子を共有することは、プレゼンテーションリストリクタ165を実行するコンピューティングデバイスに対する効率を高め、他の機能のための処理リソースを解放し得る。
要素識別子がローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245のいずれかの中に見つからない場合、コンテンツリストリクタ225は、アプリケーション160による情報リソース205におけるコンテンツ要素210A〜Nの第1の組み入れの際に、コンテンツ要素210A〜Nを維持することができる。コンテンツ要素210A〜Nの第1の組み入れは、ネットワーク105に接続されているプレゼンテーションリストリクタ165を実行するデバイスへのコンテンツ要素210A〜Nの最初の提供(first provision)に対応し得る。いくつかの実装形態において、コンテンツリストリクタ225は、情報リソース205の第1の組み入れの際に、コンテンツ要素210A〜Nのプロパティを既定値に設定するか、または維持することができる。情報リソース205におけるコンテンツ要素210A〜Nの第1の組み入れの後、コンテンツリストリクタ225は、レンダリングリストリクタ230を呼び出すことができる。呼び出されると、レンダリングリストリクタ230は、コンテンツ要素210A〜Nを解析して、本明細書において説明されている機能を使用するレンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきかどうかを決定することができる。レンダリングリストリクタ230が、レンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素210A〜Nに適用されるべきであると決定した場合、コンテンツリストリクタ225は、情報リソース上でその後コンテンツ要素210A〜Nを入れる際にコンテンツ要素210A〜Nを修正することができる。この方式で、コンテンツ要素210A〜Nは、最初の提供の際にアプリケーション160を実行するコンテンツリストリクタ225において情報リソース205上で提示され、レンダリングされ得る。コンテンツ要素210A〜Nおよび情報リソース205のレンダリングプロパティの解析結果に基づき、コンテンツ要素210A〜Nは、アプリケーション160を実行するコンテンツリストリクタ225sへのコンテンツ要素210A〜Nのその後の修正および提供において修正され得る。
ローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245のいずれかの中における要素識別子を検出したことに応答して、コンテンツリストリクタ225は、コンテンツ制限ポリシーに従って情報リソース205上のコンテンツ要素210A〜Nのプレゼンテーションを修正することができる。コンテンツ制限ポリシーデータベース235に維持されているコンテンツ制限ポリシーで、コンテンツ要素210A〜Nのプレゼンテーションを修正するために任意の数のアクションまたはアクションの組合せを実行するようにコンテンツリストリクタ225を指定するものとしてよい。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素210A〜Nを無効化することができる。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ制限ポリシーによって指定されているように情報リソース205からコンテンツ要素210A〜Nを削除するか、または取り除くことができる。いくつかの実装形態において、コンテンツリストリクタ225は、情報リソース205に対するマークアップにおいてコンテンツ要素210A〜Nに対応するコードセグメントを識別することができる。コンテンツリストリクタ225は、コンテンツ要素210A〜Nに対応するコードセグメントを削除するか、取り除くか、または他の何らかの形で無効にすることができる。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素210A〜Nの表示/非表示プロパティをオンからオフに設定することができる。コンテンツ要素210A〜Nの表示/非表示プロパティをオンからオフに設定することで、アプリケーション160が情報リソース205上にコンテンツ要素210A〜Nをレンダリングすること、表示すること、または他の何らかの方法で提示することを行わないようにし得る。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素210A〜Nからリダイレクションリンクを取り除くことができる。リダイレクションリンクの相互作用または活性化は、アプリケーション160を実行するコンテンツリストリクタ22
5が追加のコンテンツを取り出すことを引き起こし得る。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ要素210A〜Nに対応するコードセグメントに基づきコンテンツ要素210A〜Nがリダイレクションリンクを含むかどうかを決定することができる。
コンテンツリストリクタ225は、ローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245上での要素識別子の識別に応答してコンテンツ制限ポリシーによって指定されているように情報リソース205上のコンテンツ要素210A〜Nに関連付けられているデータの伝送および受信を修正することもできる。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ要素210A〜Nに関連付けられているアプリケーション160を実行するコンピューティングデバイスからデータパケットの伝送を変更することができる。コンテンツ要素210A〜Nは、確認応答をログサーバに伝送するようにアプリケーション160を実行するコンピューティングデバイスを指定するコードセグメントを含み得る。確認応答は、アプリケーション160を実行するコンピューティングデバイスにおいてコンテンツ要素210A〜Nの受信または提示の確認を表し得る。コンテンツリストリクタ225は、確認応答の伝送に対するコードセグメントを識別することができる。いくつかの実装形態において、コンテンツリストリクタ225は、確認応答の伝送を無効化するために識別されたコードセグメントを修正するか、取り除くか、または削除することができる。いくつかの実装形態において、コンテンツリストリクタ225は、また、確認応答の伝送を許可し、その後、確認応答の伝送を無効化するために識別されたコードセグメントを修正するか、取り除くか、または削除することができる。いくつかの実装形態において、コンテンツリストリクタ225は、コンテンツ要素210A〜Nに関連付けられている別のコンピューティングデバイス(たとえば、データ処理システム110、コンテンツプロバイダデバイス115、およびコンテンツパブリッシャデバイス120)からのデータパケットの受信を変更することができる。いくつかの実装形態において、コンテンツリストリクタ225はデータパケット(たとえば、ビデオをストリーミングするためのフラグメントチャンク)を受信することができる。次いで、コンテンツリストリクタ225は、アプリケーション160による処理からデータパケットを取り除くことができる。
要素識別子がコンテンツリストリクタ225によってローカル制限コンテンツデータベース240において、またはリモートデバイスによってリモート制限コンテンツデータベース245において識別された場合、コンテンツリストリクタ225は、情報リソース205上に追加のコンテンツ要素210A〜Nを加えて、コンテンツ要素210A〜Nのプレゼンテーションを修正することができる。コンテンツリストリクタ225は、コンテンツ要素210A〜Nの位置および寸法を識別することができる。コンテンツリストリクタ225は、コンテンツ要素210A〜Nを含む情報リソース205の視覚的特性(たとえば、色値)を識別することができる。次いで、コンテンツリストリクタ225は、コンテンツ要素210A〜Nを塞ぐためにコンテンツ要素210A〜Nの識別された位置および寸法ならびに情報リソース205の視覚的特性を有する追加のコンテンツ要素を生成することができる。
次に図3を参照すると、図3は、例示的な一実装形態による、コンテンツを制限するためのシステム200によって許可されるかまたは制限される情報リソース205のコンテンツ要素210A〜Nのフロープロセス300を示すブロック図である。図3に対するフロープロセス300で示されているように、情報リソース205は、第1のコンテンツ要素210A、第2のコンテンツ要素210B、および第3のコンテンツ要素210Cを含み得る。情報リソース205、およびコンテンツ要素210A〜Cの各々は、2進数列またはビットストリーム(16進形式で表される)に対応するものとしてよい。第1のコンテンツ要素210Aは、第1のビットストリーム305A(たとえば、「xA831」)に対応するものとしてよい。第2のコンテンツ要素210Bは、第2のビットストリーム305B(たとえば、「xFC0A」)に対応するものとしてよい。第3のコンテンツ要素210Cは、第3のビットストリーム305C(たとえば、「x4C9D」)に対応するものとしてよい。
図2の文脈では、要素ハッシャー220は、ハッシュ関数310を使用し、ビットストリーム305A〜Nを使用してコンテンツ要素210A〜Cのうちの1つに対応する要素識別子315A〜C(16進形式でも表される)を生成することができる。ビットストリーム305A〜Nは、リソースパーサー215によって識別され、取得されているものとしてよい。図3のフロープロセス300において示されているように、要素ハッシャー220は、第1のビットストリーム305Aに対する第1のコンテンツ要素210Aについて要素識別子315A(「xC1A9」)を生成することができる。要素ハッシャー220は、第2のビットストリーム305Bに対する第2のコンテンツ要素210Bについて第2の要素識別子315B(「x8BF2」)を生成することができる。要素ハッシャー220は、第3のビットストリーム305Cに対する第3のコンテンツ要素210Cについて第3の要素識別子315C(「x3C70」)を生成することができる。
なおも図2の文脈で図3を参照すると、コンテンツリストリクタ225は、要素識別子315A〜Cを使用して、コンテンツ制限ポリシーがコンテンツ要素210A〜Cのどれかに適用されるべきかどうかを決定することができる。そのために、コンテンツリストリクタ225は、要素識別子315A〜Cに対して、ローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245などの、制限コンテンツデータベースを検索することができる。制限コンテンツデータベースは、許可インジケータによって要素識別子を配置するために、制限コンテンツテーブル315などの、データ構造体を含み得る。制限コンテンツデータベースに記憶されている制限コンテンツテーブル325上で、コンテンツリストリクタ225は、第1の要素識別子315A、第2の要素識別子315B、および第3の要素識別子315Cを識別することができる。第1の要素識別子315Aについて、コンテンツリストリクタ225は、許可インジケータが対応する第1のコンテンツ要素205Aが制限されるべきであると指定していることを検証することができる。それと対照的に、第2の要素識別子315Bおよび第3の要素識別子315Cについて、許可インジケータは、第2のコンテンツ要素205Bおよび第3のコンテンツ要素205Cが両方とも許可されるべきであると指定する。
制限コンテンツデータベースにおいて第1のコンテンツ要素205Aに対応する第1の要素識別子315Aが見つかると、コンテンツリストリクタ225は、コンテンツ制限ポリシーを第1のコンテンツ要素205Aに適用することができる。図3に示されているように、コンテンツリストリクタ225は、情報リソース205から第1のコンテンツ要素210Aを削除することができる。コンテンツリストリクタ225は、第2のコンテンツ要素210Bおよび第3のコンテンツ要素210Cを同時に維持することもできる。
次に図4を参照すると、図4は、例示的な一実装形態による、情報リソース内に挿入されるコンテンツを制限する方法400を示す流れ図である。方法400に関して本明細書において説明されている機能は、クライアントデバイス125、プロキシデバイス145、または図1に示されているようなリモートコンテンツリストリクタデバイス150、図2に示されているようなシステム200、または図10に示されているようなコンピューティングデバイス、またはこれらの任意の組合せによって実行されるか、または他の何らかの形で実行されてよい。手短に概要を述べると、1つまたは複数のプロセッサを有するコンピューティングデバイスは、コンテンツ要素のプレゼンテーションを修正するためのコンテンツ制限ポリシーを適用する情報リソースに含まれるコンテンツ要素を識別することができる(ブロック405)。コンピューティングデバイスは、情報リソースに含まれるコンテンツ要素に対応するビットストリームを識別することができる(ブロック410)。コンピューティングデバイスは、識別されたビットストリームをハッシュ化してコンテンツ要素に対応する要素識別子を生成することができる(ブロック415)。コンピューティングデバイスは、この要素識別子を使用して制限コンテンツデータベースにアクセスすることができる(ブロック420)。コンピューティングデバイスは、制限コンテンツデータベース内で要素識別子を検出したことに応答して、コンテンツ制限ポリシーに従って情報リソース上のコンテンツ要素のプレゼンテーションを修正することができる(ブロック425)。
さらに詳しく述べると、1つまたは複数のプロセッサを有するコンピューティングデバイスは、コンテンツ要素のプレゼンテーションを修正するためのコンテンツ制限ポリシーを適用する情報リソースに含まれるコンテンツ要素を識別することができる(ブロック405)。コンピューティングデバイスは、コンテンツ要素のプレゼンテーションを修正するためのコンテンツ制限ポリシーを適用する情報リソースに含まれるコンテンツ要素を識別することができる。コンテンツ制限ポリシーは、コンテンツ制限ポリシーデータベースに記憶され、プレゼンテーションリストリクタによって維持され得る。コンテンツ制限ポリシーで、コンテンツ要素のどの要素タイプがさらに解析されるべきか、また制限されているとして識別されたコンテンツ要素をどのように修正するかを指定するものとしてよい。コンピューティングデバイスは、アプリケーションとインターフェースして、情報リソースおよび情報リソースに含まれているコンテンツ要素にアクセスすることができる。
コンテンツ制限ポリシーによれば、リソースパーサーは、さらなる解析のために情報リソースに含まれるコンテンツ要素のサブセットを識別することができる。コンピューティングデバイスは、情報リソースに含まれる各コンテンツ要素に対する要素タイプを識別することができる。要素タイプは、ほかにもあるがとりわけ、本文、段落、区分、セクション、インラインフレーム、画像、キャンバス、アプレット、スクリプト、オーディオ、ビデオ、テーブル、およびリストのうちの1つを含み得る。要素タイプは、HTMLタグ(たとえば、インラインフレームに対して「<iframe>」)に対応し得る。いくつかの実装形態において、コンテンツ制限ポリシーは、さらに解析されるべき要素タイプ(たとえば、インラインフレーム、画像、アプレットなど)を指定するものとしてよい。コンピューティングデバイスは、コンテンツ制限ポリシーで指定されているようにさらに解析されるべき要素タイプとマッチするコンテンツ要素のサブセットを識別することができる。この方式で、プレゼンテーションリストリクタは、処理されるべきコンテンツ要素の数を減らし、それによって、コンピューティングリソースを解放し得る。
コンピューティングデバイスは、情報リソースに含まれるコンテンツ要素に対応するビットストリームを識別することができる(ブロック410)。コンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定するために、コンピューティングデバイスは、情報リソースに含まれるコンテンツ要素に対応するビットストリームを識別することができる。情報リソースは、2進数列(たとえば、バイト配列またはバイトストリーム)に対応するものとしてよい。情報リソースに含まれる各コンテンツ要素は、2進数列の一部に対応し得る。いくつかの実装形態において、コンピューティングデバイスは、アプリケーションとインターフェースし、情報リソースに対応する2進数列にアクセスすることができる。いくつかの実装形態において、コンピューティングデバイスは、アプリケーションとインターフェースし、コンテンツ要素のうちの1つに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、コンピューティングデバイスは、アプリケーションとインターフェースし、コンテンツ制限ポリシーによって指定されているようにさらに解析されるべき要素タイプとマッチするものとして識別されたコンテンツ要素のサブセットに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素のビットストリームのサブセット部分(たとえば、ビットストリーム内のビットの最初のN個またはビットストリーム内の5ビット毎)を識別することができる。
コンピューティングデバイスは、識別されたビットストリームをハッシュ化してコンテンツ要素に対応する要素識別子を生成することができる(ブロック415)。コンピューティングデバイスがビットストリームをすでに識別していれば、コンピューティングデバイスは、識別されたビットストリームをハッシュ化してコンテンツ要素に対応する要素識別子を生成することができる。いくつかの実装形態において、コンピューティングデバイスは、識別されたビットストリーム上でハッシュ関数を使用してコンテンツ要素に対応する要素識別子を生成することができる。ハッシュ関数は、ほかにもあるがとりわけ、暗号学的ハッシュ関数(たとえば、セキュアハッシュアルゴリズム(SHA-1、SHA-2、およびSHA-3)、メッセージダイジェストアルゴリズム(MD2、MD4、MD5、およびMD6)、チェックサム関数など)、巡回冗長検査アルゴリズム、ハッシュテーブル(たとえば、連想配列)、および幾何学的ハッシュ関数、または一対一ハッシュ関数などの、コンテンツ要素に対する識別されたビットストリームの任意の組合せを含み得る。ハッシュ関数は、ハッシュ衝突を最小にするように構成されるか、または選択されてよく、それにより、同じ要素が2つの異なるコンテンツ要素を識別する可能性が低減される。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素のビットストリームのサブセット部分をハッシュすることができる。
いくつかの実装形態において、コンピューティングデバイスによって使用されるハッシュ関数は、プレゼンテーションリストリクタのすべてのインスタンス化にわたって共通であってよい。同じコンテンツ要素について、一方のコンピューティングデバイスにおけるコンピューティングデバイスの一方のインスタンス化は、他方のコンピューティングデバイスにおけるコンピューティングデバイスの他方のインスタンス化と同じ要素識別子を生成することができる。この方式で、コンピューティングデバイスは、接続されているコンピューティングデバイスにネットワーク上で伝送される同じコンテンツ要素を識別するための単一の要素識別子を生成することができる。
いくつかの実装形態において、コンピューティングデバイスによって使用されるハッシュ関数は、プレゼンテーションリストリクタのローカルインスタンス化に固有のものであってよい。同じコンテンツ要素について、一方のコンピューティングデバイスにおけるコンピューティングデバイスの一方のインスタンス化は、他方のコンピューティングデバイスにおいて実行されるコンピューティングデバイスの他方のインスタンス化によって生成される要素識別子と異なる要素識別子を生成することができる。コンピューティングデバイスは、プレゼンテーションリストリクタのローカルインスタンス化に固有の要素識別子を生成することができる。プレゼンテーションリストリクタのローカルインスタンス化に固有のハッシュ関数を使用することによって、コンピューティングデバイスは、データセキュリティおよび暗号化、さらにはユーザプライバシーを強化することができる。
いくつかの実装形態において、コンピューティングデバイスによって使用されるハッシュ関数は、情報リソースまたはコンテンツ要素に対応する2進数列の暗号化アルゴリズムを考慮したものとすることができる。任意の媒介デバイスが、暗号化アルゴリズムを情報リソースまたはコンテンツ要素に対応する2進数列に適用し、それによって2進数列を変えることができる。いくつかの実装形態において、2進数列に適用される暗号化アルゴリズムは、ほかにも暗号プロトコルはあるがとりわけ、Wired Equivalent Privacy(WEP)およびWi-Fi Protected Access(WPA)を含むものとしてよい。暗号化アルゴリズムにより、一方のコンピューティングデバイスで実行するコンピューティングデバイスは、他方のコンピューティングデバイスで実行するコンピューティングデバイスによって生成される要素識別子と異なる要素識別子を生成することができる。2進数列に適用される暗号化アルゴリズムの効果をバイパスするか、または無効にするために、コンピューティングデバイスは、一対一ハッシュ関数を使用して各識別されたビットストリームに対する要素識別子を生成することができる。この方式で、コンピューティングデバイスによって生成される要素識別子は、プレゼンテーションリストリクタのローカルインスタンス化に固有のものであり得るけれども、媒介デバイスによって暗号化アルゴリズムが適用された結果、一意的な値が得られるものとしてよい。そのようなものとして、プレゼンテーションリストリクタの一方のインスタンス化においてコンピューティングデバイスによって生成される要素識別子は、他のデバイスにおけるプレゼンテーションリストリクタの他方のインスタンス化にわたって使用され得る。
コンピューティングデバイスは、この要素識別子を使用して制限コンテンツデータベースにアクセスすることができる(ブロック420)。コンピューティングデバイスによって生成される要素識別子を使用することで、コンピューティングデバイスは、ローカル制限コンテンツデータベースまたはリモート制限コンテンツデータベースにアクセスして、コンテンツ制限ポリシーをコンテンツ要素に適用すべきかどうかを決定することができる。ローカル制限コンテンツデータベースは、コンピューティングデバイスを実行するコンピューティングデバイスのローカルにあるプレゼンテーションリストリクタのインスタンス化によって維持され得る。ローカル制限コンテンツデータベースは、ほかにもあるがとりわけ、要素識別子と対応する要素識別子が制限されるべきか許可されるべきかを指定する許可インジケータとを記憶するためのデータ構造体(たとえば、配列、ヒープ、リンクリスト、2分木、行列、テーブルなど)を含むことができる。リモート制限コンテンツデータベースは、別のコンピューティングデバイスによって維持され得る。いくつかの実装形態において、リモート制限コンテンツデータベースは、コンピューティングデバイスを実行するコンピューティングデバイスと異なるプレゼンテーションリストリクタのインスタンス化によって維持され得る。いくつかの実装形態において、ローカル制限コンテンツデータベースは、リモートデバイスに記憶され維持され得る。リモート制限コンテンツデータベースは、ほかにもあるがとりわけ、要素識別子と対応する要素識別子が制限されるべきか許可されるべきかを指定する許可インジケータとを記憶するためのデータ構造体(たとえば、配列、ヒープ、リンクリスト、2分木、行列、テーブルなど)を含むことができる。
コンピューティングデバイスは、最初に、ローカル制限コンテンツデータベースにアクセスすることができる。コンピューティングデバイスは、ローカル制限コンテンツデータベースにおいて要素識別子の検索を実行することができる。いくつかの実装形態において、コンピューティングデバイスは、ローカル制限コンテンツデータベースをトラバースして、要素識別子を見つけることができる。いくつかの実装形態において、コンピューティングデバイスは、ローカル制限コンテンツデータベースに記憶されているデータ構造体に対するインデックスとして要素識別子を使用することができる。コンピューティングデバイスがローカル制限コンテンツデータベースにおいて要素識別子を見つけた場合、コンピューティングデバイスは、要素識別子に対する許可インジケータを識別することができる。コンピューティングデバイスは、許可インジケータを使用して、コンテンツ制限ポリシーを要素識別子に対応するコンテンツ要素に適用すべきかどうかを決定することができる。
その一方で、コンピューティングデバイスがローカル制限コンテンツデータベースにおいて要素識別子を見つけない場合、コンピューティングデバイスは、要素識別子を見つける要求をリモート制限コンテンツデータベースに伝送することができる。要素識別子を見つける要求は、ほかにもデータはあるがとりわけ、コンピューティングデバイスによって生成される要素識別子を含むものとしてよい。リモート制限コンテンツデータベースは、プレゼンテーションリストリクタのローカルインスタンス化からリモートにあるデバイスとともに維持されるか、またはそれに関連付けられ得る。いくつかの実装形態において、コンピューティングデバイスは、リモート制限コンテンツデータベースを維持するリモートデバイスにその要求を伝送することができる。
コンピューティングデバイスからのその要求の受信に応答して、リモートデバイスは、その要求の中の要素識別子を使用してリモート制限コンテンツデータベースにアクセスすることができる。リモートデバイスは、リモート制限コンテンツデータベースにおいて要素識別子の検索を実行することができる。いくつかの実装形態において、リモートデバイスは、リモート制限コンテンツデータベースをトラバースして、要素識別子を見つけることができる。いくつかの実装形態において、リモートデバイスは、リモート制限コンテンツデータベースに記憶されているデータ構造体に対するインデックスとして要素識別子を使用することができる。
リモートデバイスがリモート制限コンテンツデータベースにおいて要素識別子を見つけた場合、リモートデバイスは、要素識別子に対する許可インジケータを識別することができる。要素識別子を検出したことに応答して、リモートデバイスは、肯定応答をコンピューティングデバイスに伝送することもできる。肯定応答は、要素識別子がリモート制限コンテンツデータベース上にあることを示し得る。肯定応答は、リモート制限コンテンツデータベースにおいて指定されているような許可インジケータも含み得る。コンピューティングデバイスは、リモート制限コンテンツデータベースに関連付けられているリモートデバイスから肯定応答を受信することができる。コンピューティングデバイスは、要素識別子と、リモートデバイスから受信された許可インジケータをローカル制限コンテンツデータベースに記憶することができる。許可インジケータに基づき、コンピューティングデバイスは、コンテンツ制限ポリシーを許可インジケータに対応するコンテンツ要素に適用すべきかどうかを決定することができる。
リモートデバイスがリモート制限コンテンツデータベースにおいて要素識別子を見つけない場合、リモートデバイスは、否定応答をコンピューティングデバイスに伝送することもできる。否定応答は、要素識別子がリモート制限コンテンツデータベース上にないことを示し得る。コンピューティングデバイスは、リモート制限コンテンツデータベースに関連付けられているリモートデバイスから否定応答を受信することができる。リモートデバイスからの否定応答の受信に応答して、コンピューティングデバイスは、コンピューティングデバイスを呼び出して、レンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。
それに加えて、リモートデバイスがリモート制限コンテンツデータベース内に要素識別子を見つけなかった場合、リモートデバイスは、コンテンツ要素がコンテンツ要素および情報リソースのレンダリングプロパティに基づきレンダリングベースの制限拡張に従って修正されるべきかどうかを決定することができる。コンテンツ要素がレンダリングベースの制限拡張に従って修正されるべきかどうかを決定することは、リモートデバイスにおけるコンピューティングデバイスのインスタンス化によって実行され得る。リモートデバイスは、アプリケーションによって受信されたコンテンツ要素および情報リソースのレンダリングプロパティにアクセスすることができる。いくつかの実装形態において、リモートデバイスは、レンダリングプロパティを求める要求をアプリケーションを実行しているデバイスに伝送することができる。リモートデバイスは、その後、デバイスから情報リソースのコンテンツ要素のレンダリングプロパティを受信することができる。
レンダリングベースの制限拡張に従ってコンテンツ要素のレンダリングプロパティおよび情報リソースのレンダリングプロパティを解析することによって、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。レンダリングベースの制限拡張では、コンテンツ制限ポリシーが特定のレンダリングプロパティを有するコンテンツ要素に適用されるべきであると指定し得る。一般に、レンダリングベースの制限拡張に従ってコンテンツ要素のレンダリングプロパティおよび情報リソースのレンダリングプロパティを解析することは、ハッシュ関数に比べて計算の複雑度が高くなることがある。そのようなものとして、レンダリングベースの制限拡張は、ハッシュ関数に比べてコンピュータリソースをより多く消費し、より処理時間もかかり、リモートデバイスのパフォーマンスの低下および時間遅延が生じ得る。コンピュータリソースの消費を部分的に軽減し、処理時間をある程度短縮するために、ハッシュ関数と、レンダリングプロパティの解析結果を使用して要素識別子を生成することは、複数のデバイスとプレゼンテーションリストリクタのインスタンス化との間に分岐されるか、または他の何らかの方法で割り振られるものとしてよい。
レンダリングベースの制限拡張により、リモートデバイスは、コンテンツ要素のレンダリングプロパティを、指定されたレンダリングプロパティと比較して、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。いくつかの実装形態において、リモートデバイスは、情報リソース上のコンテンツ要素の寸法を、予め指定されている寸法と比較することができる。リモートデバイスがコンテンツ要素の寸法と予め指定されている位置との間にマッチがあると決定した場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。いくつかの実装形態において、リモートデバイスは、情報リソース上のコンテンツ要素の位置を、予め指定されている位置(たとえば、情報リソースの上の方へ、またはサイドに沿って)と比較することができる。リモートデバイスがコンテンツ要素の位置と指定されている位置との間にマッチがあると決定した場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。いくつかの実装形態において、リモートデバイスは、コンテンツ要素の色値(たとえば、RGB値、英数字識別子、またはHTMLカラーコード)と、情報リソースの色値とを識別することができる。コンテンツ要素の色値および情報リソースの色値が事前定義されたマージンだけ異なる場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。これらがどれもマッチしない場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきでないと決定することができる。
リモートデバイスは、また、任意の数の画像認識アルゴリズムおよび画像認識アルゴリズムの組合せを適用し、レンダリングベースの制限拡張に従ってレンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することもできる。コンテンツ要素は、画像を含み得るか、または画像に対する送信元アドレスを含み得る。コンテンツ要素は、ビデオを含み得るか、またはビデオに対する送信元アドレスを含み得る。いくつかの実装形態において、リモートデバイスは画像認識アルゴリズムを適用し、コンテンツ要素の画像またはビデオが制限された視覚要素を含んでいるかどうかを決定することができる。画像認識アルゴリズムは、ほかにもあるがとりわけ、光学式文字認識、物体認識、エッジ検出、特徴検出(たとえば、アフィン特徴検出)、およびパターン認識アルゴリズムを含み得る。いくつかの実装形態において、リモートデバイスは、光学式文字認識アルゴリズムを使用してコンテンツ要素の画像から文字列を識別することができる。リモートデバイスは、識別された文字列を、予め指定されている文字列と比較することができる。識別子文字列が予め指定されている文字列とマッチした場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。そうでない場合、リモートデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきでないと決定することができる。
レンダリングプロパティの解析結果に基づきコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することと併せて、リモートデバイスは、コンテンツ要素に対応する要素識別子をリモート制限コンテンツデータベースに追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきとリモートデバイスが決定した場合、リモートデバイスは、要素識別子に対応するコンテンツ要素が制限されるべきであると指定する許可インジケータを追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきでないとリモートデバイスが決定した場合、リモートデバイスは、要素識別子に対応するコンテンツ要素が許可されるべきであると指定する許可インジケータを追加するか、または挿入することができる。その後、リモートデバイスは、肯定応答をコンピューティングデバイスに伝送することができる。肯定応答は、要素識別子がリモート制限コンテンツデータベース上にあることを示し得る。肯定応答は、リモート制限コンテンツデータベースから取り出された許可インジケータも含み得る。
いくつかの実装形態において、コンピューティングデバイスがローカル制限コンテンツデータベースにおいて要素識別子を見つけなかった場合、コンピューティングデバイスは、コンピューティングデバイスを呼び出すことができる。呼び出されると、コンピューティングデバイスは、コンテンツ要素を解析して、レンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。コンピューティングデバイスは、また、コンピューティングデバイスを呼び出して、リモート制限コンテンツデータベースに関連付けられているリモートデバイスからの要素識別子に対する否定応答の受信に応答してコンテンツ要素を解析することもできる。
レンダリングベースの制限拡張に従ってコンテンツ要素のレンダリングプロパティおよび情報リソースのレンダリングプロパティを解析することによって、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。レンダリングベースの制限拡張では、コンテンツ制限ポリシーが特定のレンダリングプロパティを有するコンテンツ要素に適用されるべきであると指定し得る。
レンダリングベースの制限拡張により、コンピューティングデバイスは、コンテンツ要素のレンダリングプロパティを、指定されたレンダリングプロパティと比較して、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することができる。いくつかの実装形態において、コンピューティングデバイスは、情報リソース上のコンテンツ要素の寸法を、予め指定されている寸法と比較することができる。コンピューティングデバイスがコンテンツ要素の寸法と予め指定されている位置との間にマッチがあると決定した場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。いくつかの実装形態において、コンピューティングデバイスは、情報リソース上のコンテンツ要素の位置を、予め指定されている位置(たとえば、情報リソースの上の方へ、またはサイドに沿って)と比較することができる。コンピューティングデバイスがコンテンツ要素の位置と指定されている位置との間にマッチがあると決定した場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素の色値(たとえば、RGB値、英数字識別子、またはHTMLカラーコード)と、情報リソースの色値とを識別することができる。コンテンツ要素の色値および情報リソースの色値が事前定義されたマージンだけ異なる場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。これらがどれもマッチしない場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきでないと決定することができる。
コンピューティングデバイスは、また、任意の数の画像認識アルゴリズムおよび画像認識アルゴリズムの組合せを適用し、レンダリングベースの制限拡張に従ってレンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することもできる。コンテンツ要素は、画像を含み得るか、または画像に対する送信元アドレスを含み得る。コンテンツ要素は、ビデオを含み得るか、またはビデオに対する送信元アドレスを含み得る。いくつかの実装形態において、コンピューティングデバイスは画像認識アルゴリズムを適用し、コンテンツ要素の画像またはビデオが制限された視覚要素を含んでいるかどうかを決定することができる。画像認識アルゴリズムは、ほかにもあるがとりわけ、光学式文字認識、物体認識、エッジ検出、特徴検出(たとえば、アフィン特徴検出)、およびパターン認識アルゴリズムを含み得る。いくつかの実装形態において、コンピューティングデバイスは、光学式文字認識アルゴリズムを使用してコンテンツ要素の画像から文字列を識別することができる。コンピューティングデバイスは、識別された文字列を、予め指定されている文字列と比較することができる。識別子文字列が予め指定されている文字列とマッチした場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定することができる。そうでない場合、コンピューティングデバイスは、コンテンツ制限ポリシーがコンテンツ要素に適用されるべきでないと決定することができる。
レンダリングプロパティの解析結果に基づきコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定することと併せて、コンピューティングデバイスは、コンテンツ要素に対応する要素識別子をローカル制限コンテンツデータベースに追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、要素識別子に対応するコンテンツ要素が制限されるべきであると指定する許可インジケータを追加するか、または挿入することができる。コンテンツ制限ポリシーが適用されるべきでないとコンピューティングデバイスが決定した場合、コンピューティングデバイスは、要素識別子に対応するコンテンツ要素が許可されるべきであると指定する許可インジケータを追加するか、または挿入することができる。
要素識別子がローカル制限コンテンツデータベースまたはリモート制限コンテンツデータベースのいずれかの中に見つからない場合、コンピューティングデバイスは、アプリケーションによる情報リソースにおけるコンテンツ要素の第1の組み入れの際に、コンテンツ要素を維持することができる。コンテンツ要素の第1の組み入れは、ネットワークに接続されているプレゼンテーションリストリクタを実行するデバイスへのコンテンツ要素の最初の提供に対応し得る。いくつかの実装形態において、コンピューティングデバイスは、情報リソースの第1の組み入れの際に、コンテンツ要素のプロパティを既定値に設定するか、または維持することができる。情報リソースにおけるコンテンツ要素の第1の組み入れの後、コンピューティングデバイスは、コンピューティングデバイスを呼び出すことができる。呼び出されると、コンピューティングデバイスは、コンテンツ要素を解析し、本明細書で説明されている機能を使用してレンダリングベースの制限拡張に従ってコンテンツ制限ポリシーがコンテンツ要素に適用されるべきかどうかを決定する。コンピューティングデバイスが、レンダリングプロパティに基づきコンテンツ制限ポリシーがコンテンツ要素に適用されるべきであると決定した場合、コンピューティングデバイスは、情報リソース上でその後コンテンツ要素を入れる際にコンテンツ要素を修正することができる。この方式で、コンテンツ要素は、最初の提供の際にアプリケーションを実行するコンピューティングデバイスにおいて情報リソース上で提示され、レンダリングされ得る。コンテンツ要素および情報リソースのレンダリングプロパティの解析結果に基づき、コンテンツ要素は、アプリケーションを実行するコンピューティングデバイスへのコンテンツ要素のその後の修正および提供において修正され得る。
コンピューティングデバイスは、制限付きコンテンツデータベース内で要素識別子を検出したことに応答して、コンテンツ制限ポリシーに従って情報リソース上のコンテンツ要素のプレゼンテーションを修正することができる(ブロック425)。ローカル制限コンテンツデータベースまたはリモート制限コンテンツデータベースのいずれかの中で要素識別子を検出したことに応答して、コンピューティングデバイスは、コンテンツ制限ポリシーに従って情報リソース上のコンテンツ要素のプレゼンテーションを修正することができる。コンテンツ制限ポリシーデータベースに維持されているコンテンツ制限ポリシーで、コンテンツ要素のプレゼンテーションを修正するために任意の数のアクションまたはアクションの組合せを実行するようにコンピューティングデバイスを指定するものとしてよい。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素を無効化することができる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ制限ポリシーによって指定されているように、情報リソースからコンテンツ要素を削除するか、または取り除くことができる。いくつかの実装形態において、コンピューティングデバイスは、情報リソースに対するマークアップにおいてコンテンツ要素に対応するコードセグメントを識別することができる。コンピューティングデバイスは、コンテンツ要素に対応するコードセグメントを削除するか、取り除くか、または他の何らかの形で無効にすることができる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素の表示/非表示プロパティをオンからオフに設定することができる。コンテンツ要素の表示/非表示プロパティをオンからオフに設定することで、アプリケーションが情報リソース上にコンテンツ要素をレンダリングすること、表示すること、または他の何らかの方法で提示することを行わないようにし得る。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ制限ポリシーによって指定されているようにコンテンツ要素からリダイレクションリンクを取り除くことができる。リダイレクションリンクの相互作用または活性化は、アプリケーションを実行するコンピューティングデバイスが追加のコンテンツを取り出すことを引き起こし得る。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素に対応するコードセグメントに基づきコンテンツ要素がリダイレクションリンクを含むかどうかを決定することができる。
コンピューティングデバイスは、要素識別子を検出したことに応答して、コンテンツ制限ポリシーによって指定されているように情報リソース上のコンテンツ要素に関連付けられているデータの伝送および受信を修正することもできる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素に関連付けられているアプリケーションを実行するコンピューティングデバイスからデータパケットの伝送を変更することができる。コンテンツ要素は、確認応答をログサーバに伝送するようにアプリケーションを実行するコンピューティングデバイスを指定するコードセグメントを含み得る。確認応答は、アプリケーションを実行するコンピューティングデバイスにおいてコンテンツ要素の受信または提示の確認を表し得る。コンピューティングデバイスは、確認応答の伝送に対するコードセグメントを識別することができる。いくつかの実装形態において、コンピューティングデバイスは、確認応答の伝送を無効化するために識別されたコードセグメントを修正するか、取り除くか、または削除することができる。いくつかの実装形態において、コンピューティングデバイスは、また、確認応答の伝送を許可し、その後、確認応答の伝送を無効化するために識別されたコードセグメントを修正するか、取り除くか、または削除することができる。いくつかの実装形態において、コンピューティングデバイスは、コンテンツ要素に関連付けられている別のコンピューティングデバイス(たとえば、データ処理システム、コンテンツプロバイダデバイス、およびコンテンツパブリッシャデバイス)からのデータパケットの受信を変更することができる。いくつかの実装形態において、コンピューティングデバイスはデータパケット(たとえば、ビデオをストリーミングするためのフラグメントチャンク)を受信することができる。次いで、コンピューティングデバイスは、アプリケーションによって処理されないようにデータパケットを取り除くことができる。
要素識別子がローカル制限コンテンツデータベースまたはリモート制限コンテンツデータベースのいずれかの中に見つかった場合、コンピューティングデバイスは、コンテンツ要素のプレゼンテーションを修正するために情報リソース上に追加のコンテンツ要素を追加することができる。コンピューティングデバイスは、コンテンツ要素の位置および寸法を識別することができる。コンピューティングデバイスは、コンテンツ要素を含む情報リソースの視覚的特性(たとえば、色値)を識別することができる。次いで、コンピューティングデバイスは、コンテンツ要素を塞ぐためにコンテンツ要素の識別された位置および寸法ならびに情報リソースの視覚的特性を有する追加のコンテンツ要素を生成することができる。
図5は、例示的な一実装形態による、情報リソース内に挿入されるコンテンツを制限する方法500を示す流れ図である。方法500に関して本明細書において説明されている機能は、クライアントデバイス125、プロキシデバイス145、または図1に示されているようなリモートコンテンツリストリクタデバイス150、図2に示されているようなシステム200、または図10に示されているようなコンピューティングデバイス、またはこれらの任意の組合せによって実行されるか、または他の何らかの形で実行されてよい。概略を述べると、クライアントデバイスは、情報リソース上のコンテンツ要素を識別することができる(ブロック503)。クライアントデバイスは、コンテンツ要素が制限タイプであるかどうかを決定することができる(ブロック506)。コンテンツ要素が制限タイプでない場合、クライアントデバイスは、情報リソース上の次のコンテンツ要素を識別することができる(ブロック569)。コンテンツ要素が制限タイプである場合、クライアントデバイスは、そのコンテンツ要素に対応するビット列を識別することができる(ブロック509)。クライアントデバイスは、ビット列のサブセットを抽出して、コンテンツ要素に対するビットストリームを取得することができる(ブロック512)。クライアントデバイスは、ビットストリームのハッシュ値を計算して要素識別子を生成することができる(ブロック515)。クライアントデバイスは、ローカル制限コンテンツデータベースにアクセスしてこの要素識別子を検索することができる(ブロック518)。クライアントデバイスは、要素識別子がローカル制限コンテンツデータベース内にあるかどうかを決定することができる(ブロック521)。要素識別子がローカル制限コンテンツデータベース内にない場合、クライアントデバイスは、要求をリモートデバイスに伝送することができる(ブロック524)。
リモートデバイスは、クライアントデバイスから要求を受信することができる(ブロック527)。リモートデバイスは、リモート制限コンテンツデータベースにアクセスしてこの要素識別子を検索することができる(ブロック530)。リモートデバイスは、要素識別子がリモート制限コンテンツデータベース内にあるかどうかを決定することができる(ブロック533)。要素識別子がリモート制限コンテンツデータベース内にある場合、リモートデバイスは、インジケータをクライアントデバイスに伝送することができる(ブロック536)。要素識別子がリモート制限コンテンツデータベース内にない場合、リモートデバイスは、コンテンツ要素のレンダリングプロパティを識別することができる(ブロック539)。リモートデバイスは、識別されたレンダリングプロパティに基づきコンテンツ要素が修正されるべきかどうかを決定することができる(ブロック542)。許可されている場合、リモートデバイスは、要素識別子を許可されたものとしてリモート制限コンテンツデータベース内に追加することができる(ブロック545)。制限されている場合、リモートデバイスは、要素識別子を制限されているものとしてリモート制限コンテンツデータベース内に追加することができる(ブロック548)。リモートデバイスはこのインジケータを伝送することができる(ブロック551)。
クライアントデバイスは、インジケータを受信し、要素識別子をローカル制限コンテンツデータベースに追加することができる(ブロック554)。クライアントデバイスは、要素識別子が許可または制限として指定されているかどうかを決定することができる(ブロック557)。許可されている場合、クライアントデバイスは、情報リソース上のコンテンツ要素を維持することができる(ブロック560)。制限されている場合、クライアントデバイスは、情報リソース上のコンテンツ要素を修正することができる(ブロック563)。次いで、クライアントデバイスは、情報リソース上の次のコンテンツ要素を識別することができる(ブロック569)。方法500の機能は、何回でも繰り返してよい。
C.情報リソース内に挿入されるコンテンツを制限するシステムおよび方法
アプリケーション上のプラグインとして、またはクライアントデバイスもしくはプロキシデバイス(たとえば、ルータ)上で実行するアプリケーションとは別の個別のプログラムとして動作するコンテンツ制御モジュールは、コンテンツ要素を情報リソース上に挿入または提示することに干渉し得る。これらのコンテンツ制御モジュールは、様々な技術の組合せを使用して、情報リソース上のコンテンツ要素に干渉することができる。送信元アドレスを使用してコンテンツ要素が情報リソースの残り部分と異なる送信元からのものであることを識別する一技術もあり得る。この技術は、コンテンツ要素に対する送信元アドレスが情報リソースと同じである場合に対抗され得る。画像処理技術を使用してコンテンツ要素と下にある情報リソースとの間の差を検出することでコンテンツ要素を識別する別の技術もあり得る。しかしながら、そのような技術は、計算負荷が高く、その結果遅れが生じ、コンピュータのパフォーマンスを低下させることになり得る。コンテンツ要素に対応するビットストリームのハッシュ値を制限されたハッシュ値のリストを維持するコンテンツ制限データベースに記憶されている値と照合することによってコンテンツ要素を識別するさらに別の技術もあり得る。
これらのコンテンツ制御モジュールは、セキュリティ上の問題を引き起こす可能性がある。そのようなコンテンツ制御モジュールは、許可なしに情報リソースを最初に提供される構成要素であるコンテンツ要素を変更することができる。さらに、これらのモジュールは、コンテンツ要素および情報リソースの挙動を、元々プログラムされた情報リソースの挙動から逸脱させることがある。たとえば、コンテンツ制御モジュールは、コンテンツ要素のうちの1つの中のリンク(たとえば、ハイパーリンク)を変更し、そのため潜在的にクライアントデバイスが悪意のあるウェブサイトにリダイレクトされる可能性がある。さらに、ヒューマンコンピュータインタラクション(HCI)の観点から、コンテンツ要素へのこれらの変更および情報リソースの挙動の逸脱は、情報リソースおよびアプリケーションに対するユーザの経験に干渉する可能性がある。たとえば、コンテンツ制御モジュールが情報リソースからコンテンツ要素のうちの1つを取り除く場合、ユーザは取り除かれたコンテンツ要素を見るか、またはインタラクティブに操作することができず、それによって、最初に符号化されているとおりの情報リソースに対するユーザの経験を低下させる。
いくつかの実装形態において、コンテンツパブリッシャは、クライアントデバイスが1つまたは複数のリンクを介して1つまたは複数のコンテンツサーバにコンテンツを要求することを行わせることができる命令を情報リソースに入れることができる。これらのコンテンツサーバは、コンテンツパブリッシャのコンテンツをホストするホストサーバと異なっていてもよい。情報リソースを伝送する前にコンテンツを直接情報リソース内に挿入する代わりにコンテンツを要求する命令を入れることによって、コンテンツパブリッシャは、情報リソースをクライアントデバイスに提供する際の待ち時間を短縮するだけでなくネットワークトラフィックの量を低減することができる。クライアントデバイス上で実行するいくつかのコンテンツ制御モジュールは、コンテンツサーバへのリンクを他のもしくは未知のコンテンツサーバに修正すること、または要求がコンテンツサーバに伝送されることを妨げることのいずれかによって1つまたは複数のコンテンツサーバからのコンテンツを求める要求を伝送するクライアントデバイスの能力に干渉することができる。その結果、クライアントデバイスは、コンテンツパブリッシャ側でコンテンツパブリッシャの情報リソースに含めることを望んでいるコンテンツアイテムのすべてにアクセスすることまたは表示することができない場合がある。
コンテンツ制御モジュールがもたらす可能性のある損害の一部を回避するために、提案されたシステムは、コンテンツ制御モジュール(たとえば、本明細書のセクションBにおいて詳述されているようなプレゼンテーションリストリクタ165)の弱点の一部を利用することができる。各新しいコンテンツ要素が用意されることで、コンテンツ制御モジュールがハッシュ値を再計算し、画像処理アルゴリズムを新たに使用してコンテンツ要素を処理し、制限するかどうかを決定するので、計算パワーが消費され、時間がかかることになり得る。またこの結果、コンテンツ要素に対する受信のpingの確認で遅れを生じることになり得る。受信のpingの確認がコンテンツ要素に対して遅延される場合、サーバは、編集されたバージョンを生成し、編集されたバージョンのコンテンツ要素を送信することができる。サーバは、ファイル名を編集するか、またはコンテンツ要素の視覚的プロパティを変更することができる。したがって、編集されたバージョンのコンテンツ要素に対応するビットストリームのハッシュ値は前のハッシュ値と異なっていてもよく、それによって、クライアントデバイスにおけるコンテンツ制御モジュールをトリガーし、画像処理アルゴリズムを再実行するものとしてよい。これは、クライアントデバイスにおいて実行されるコンテンツ制御モジュールのパフォーマンスを低下させ得る。クライアントデバイスにおいて実行されるコンテンツ制御モジュールのパフォーマンスを低下させることによって、コンテンツ制御モジュールの使用が制約され得る。コンテンツ制御モジュールの使用を抑制することで、コンテンツプロバイダおよびコンテンツパブリッシャがそれぞれのクライアントデバイス上でコンテンツがユーザに対してどのように表示されるかの制御を保持することを可能にし得る。これは、たとえば、ユーザインターフェースエクスペリエンスの提供を改善し得るか、またはコンテンツがどのように表示されるかに関する要求条件が満たされることを確実にし得る。
次に図6を参照すると、図6は、例示的な一実装形態による、情報リソースの完全性に干渉するスクリプトに対する対抗手段をデプロイするためのシステム600を示すブロック図である。システム600は、ネットワーク105、コンテンツ要求モジュール130を備えるデータ処理システム110、リソースアセンブラモジュール135、データベース140、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、クライアントデバイス125、プロキシデバイス150、およびリモートコンテンツリストリクタデバイス155などの、環境100のいくつかのまたはすべてのデバイス、コンポーネント、およびモジュールを備え得る。
システム600において、データ処理システム110は、また、干渉検出器605、コンテンツモディファイア610、およびデータベース615も備え得る。干渉検出器605およびコンテンツモディファイア610は、ネットワーク105を介してデータベース140もしくはデータベース615と、および他のコンピューティングデバイス(たとえば、コンテンツプロバイダデバイス115、コンテンツパブリッシャデバイス120、またはクライアントデバイス125)と通信するように構成されている少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、またはプログラマブルロジックアレイなどの他の論理デバイスを含むことができる。干渉検出器605およびコンテンツモディファイア610は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むか、または実行することができる。干渉検出器605およびコンテンツモディファイア610は、別個のコンポーネント、単一のコンポーネント、またはデータ処理システム110の一部であってもよい。干渉検出器605およびコンテンツモディファイア610は、1つまたは複数のスクリプトを実行するように構成されている1つまたは複数のプロセッサなどの、ソフトウェアとハードウェアとの組合せを備えることができる。干渉検出器605およびコンテンツモディファイア610は、ネットワーク105に接続されているデバイスに提供するコンテンツ要素および情報リソースを選択し、生成する際にコンテンツ要求モジュール130およびリソースアセンブラモジュール135とインターフェースすることができる。
データ処理システム110は、コンテンツ要素(たとえば、コンテンツ要素210A〜N)および情報リソースのプロパティを記憶するための1つまたは複数のデータベース615を備えることもできる。データベース615は、データ処理システム110のローカルにあってもよい。いくつかの実装形態において、データベース615は、データ処理システム110のリモートにあってもよいが、ネットワーク105を介してデータ処理システム110と通信することができる。データベース615は、コンテンツ要求モジュール130およびリソースアセンブラモジュール135によって選択され生成される情報リソースおよびコンテンツ要素などの、クライアントデバイス125に提供する、ほかにもあるがとりわけ、情報リソースおよび情報リソースに入れるべきコンテンツ要素のプロパティを含むものとしてよい。データベース615は、コンテンツ要求モジュール130およびリソースアセンブラモジュール135またはデータ処理システム110の他の任意のコンポーネントによって生成または修正された情報リソースおよびコンテンツ要素を記憶することができる。いくつかの実装形態において、データベース615はデータベース140と同じであってもよい。
情報リソースの完全性を保存するために、干渉検出器605は、情報リソース(たとえば、情報リソース205)上の第1のコンテンツ要素(たとえば、コンテンツ要素210A〜N)を識別することができる。情報リソースおよび第1のコンテンツ要素は、ネットワーク105に接続されているクライアントデバイス125にすでに伝送されるかまたは提供されていてもよい。情報リソースは、2進数列に対応するものとしてよい。第1のコンテンツは、第1のビットストリームに対応し得る。クライアントデバイス125、プロキシデバイス145、またはリモートコンテンツリストリクタデバイス155上で実行されるプレゼンテーションリストリクタ165(または他のコンテンツ制御モジュール)は、第1のコンテンツ要素を情報リソース上に提示すること、または入れることにすでに干渉しているものとしてよい。いくつかの実装形態において、プレゼンテーションリストリクタ165は、本明細書のセクションBにおいて詳述されているように、コンテンツ制限ポリシーを情報リソース上の第1のコンテンツ要素にすでに適用しているものとしてよい。
いくつかの実装形態において、干渉検出器605は、さらなる解析のために情報リソースに含まれるコンテンツ要素のサブセットを識別することができる。干渉検出器605は、情報リソースに含まれる各コンテンツ要素に対する要素タイプを識別する。要素タイプは、ほかにもあるがとりわけ、本文、段落、区分、セクション、インラインフレーム、画像、キャンバス、アプレット、スクリプト、オーディオ、ビデオ、テーブル、およびリストのうちの1つを含み得る。要素タイプは、HTMLタグ(たとえば、インラインフレームに対して「<iframe>」)に対応し得る。さらに解析されるべき要素タイプは、プレゼンテーションリストリクタ165によって修正される可能性が最も高いタイプ(たとえば、インラインフレーム、オーディオ、ビデオ、画像など)を含み得る。干渉検出器605は、要素タイプとマッチするコンテンツ要素のサブセットを識別することができる。この方式で、干渉検出器605は、処理されるべきコンテンツ要素の数をプレゼンテーションリストリクタ165によって修正される可能性が最も高いものに減らし、それによって、データ処理システム110に対するコンピューティングリソースを解放し得る。
いくつかの実装形態において、干渉検出器605は、情報リソースに含まれる第1のコンテンツ要素に対応するビットストリームを識別することができる。情報リソースは、2進数列(たとえば、バイト配列またはバイトストリーム)に対応するものとしてよい。情報リソースに含まれる各コンテンツ要素は、2進数列の一部に対応し得る。いくつかの実装形態において、干渉検出器605は、情報リソースに対応する2進数列にアクセスすることができる。いくつかの実装形態において、干渉検出器605は、コンテンツ要素のうちの1つに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、干渉検出器605は、さらに解析されるべき要素タイプとマッチするものとして識別されているコンテンツ要素のサブセットに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、干渉検出器605は、情報リソース、コンテンツ要素、および対応する2進数列に対するデータベース615にアクセスすることができる。
コンテンツ要素が情報リソース上で識別された場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉を決定することができる。第1のコンテンツ要素のレンダリングへの干渉は、クライアントデバイス125上でのようにコンテンツ要素の表示またはプレゼンテーションを無効化すること、抑制すること、または他の何らかの形で修正することを含み得る。干渉は、クライアントデバイス125、プロキシデバイス145、またはリモートコンテンツリストリクタデバイス150上でプレゼンテーションリストリクタ165が実行されることにより生じ得る。干渉検出器605は、任意の数の技術または技術の組合せを使用して、プレゼンテーションリストリクタ165によるそのような干渉の発生を決定することができる。
コンテンツ要素の伝送の時間および確認応答の時間を使用することで、干渉検出器605は、情報リソース上のコンテンツ要素のレンダリングへの干渉を決定することができる。各情報リソースは、情報リソース内にコンテンツを挿入することを要求するための要求スクリプトを含み得る。情報リソースの受信に応答して、要求スクリプトは、コンテンツを求める要求をデータ処理システム110に伝送することをクライアントデバイス125に行わせ得る。各コンテンツ要素は、確認応答スクリプトを含み得る。コンテンツ要素を受信すると、確認応答スクリプトは、確認応答(たとえば、pingback)をデータ処理システム110またはコンテンツプロバイダデバイス115に伝送するか、または送り返すことをアプリケーション160を実行しているクライアントデバイス125に行わせるものとしてよい。コンテンツ要素の伝送の時間およびコンテンツまたは確認応答を求める要求の受信の時間は、データベース140またはデータベース615に記憶され得る。
クライアントデバイス125へのコンテンツ要素の伝送の時間、クライアントデバイス125からのコンテンツ要素に関連付けられているコンテンツを求める要求の受信の時間、およびクライアントデバイス125からの確認応答の受信の時間に不規則が見られる場合、これは、クライアントデバイス125においてプレゼンテーションリストリクタ165が実行されていることを示し得る。クライアントデバイス125上でプレゼンテーションリストリクタ165の機能を実行すると、プレゼンテーションリストリクタ165がない場合に比べて、確認応答の受信の時間が長くなることがある。干渉検出器605は、コンテンツ要素のレンダリングが干渉されたかどうかを決定する際にコンテンツ要素および情報リソースの伝送ならびにコンテンツ要素に関連付けられている確認応答の受信に関係する様々な時間を比較することができる。この比較は、リアルタイムで、または指定された時間間隔で実行されてよい。いくつかの実装形態において、第1のコンテンツ要素の応答は、コンテンツパブリッシャデバイス125に結び付けられ次の情報リソースを利用可能にし、それにより悪意のあるクライアントレンダラー(たとえば、プレゼンテーションリストリクタ165)が応答送信するまで任意の時間待つことを防ぐことができる。その結果、ハッシュベースのアプローチを使用する悪意のあるレンダラーは、干渉検出器605による検出を回避するために非ハッシュベースの「ブルートフォース」アプローチと同じくらい遅く、不効率なものとなり得る。
いくつかの実装形態において、干渉検出器605は、コンテンツを求める要求を受信しなかったことまたはクライアントデバイス125から第1のコンテンツ要素に対する確認応答を受信しなかったことから情報リソース上に第1のコンテンツ要素をレンダリングすることへの干渉の発生を決定することができる。コンテンツを求める要求を受信しなかったことまたはクライアントデバイス125から第1のコンテンツ要素に対する確認応答を受信しなかったことは、プレゼンテーションリストリクタ165が第1のコンテンツ要素またはその情報リソースの挙動を変えたことを示しているものとしてよい。そのために、各コンテンツ要素について、干渉検出器605はデータベース615にアクセスして、情報リソースがクライアントデバイス125に伝送または提供されたかどうかを決定することができる。干渉検出器605は、第1のコンテンツ要素に関連付けられているコンテンツを求める要求がクライアントデバイス125から受信されたかどうかを決定することができる。コンテンツを求める要求がクライアントデバイス125から受信された場合、干渉検出器605は、第1のコンテンツ要素の干渉を決定するために、ほかにもあるがとりわけ、その要求の受信の時間を解析することができる。コンテンツを求める要求がクライアントデバイス125から受信されなかった場合、干渉検出器605は、クライアントデバイス上の情報リソースに第1のコンテンツ要素をレンダリングすることに対する干渉が発生したと決定することができる。各コンテンツ要素について、干渉検出器605は、データベース615にアクセスして、第1のコンテンツ要素に関連付けられている確認応答がクライアントデバイス125から受信されたかどうかを決定することもできる。確認応答がクライアントデバイス125から受信された場合、干渉検出器605は、第1のコンテンツ要素の干渉を決定するために、ほかにもあるがとりわけ、確認応答の時間を解析することができる。確認応答がクライアントデバイス125から受信されなかった場合、干渉検出器605は、クライアントデバイス上の情報リソースに第1のコンテンツ要素をレンダリングすることに対する干渉が発生したと決定することができる。
いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素をクライアントデバイス125に伝送したときからクライアントデバイス125から第1のコンテンツ要素に対する確認応答を受信したときまでの間に経過した時間を比較して、干渉の発生を決定することができる。干渉検出器605は、確認応答の伝送の時間および受信の時間についてデータベース140またはデータベース615にアクセスする。干渉検出器605は、クライアントデバイス125への第1のコンテンツ要素の伝送の時間を識別することができる。第1のコンテンツ要素の伝送の時間は、データ処理システム110またはコンテンツプロバイダデバイス115が第1のコンテンツ要素をクライアントデバイス125に伝送するか、または他の何らかの方法で提供した時間に対応し得る。干渉検出器605は、肯定応答の受信の時間を識別することができる。肯定応答の受信の時間は、第1のコンテンツ要素を処理するクライアントデバイス125が確認応答をデータ処理システム110またはコンテンツプロバイダデバイス115に伝送して送り返した時間に対応するものとしてよい。干渉検出器605は、第1のコンテンツ要素を伝送したときから確認応答を受信したときまでの間に経過した時間を計算することができる。干渉検出器605は、経過した計算された時間を所定の閾値と比較することができる(たとえば、マイクロ秒からミリ秒の範囲)。干渉検出器605が、経過した計算された時間が所定の閾値以上であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。干渉検出器605が、経過した計算された時間が所定の閾値未満であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素を多数のクライアントデバイス125に伝送したときからクライアントデバイスから確認応答を受信したときまでの間に経過した平均時間を比較して、干渉の発生を決定することができる。干渉検出器605は、各クライアントデバイス125に対する確認応答の伝送の時間および受信の時間についてデータベース140またはデータベース615にアクセスする。干渉検出器605は、複数のクライアントデバイス125にまたがって第1のコンテンツ要素を伝送したときから確認応答を受信したときまでの間に経過した平均時間を計算することができる。干渉検出器605は、経過した平均時間を所定の閾値と比較することができる(たとえば、マイクロ秒からミリ秒の範囲)。干渉検出器605が、経過した平均時間が所定の閾値以上であると決定した場合、干渉検出器605は、多数のクライアントデバイス125にまたがって情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決定することができる。干渉検出器605が、経過した平均時間が所定の閾値未満であると決定した場合、干渉検出器605は、複数のクライアントデバイス125にまたがって情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素の第1の伝送と第2の伝送との間に経過した第1の時間を、第1のコンテンツ要素に対する確認応答の第1の受信と第2の受信との間に経過した第2の時間と比較することができる。経過した第1の時間と経過した第2の時間との差は、プレゼンテーションリストリクタ165が、第1のコンテンツ要素を情報リソース上にレンダリングまたは挿入することを妨げている可能性があることを示し得る。プレゼンテーションリストリクタ165は、第1のコンテンツ要素の第1の受信の後に、レンダリングベースの制限ポリシー(たとえば、画像処理技術)を使用して、第1のコンテンツ要素を解析し、コンテンツ制限ポリシーをコンテンツ要素に適用するかどうかを決定していてもよい。その後、プレゼンテーションリストリクタ165は、ハッシュ関数を使用して、第1のコンテンツ要素が制限コンテンツデータベース(たとえば、ローカル制限コンテンツデータベース240またはリモート制限コンテンツデータベース245)上の要素識別子に対応するかどうかを識別していてもよい。画像処理アルゴリズムの実行は、ハッシュ値の計算に比べて時間がかかることがある。
第1のコンテンツ要素の伝送から肯定応答の受信までの間の時間間隔の差を識別するために、干渉検出器605は、クライアントデバイス125への第1のコンテンツ要素の伝送の第1の時間を識別することができる。干渉検出器605は、クライアントデバイス125からの第1のコンテンツ要素に対する第1の確認応答の受信の第1の時間を識別することができる。干渉検出器605は、クライアントデバイス125への第1のコンテンツ要素の伝送の第1の時間からコンテンツ要素に対する第1の確認応答の受信の第1の時間までの間に経過した第1の時間を計算することができる。干渉検出器605は、クライアントデバイス125への第1のコンテンツ要素の伝送の第2の時間を識別することができる。干渉検出器605は、クライアントデバイス125からの第1のコンテンツ要素に対する第2の確認応答の受信の第2の時間を識別することができる。干渉検出器605は、クライアントデバイス125への第1のコンテンツ要素の伝送の第2の時間からクライアントデバイス125からのコンテンツ要素に対する第2の確認応答の受信の第2の時間までの間に経過した第2の時間を計算することができる。いくつかの実装形態において、経過した第1の時間および経過した第2の時間は、複数のクライアントデバイス125にまたがる第1のコンテンツ要素の伝送の時間と確認応答の受信の時間とを使用して計算され得る。干渉検出器605は、経過した第1の時間と経過した第2の時間との間の差を計算することができる。干渉検出器605は、その差を所定の閾値と比較することができる。干渉検出器605が、その差が所定の閾値以上であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決定することができる。干渉検出器605が、その差が所定の閾値未満であると決定した場合、干渉検出器605は、情報上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素を求める要求の受信の予想時間を第1のコンテンツ要素を求める要求の受信の実際の時間と比較して、第1のコンテンツ要素のレンダリングへの干渉を決定することができる。クライアントデバイス125上で実行されるプレゼンテーションリストリクタ165は、コンテンツ要素またはその情報リソースの挙動をすでに変えていてもよい。その結果、クライアントデバイス125は、プレゼンテーションリストリクタ165なしの場合に比べて遅い時間に情報リソースを受信した後に第1のコンテンツ要素を求める要求を伝送することを行わされ得る。挙動の変更を考慮するために、干渉検出器605はデータベース615にアクセスして、クライアントデバイス125から第1のコンテンツ要素を情報リソース上に挿入するためにコンテンツを求める要求を受信する実際の時間を識別することができる。干渉検出器605は、クライアントデバイス125への情報リソースの伝送からクライアントデバイス125からのコンテンツを求める要求の受信までの間に経過した実際の時間を識別することもできる。干渉検出器605は、任意の数の係数を使用してクライアントデバイス125からのコンテンツ要素に関連付けられているコンテンツを求める要求の受信の予想時間を決定または計算することができる。これらの係数は、ほかにもあるがとりわけ、ネットワーク105のネットワーク帯域幅、ネットワーク105に対するネットワーク待ち時間、クライアントデバイス125に対するデバイスタイプ、およびクライアントデバイス125のデバイス構成パラメータを含み得る。干渉検出器605は、クライアントデバイス125への情報リソースの伝送からクライアントデバイス125からのコンテンツを求める要求の受信までの間に経過した予想時間を決定するか、または計算することもできる。干渉検出器605は、コンテンツを求める要求の受信の予想時間と実際の時間とを比較することができる。いくつかの実装形態において、干渉検出器605は、コンテンツを求める要求の受信の予想時間と実際の時間との間の差を計算することができる。干渉検出器605が、その差が所定の閾値以上であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決
定することができる。干渉検出器605が、その差が所定の閾値未満であると決定した場合、干渉検出器605は、情報上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素に対する確認応答の受信の予想時間を第1のコンテンツ要素に対する確認応答の受信の実際の時間と比較して、第1のコンテンツ要素のレンダリングへの干渉を決定することができる。クライアントデバイス125上で実行されるプレゼンテーションリストリクタ165は、コンテンツ要素またはその情報リソースの挙動をすでに変えていてもよい。その結果、クライアントデバイス125は、プレゼンテーションリストリクタ165なしの場合に比べて遅い時間にコンテンツ要素を受信した後に第1のコンテンツ要素に対する確認応答を伝送することを行わされ得る。挙動の変更を考慮するために、干渉検出器605はデータベース615にアクセスして、クライアントデバイス125からの第1のコンテンツ要素に対する確認応答の受信の実際の時間を識別することができる。干渉検出器605は、クライアントデバイス125への情報リソースの伝送からクライアントデバイス125からの確認応答の受信までの間に経過した実際の時間を識別することもできる。干渉検出器605は、任意の数の係数を使用してクライアントデバイス125からの確認応答の受信の予想時間を決定または計算することができる。これらの係数は、ほかにもあるがとりわけ、ネットワーク105のネットワーク帯域幅、ネットワーク105に対するネットワーク待ち時間、クライアントデバイス125に対するデバイスタイプ、およびクライアントデバイス125のデバイス構成パラメータを含み得る。干渉検出器605は、クライアントデバイス125への情報リソースの伝送からクライアントデバイス125からの確認応答の受信までの間に経過した予想時間を決定するか、または計算することもできる。干渉検出器605は、第1のコンテンツ要素に対する確認応答の予想時間と実際の時間とを比較することができる。いくつかの実装形態において、干渉検出器605は、第1のコンテンツ要素に対する確認応答の受信の予想時間と実際の時間との間の差を計算することができる。干渉検出器605が、その差が所定の閾値以上であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決定することができる。干渉検出器605が、その差が所定の閾値未満であると決定した
場合、干渉検出器605は、情報上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
いくつかの実装形態において、干渉検出器605は、クライアントデバイス125のサブセットからの第1のコンテンツ要素に関する挙動の差を識別して、情報リソース上の第1のコンテンツ要素への干渉を決定することができる。クライアントデバイス125の第1のサブセットは、プレゼンテーションリストリクタ165を実行するか、または情報リソースおよびそのコンテンツ要素を処理する際に別のしかたでプレゼンテーションリストリクタ165の影響を受け得る。その一方で、クライアントデバイス125の第2のサブセットは、プレゼンテーションリストリクタ165をその上で実行させていない場合がある。そのようなものとして、クライアントデバイス125の第1のサブセットは、クライアントデバイス125の第2のサブセットと比べて、コンテンツ要素を処理し、解析するのに費やす時間の長さが様々であり得る。挙動の違いを考慮するために、各クライアントデバイス125について、干渉検出器605は、第1のコンテンツ要素の伝送の時間、コンテンツを求める要求の受信の時間、および確認応答の受信の時間を識別することができる。識別された値をパラメータとして使用することで、干渉検出器605は、クラスタ化アルゴリズム(たとえば、k近傍アルゴリズム、期待値最大化など)を適用して、クライアントデバイス125のサブセットを識別することができる。各サブセットについて、干渉検出器605は、第1のコンテンツ要素の伝送の時間、コンテンツを求める要求の受信の時間、および確認応答の受信の時間に対する平均値を計算することができる。干渉検出器605は、クラスタ化アルゴリズムを使用して識別されたクライアントデバイス125のサブセットにまたがって平均値の差を計算することができる。干渉検出器605は、その差を所定のマージンと比較することができる。干渉検出器605が、その差が所定のマージン以上であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決定することができる。干渉検出器605が、その差が所定のマージン未満であると決定した場合、干渉検出器605は、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がないと決定することができる。
情報リソース上の第1のコンテンツ要素のレンダリングの干渉の検出に応答して、コンテンツモディファイア610は、第1のコンテンツ要素に基づきその後の情報リソースに対する第2のコンテンツ要素を生成することができる。第2のコンテンツ要素は、第1のビットストリームと異なる第2のビットストリームに対応し得る。プレゼンテーションリストリクタ165が各コンテンツ要素に対する要素識別子を生成するためにビットストリームのハッシュ値を計算すると、第1のビットストリームと異なる第2のビットストリームは、レンダリングベースの制限ポリシーを(たとえば、画像処理アルゴリズムを使用して)プレゼンテーションリストリクタ165に再実行させて第2のコンテンツ要素を解析するものとしてよい。コンテンツ制限ポリシーを異なるビットストリームで様々なコンテンツ要素に適用するかどうかを決定するためにレンダリングベースの制限ポリシーを繰り返し適用することで、プレゼンテーションリストリクタ165を実行するデバイスのパフォーマンスが低下し得る。このために、コンテンツモディファイア610は、コンテンツ修正ポリシーに従って任意の数の技術および技術の組合せを使用して第1のビットストリームと異なる第2のビットストリームにより第2の要素を生成するように第1のコンテンツ要素を修正することができる。
コンテンツモディファイア610によって生成される第2のコンテンツ要素は、第1のコンテンツ要素と見掛けが異なって見えるが、同じ情報を伝えるものとしてよく(たとえば、異なる背景色を有する同じテキストまたは異なる境界幅を有する同じ画像)、その結果、第1のビットストリームから第2のビットストリームに変わる。いくつかの実装形態において、コンテンツモディファイア610は、第1のコンテンツ要素の視覚的特性(たとえば、フォント、フォントサイズ、背景色、境界幅、寸法、情報リソース上の位置など)を修正して、第2のコンテンツ要素を生成することができる。視覚的特性の修正の結果、第1のビットストリームから第2のビットストリームへの変化が生じ得る。コンテンツモディファイア610は、データベース615から第1のコンテンツ要素の視覚的特性を識別することができる。コンテンツモディファイア610は、コンテンツ修正ポリシーに従って第1のコンテンツ要素の視覚的特性を既定値と異なる値に設定することができる。コンテンツ修正ポリシーでは、既定値に基づき視覚的特性のどの値を設定するかを指定し得る(たとえば、背景色を明るい緑色から明るい青色に変更する)。
コンテンツモディファイア610によって生成される第2のコンテンツ要素は、第1のコンテンツ要素に見掛けが類似しているように見え、同じ情報を伝えるが、異なる機能挙動を有し、第1のビットストリームから第2のビットストリームへの変更を引き起こし得る。いくつかの実装形態において、コンテンツモディファイア610は、第1のコンテンツ要素のファイルパス名を修正して、第2のコンテンツ要素を生成することができる。ファイルパス名は、第1のコンテンツ要素の送信元アドレスに対応することができる。ファイルパス名は、プロトコル(たとえば、http、https、ftpなど)、ホスト名(たとえば、www.example.com)、およびファイル名(たとえば、/samplecontent.html)を含むことができる。コンテンツモディファイア610は、ファイルパス名からプロトコル、ホスト名、およびファイル名を識別することができる。いくつかの実装形態において、コンテンツモディファイア610は、ホスト名およびファイル名のうちの一方を修正して、第2のコンテンツ要素を生成することができる。コンテンツモディファイア610は、修正されたファイルパス名を有する第1のコンテンツ要素を複製するか、または再生成し、第2のコンテンツ要素を作成することができる。いくつかの実装形態において、コンテンツモディファイア610は、第1のコンテンツ要素のリダイレクトリンクを修正して、第2のコンテンツ要素を生成することができる。リダイレクトリンクは、第1のコンテンツ要素に含まれる送信元アドレスを含むものとしてよく、送信元アドレスに対応するコンテンツをクライアントデバイス125上で実行されるアプリケーション160に取り出させるように構成され得る。コンテンツモディファイア610は、第1のコンテンツ要素のリダイレクトリンクを識別することができる。コンテンツモディファイア610は、修正されたリダイレクトリンクを有する第1のコンテンツ要素を複製するか、または再生成し、第2のコンテンツ要素を作成することができる。
コンテンツモディファイア610によって生成される第2のコンテンツ要素は、結果として第1のビットストリームから第2のビットストリームへの変化を引き起こす第1のコンテンツ要素のコードまたはマークアップと異なるコードまたはマークアップに対応し得る。コンテンツモディファイア610は、第1のコンテンツ要素または第1のコンテンツ要素に関連付けられている情報リソースに対応するコードセグメントを修正して第2のコンテンツ要素を生成することができる。コードセグメントは、第1のコンテンツ要素に関連付けられている1つまたは複数のスクリプトを含み得る。コンテンツモディファイア610は、第1のコンテンツ要素の修正によりコードセグメントを複製するか、または再生成し、第2のコンテンツ要素を作成することができる。
いくつかの実装形態において、コンテンツモディファイア610は、第1のコンテンツ要素のコードセグメントから確認応答コードを識別することができる。コンテンツモディファイア610は、第1のコンテンツ要素のコードセグメントからの確認応答コードを修正し、第2のコンテンツ要素を生成することができる。確認応答コードは、クライアントデバイス125によって受信され、その上で実行されているアプリケーション160によって処理されると、確認応答(たとえば、pingback)をデータ処理システム110またはコンテンツプロバイダデバイス115に伝送することをクライアントデバイス125に行わせるものとしてよい。
いくつかの実装形態において、コンテンツモディファイア610は、情報リソースのコードセグメントからコンテンツ要求コードを識別することができる。コンテンツモディファイア610は、情報リソースのコードセグメントからのコンテンツ要求コードを修正し、第2のコンテンツ要素を生成することができる。コンテンツ要求コードは、クライアントデバイス125によって受信され、その上で実行されているアプリケーション160によって処理されると、コンテンツを求める要求をデータ処理システム110またはコンテンツプロバイダデバイス115に伝送してコンテンツ要素を情報リソース内に挿入することをクライアントデバイス125に行わせるものとしてよい。
いくつかの実装形態において、コンテンツモディファイア610は、付加コードを第1のコンテンツ要素に対するコードセグメント内に追加、挿入、または付加して第2のコンテンツ要素を生成することができる。付加コードは、第1のコンテンツ要素に関して第2のコンテンツ要素の挙動を変更も変えもしない非機能コードであってよい。付加コードは、結果として、第1のビットストリームから第2のビットストリームへの変化を引き起こし得る。
実際、ビットストリームが変えられているかどうかを検証するために、コンテンツモディファイア610は、第1のコンテンツ要素に対する第2のビットストリームが第1のコンテンツ要素に対する第1のビットストリームと異なるかどうかを決定することができる。コンテンツモディファイア610は、第1のコンテンツ要素に対応する第1のビットストリームを識別することができる。コンテンツモディファイア610は、第2のコンテンツ要素に対応する第2のビットストリームを識別することができる。コンテンツモディファイア610は、第1のビットストリームと第2のビットストリームとの間で異なるビットの数を識別するか、または決定することができる。コンテンツモディファイア610は、異なるビットの数を閾値数と比較することができる。コンテンツモディファイア610が、異なるビットの数が閾値数以上であると決定した場合、コンテンツモディファイア610は、クライアントデバイス125への第2のコンテンツ要素の伝送または提供を許可することができる。コンテンツモディファイア610が、異なるビットの数が閾値数未満であると決定した場合、コンテンツモディファイア610は、クライアントデバイス125への第2のコンテンツ要素の提供のための伝送を制限することができる。コンテンツモディファイア610は、また、第1のコンテンツ要素の修正を再実行し、別のコンテンツ要素を生成することができる。
いくつかの実装形態において、コンテンツモディファイア610は、第1のビットストリームと第2のビットストリームとの間で異なるビットの分布を識別することができる。コンテンツモディファイア610は、異なるビットの分布を所定の閾値と比較することができる。コンテンツモディファイア610が、異なるビットの分布が所定の閾値以上であると決定した場合、コンテンツモディファイア610は、クライアントデバイス125への第2のコンテンツ要素の伝送または提供を許可することができる。コンテンツモディファイア610が、異なるビットの分布が所定の閾値未満であると決定した場合、コンテンツモディファイア610は、クライアントデバイス125への第2のコンテンツ要素の提供のための伝送を制限することができる。コンテンツモディファイア610は、また、第1のコンテンツ要素の修正を再実行し、別のコンテンツ要素を生成することができる。
第2のコンテンツ要素が生成された場合、コンテンツモディファイア610は、クライアントデバイス125に、第2のコンテンツ要素を含むその後の情報リソースを伝送することができる。いくつかの実装形態において、データ処理システム110は、クライアントデバイス125から、情報リソースを求める要求を受信することができる。要求の受信に応答して、データ処理システム110はその後の情報リソースを伝送することができる。いくつかの実装形態において、データ処理システム110は、クライアントデバイス125から、情報リソース内に挿入するコンテンツを求める要求を受信することができる。コンテンツを求める要求に応答して、コンテンツモディファイア610は、クライアントデバイス125に、その後の情報リソースに含まれる第2のコンテンツ要素を伝送することができる。第2のコンテンツ要素が第1のビットストリームと異なるような第2のビットストリームに対応している場合、クライアントデバイス125による第2のコンテンツ要素の受信は、レンダリングベースの制限ポリシーを適用することをクライアントデバイス125上で実行されるプレゼンテーションリストリクタ165に行わせるものとしてよい。
次に図7を参照すると、図7は、例示的な一実装形態による、情報リソースの完全性に干渉するスクリプトに対する対抗手段をデプロイするためのシステム600によって修正された情報リソースのコンテンツ要素のフロープロセス700を示すブロック図である。図7に対するフロープロセス700で示されているように、情報リソース205は、第1のコンテンツ要素210A、第2のコンテンツ要素210B、および第3のコンテンツ要素210Cを含み得る。第1のコンテンツ要素210A、第2のコンテンツ要素210B、および第3のコンテンツ要素210Cの各々は、2進数列またはビットストリーム(16進形式で表される)に対応するものとしてよい。第1のコンテンツ要素210Aは、ビットストリーム705(たとえば、「xA86D」)に対応するものとしてよい。
図6の文脈において、プレゼンテーションリストリクタ165は、コンテンツ制限ポリシーを第1のコンテンツ要素210Aにすでに適用しているものとしてよく、それによってクライアントデバイス125において情報リソース205上のコンテンツ要素210Aのレンダリングに干渉する。本明細書において説明されている技術を使用することで、干渉検出器605は、第1のコンテンツ要素210Aのレンダリングの干渉を検出することができる。第1のコンテンツ要素210Aへの干渉を検出した場合、コンテンツモディファイア610は第1のコンテンツ要素210Aを修正して異なるバージョンのコンテンツ要素210A'を生成することができる。コンテンツ要素210Aの修正の結果、ビットストリーム705への変更が生じ得る。コンテンツ要素210Aに対応するビットストリーム705(「xA86D」)は、修正されたコンテンツ要素210A'に対応する別のビットストリーム705'(「xA863」)に変更され得る。コンテンツ要素210Aに対するビットストリーム705に対する変更は、レンダリングベースの制限ポリシー(たとえば、画像処理アルゴリズム)を再実行することをクライアントデバイス125上で実行されるプレゼンテーションリストリクタ165に行わせ得る。これは、次いで、結果として、クライアントデバイス125およびプレゼンテーションリストリクタ165のパフォーマンスを低下させる可能性がある。
次に図8を参照すると、図8は、例示的な一実装形態による、情報リソースの完全性に干渉するスクリプトに対する対抗手段の方法800を示す流れ図である。方法800に関して本明細書において説明されている機能は、図1に示されているようなシステム100、図6に示されているようなシステム600、または図10に示されているようなコンピューティングデバイス、またはこれらの任意の組合せによって実行されるか、または他の何らかの形で実行されてよい。手短に概要を述べると、データ処理システムは、クライアントデバイスにすでに伝送されている情報リソース上の第1のコンテンツ要素を識別することができる(ブロック805)。第1のコンテンツ要素は、第1のビットストリームを有することができる。データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉を決定することができる(ブロック810)。データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉の決定に応答して、第1のコンテンツ要素に基づきその後の情報リソースに対する第2のコンテンツ要素を生成することができる(ブロック815)。第2のコンテンツ要素は、第1のビットストリームと異なる第2のビットストリームを有することができる。データ処理システムは、クライアントデバイスに、第2のコンテンツ要素を含むその後の情報リソースを伝送することができる(ブロック820)。第2のコンテンツ要素の受信は、クライアントデバイス上で実行しているコンテンツ制限スクリプトがレンダリングベースの制限ポリシーを第1のビットストリームと異なる第2のビットストリームに応答して適用することを引き起こし得る。
さらに詳しく述べると、データ処理システムは、クライアントデバイスにすでに伝送されている情報リソース上の第1のコンテンツ要素を識別することができる(ブロック805)。第1のコンテンツ要素は、第1のビットストリームを有することができる。情報リソースの完全性を保存するために、データ処理システムは、情報リソース上の第1のコンテンツ要素を識別することができる。情報リソースおよび第1のコンテンツ要素は、ネットワークに接続されているクライアントデバイスにすでに伝送されるかまたは提供されていてもよい。情報リソースは、2進数列に対応するものとしてよい。第1のコンテンツは、第1のビットストリームに対応し得る。クライアントデバイス、プロキシデバイス、またはリモートコンテンツリストリクタデバイス上で実行されるプレゼンテーションリストリクタ(または他のコンテンツ制御モジュール)は、第1のコンテンツ要素を情報リソース上に提示すること、または入れることにすでに干渉しているものとしてよい。いくつかの実装形態において、プレゼンテーションリストリクタは、本明細書のセクションBにおいて詳述されているように、コンテンツ制限ポリシーを情報リソース上の第1のコンテンツ要素にすでに適用しているものとしてよい。
いくつかの実装形態において、データ処理システムは、さらなる解析のために情報リソースに含まれるコンテンツ要素のサブセットを識別することができる。データ処理システムは、情報リソースに含まれる各コンテンツ要素に対する要素タイプを識別する。要素タイプは、ほかにもあるがとりわけ、本文、段落、区分、セクション、インラインフレーム、画像、キャンバス、アプレット、スクリプト、オーディオ、ビデオ、テーブル、およびリストのうちの1つを含み得る。要素タイプは、HTMLタグ(たとえば、インラインフレームに対して「<iframe>」)に対応し得る。さらに解析されるべき要素タイプは、プレゼンテーションリストリクタによって修正される可能性が最も高いタイプ(たとえば、インラインフレーム、オーディオ、ビデオ、画像など)を含み得る。データ処理システムは、要素タイプとマッチするコンテンツ要素のサブセットを識別することができる。この方式で、データ処理システムは、処理されるべきコンテンツ要素の数をプレゼンテーションリストリクタによって修正される可能性が最も高いものに減らし、それによって、データ処理システムに対するコンピューティングリソースを解放し得る。
いくつかの実装形態において、データ処理システムは、情報リソースに含まれる第1のコンテンツ要素に対応するビットストリームを識別することができる。情報リソースは、2進数列(たとえば、バイト配列またはバイトストリーム)に対応するものとしてよい。情報リソースに含まれる各コンテンツ要素は、2進数列の一部に対応し得る。いくつかの実装形態において、データ処理システムは、情報リソースに対応する2進数列にアクセスすることができる。いくつかの実装形態において、データ処理システムは、コンテンツ要素のうちの1つに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、データ処理システムは、さらに解析されるべき要素タイプとマッチするものとして識別されているコンテンツ要素のサブセットに対応する2進数列の部分にアクセスすることができる。いくつかの実装形態において、データ処理システムは、情報リソースおよびコンテンツ要素に対するデータベース、ならびに対応する2進数列にアクセスすることができる。
データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉を決定することができる(ブロック810)。コンテンツ要素が情報リソース上で識別された場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉を決定することができる。第1のコンテンツ要素のレンダリングへの干渉は、クライアントデバイス上で任意の方式によりコンテンツ要素の表示またはプレゼンテーションを無効化すること、抑制すること、または他の何らかの形で修正することを含み得る。干渉は、クライアントデバイス、プロキシデバイス、またはリモートコンテンツリストリクタデバイス150上でプレゼンテーションリストリクタが実行されることにより生じ得る。データ処理システムは、任意の数の技術または技術の組合せを使用して、プレゼンテーションリストリクタによるそのような干渉の発生を決定することができる。
コンテンツ要素の伝送の時間および確認応答の時間を使用することで、データ処理システムは、情報リソース上のコンテンツ要素のレンダリングへの干渉を決定することができる。各情報リソースは、情報リソース内にコンテンツを挿入することを要求するための要求スクリプトを含み得る。情報リソースの受信に応答して、要求スクリプトは、コンテンツを求める要求をデータ処理システムに伝送することをクライアントデバイスに行わせ得る。各コンテンツ要素は、確認応答スクリプトを含み得る。コンテンツ要素を受信すると、確認応答スクリプトは、確認応答(たとえば、pingback)をデータ処理システムまたはコンテンツプロバイダデバイスに伝送するか、または送り返すことをアプリケーション160を実行しているクライアントデバイスに行わせるものとしてよい。コンテンツ要素の伝送の時間およびコンテンツまたは確認応答を求める要求の受信の時間は、データベースに記憶され得る。
クライアントデバイスへのコンテンツ要素の伝送の時間、クライアントデバイスからのコンテンツ要素に関連付けられているコンテンツを求める要求の受信の時間、およびクライアントデバイスからの確認応答の受信の時間に不規則が見られる場合、これは、クライアントデバイスにおいてプレゼンテーションリストリクタが実行されていることを示し得る。クライアントデバイス上でプレゼンテーションリストリクタの機能を実行すると、プレゼンテーションリストリクタがない場合に比べて、確認応答の受信の時間が長くなることがある。データ処理システムは、コンテンツ要素のレンダリングが干渉されたかどうかを決定する際にコンテンツ要素および情報リソースの伝送ならびにコンテンツ要素に関連付けられている確認応答の受信に関係する様々な時間を比較することができる。この比較は、リアルタイムで、または指定された時間間隔で実行されてよい。
いくつかの実装形態において、データ処理システムは、コンテンツを求める要求を受信しなかったことまたはクライアントデバイスから第1のコンテンツ要素に対する確認応答を受信しなかったことから情報リソース上に第1のコンテンツ要素をレンダリングすることへの干渉の発生を決定することができる。コンテンツを求める要求を受信しなかったことまたはクライアントデバイスから第1のコンテンツ要素に対する確認応答を受信しなかったことは、プレゼンテーションリストリクタが第1のコンテンツ要素またはその情報リソースの挙動を変えたことを示しているものとしてよい。そのために、各コンテンツ要素について、データ処理システムはデータベースにアクセスして、情報リソースがクライアントデバイスに伝送または提供されたかどうかを決定することができる。データ処理システムは、第1のコンテンツ要素に関連付けられているコンテンツを求める要求がクライアントデバイスから受信されたかどうかを決定することができる。コンテンツを求める要求がクライアントデバイスから受信された場合、データ処理システムは、第1のコンテンツ要素の干渉を決定するために、ほかにもあるがとりわけ、その要求の受信の時間を解析することができる。コンテンツを求める要求がクライアントデバイスから受信されなかった場合、データ処理システムは、クライアントデバイス上の情報リソースに第1のコンテンツ要素をレンダリングすることに対する干渉が発生したと決定することができる。各コンテンツ要素について、データ処理システムは、データベースにアクセスして、第1のコンテンツ要素に関連付けられている確認応答がクライアントデバイスから受信されたかどうかを決定することもできる。確認応答がクライアントデバイスから受信された場合、データ処理システムは、第1のコンテンツ要素の干渉を決定するために、ほかにもあるがとりわけ、確認応答の時間を解析することができる。確認応答がクライアントデバイスから受信されなかった場合、データ処理システムは、クライアントデバイス上の情報リソースに第1のコンテンツ要素をレンダリングすることに対する干渉が発生したと決定することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素をクライアントデバイスに伝送したときからクライアントデバイスから第1のコンテンツ要素に対する確認応答を受信したときまでの間に経過した時間を比較して、干渉の発生を決定することができる。データ処理システムは、確認応答の伝送の時間および受信の時間についてデータベースにアクセスする。データ処理システムは、クライアントデバイスへの第1のコンテンツ要素の伝送の時間を識別することができる。第1のコンテンツ要素の伝送の時間は、データ処理システムまたはコンテンツプロバイダデバイスが第1のコンテンツ要素をクライアントデバイスに伝送するか、または他の何らかの方法で提供した時間に対応し得る。データ処理システムは、肯定応答の受信の時間を識別することができる。肯定応答の受信の時間は、第1のコンテンツ要素を処理するクライアントデバイスが確認応答をデータ処理システムまたはコンテンツプロバイダデバイスに伝送して送り返した時間に対応するものとしてよい。データ処理システムは、第1のコンテンツ要素を伝送したときから確認応答を受信したときまでの間に経過した時間を計算することができる。データ処理システムは、経過した計算された時間を所定の閾値と比較することができる(たとえば、マイクロ秒からミリ秒の範囲)。データ処理システムが、経過した計算された時間が所定の閾値以上であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。データ処理システムが、経過した計算された時間が所定の閾値未満であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなくなったと決定することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素を多数のクライアントデバイスに伝送したときからクライアントデバイスから確認応答を受信したときまでの間に経過した平均時間を比較して、干渉の発生を決定することができる。データ処理システムは、各クライアントデバイスに対する確認応答の伝送の時間および受信の時間についてデータベースにアクセスする。データ処理システムは、複数のクライアントデバイスにまたがって第1のコンテンツ要素を伝送したときから確認応答を受信したときまでの間に経過した平均時間を計算することができる。データ処理システムは、経過した平均時間を所定の閾値と比較することができる(たとえば、マイクロ秒からミリ秒の範囲)。データ処理システムが、経過した平均時間が所定の閾値以上であると決定した場合、データ処理システムは、多数のクライアントデバイスにまたがって情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉の発生があったと決定することができる。データ処理システムが、経過した平均時間が所定の閾値未満であると決定した場合、データ処理システムは、複数のクライアントデバイスにまたがって情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなかったと決定することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素の第1の伝送と第2の伝送との間に経過した第1の時間を、第1のコンテンツ要素に対する確認応答の第1の受信と第2の受信との間に経過した第2の時間と比較することができる。経過した第1の時間と経過した第2の時間との差は、プレゼンテーションリストリクタが、第1のコンテンツ要素を情報リソース上にレンダリングまたは挿入することを妨げている可能性があることを示し得る。プレゼンテーションリストリクタは、第1のコンテンツ要素の第1の受信の後に、レンダリングベースの制限ポリシー(たとえば、画像処理技術)を使用して、第1のコンテンツ要素を解析し、コンテンツ制限ポリシーをコンテンツ要素に適用するかどうかを決定していてもよい。その後、プレゼンテーションリストリクタは、ハッシュ関数を使用して、第1のコンテンツ要素が制限コンテンツデータベース上の要素識別子に対応するかどうかを識別していてもよい。画像処理アルゴリズムの実行は、ハッシュ値の計算に比べて時間がかかることがある。
第1のコンテンツ要素の伝送から肯定応答の受信までの間の時間間隔の差を識別するために、データ処理システムは、クライアントデバイスへの第1のコンテンツ要素の伝送の第1の時間を識別することができる。データ処理システムは、クライアントデバイスからの第1のコンテンツ要素に対する第1の確認応答の受信の第1の時間を識別することができる。データ処理システムは、クライアントデバイスへの第1のコンテンツ要素の伝送の第1の時間からコンテンツ要素に対する第1の確認応答の受信の第1の時間までの間に経過した第1の時間を計算することができる。データ処理システムは、クライアントデバイスへの第1のコンテンツ要素の伝送の第2の時間を識別することができる。データ処理システムは、クライアントデバイスからの第1のコンテンツ要素に対する第2の確認応答の受信の第2の時間を識別することができる。データ処理システムは、クライアントデバイスへの第1のコンテンツ要素の伝送の第2の時間からクライアントデバイスからのコンテンツ要素に対する第2の確認応答の受信の第2の時間までの間に経過した第2の時間を計算することができる。いくつかの実装形態において、経過した第1の時間および経過した第2の時間は、複数のクライアントデバイスにまたがる第1のコンテンツ要素の伝送の時間と確認応答の受信の時間とを使用して計算され得る。データ処理システムは、経過した第1の時間と経過した第2の時間との間の差を計算することができる。データ処理システムは、その差を所定の閾値と比較することができる。データ処理システムが、この差が所定の閾値以上であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。データ処理システムが、この差が所定の閾値未満であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなくなったと決定することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素を求める要求の受信の予想時間を第1のコンテンツ要素を求める要求の受信の実際の時間と比較して、第1のコンテンツ要素のレンダリングへの干渉を決定することができる。クライアントデバイス上で実行されるプレゼンテーションリストリクタは、コンテンツ要素またはその情報リソースの挙動をすでに変えていてもよい。その結果、クライアントデバイスは、プレゼンテーションリストリクタなしの場合に比べて遅い時間に情報リソースを受信した後に第1のコンテンツ要素を求める要求を伝送することを行わされ得る。挙動の変更を考慮するために、データ処理システムはデータベースにアクセスして、クライアントデバイスから第1のコンテンツ要素を情報リソース上に挿入するためにコンテンツを求める要求を受信する実際の時間を識別することができる。データ処理システムは、クライアントデバイスへの情報リソースの伝送からクライアントデバイスからのコンテンツを求める要求の受信までの間に経過した実際の時間を識別することもできる。データ処理システムは、任意の数の係数を使用してクライアントデバイスからのコンテンツ要素に関連付けられているコンテンツを求める要求の受信の予想時間を決定または計算することができる。これらの係数は、ほかにもあるがとりわけ、ネットワークのネットワーク帯域幅、ネットワークに対するネットワーク待ち時間、クライアントデバイスに対するデバイスタイプ、およびクライアントデバイスのデバイス構成パラメータを含み得る。データ処理システムは、クライアントデバイスへの情報リソースの伝送からクライアントデバイスからのコンテンツを求める要求の受信までの間に経過した予想時間を決定または計算することもできる。データ処理システムは、コンテンツを求める要求の受信の予想時間と実際の時間とを比較することができる。いくつかの実装形態において、データ処理システムは、コンテンツを求める要求の受信の予想時間と実際の時間との間の差を計算することができる。データ処理システムが、この差が所定の閾値以上であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。データ処理システムが、この差が所定の閾値未満であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなくなったと決定することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素に対する確認応答の受信の予想時間を第1のコンテンツ要素に対する確認応答の受信の実際の時間と比較して、第1のコンテンツ要素のレンダリングへの干渉を決定することができる。クライアントデバイス上で実行されるプレゼンテーションリストリクタは、コンテンツ要素またはその情報リソースの挙動をすでに変えていてもよい。その結果、クライアントデバイスは、プレゼンテーションリストリクタなしの場合に比べて遅い時間にコンテンツ要素を受信した後に第1のコンテンツ要素に対する確認応答を伝送することを行わされ得る。挙動の変更を考慮するために、データ処理システムはデータベースにアクセスして、クライアントデバイスからの第1のコンテンツ要素に対する確認応答の受信の実際の時間を識別することができる。データ処理システムは、クライアントデバイスへの情報リソースの伝送からクライアントデバイスからの確認応答の受信までの間に経過した実際の時間を識別することもできる。データ処理システムは、任意の数の係数を使用してクライアントデバイスからの確認応答の受信の予想時間を決定または計算することができる。これらの係数は、ほかにもあるがとりわけ、ネットワークのネットワーク帯域幅、ネットワークに対するネットワーク待ち時間、クライアントデバイスに対するデバイスタイプ、およびクライアントデバイスのデバイス構成パラメータを含み得る。データ処理システムは、クライアントデバイスへの情報リソースの伝送からクライアントデバイスからの確認応答の受信までの間に経過した予想時間を決定または計算することもできる。データ処理システムは、第1のコンテンツ要素に対する確認応答の予想時間と実際の時間とを比較することができる。いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素に対する確認応答の受信の予想時間と実際の時間との間の差を計算することができる。データ処理システムが、この差が所定の閾値以上であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。データ処理システムが、この差が所定の閾値未満であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなくなったと決定することができる。
いくつかの実装形態において、データ処理システムは、クライアントデバイスのサブセットからの第1のコンテンツ要素に関する挙動の差を識別して、情報リソース上の第1のコンテンツ要素への干渉を決定することができる。クライアントデバイスの第1のサブセットは、プレゼンテーションリストリクタを実行するか、または情報リソースおよびそのコンテンツ要素を処理する際に別のしかたでプレゼンテーションリストリクタの影響を受け得る。その一方で、クライアントデバイスの第2のサブセットは、プレゼンテーションリストリクタをその上で実行させていない場合がある。そのようなものとして、クライアントデバイスの第1のサブセットは、クライアントデバイスの第2のサブセットと比べて、コンテンツ要素を処理し、解析するのに費やす時間の長さが様々であり得る。挙動の違いを考慮するために、各クライアントデバイスについて、データ処理システムは、第1のコンテンツ要素の伝送の時間、コンテンツを求める要求の受信の時間、および確認応答の受信の時間を識別することができる。識別された値をパラメータとして使用することで、データ処理システムは、クラスタ化アルゴリズム(たとえば、k近傍アルゴリズム、期待値最大化など)を適用して、クライアントデバイスのサブセットを識別することができる。各サブセットについて、データ処理システムは、第1のコンテンツ要素の伝送の時間、コンテンツを求める要求の受信の時間、および確認応答の受信の時間に対する平均値を計算することができる。データ処理システムは、クラスタ化アルゴリズムを使用して識別されたクライアントデバイスのサブセットにまたがって平均値の差を計算することができる。データ処理システムは、その差を所定のマージンと比較することができる。データ処理システムが、この差が所定のマージン以上であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉が発生したと決定することができる。データ処理システムが、この差が所定のマージン未満であると決定した場合、データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングに対して干渉がなくなったと決定することができる。
データ処理システムは、情報リソース上の第1のコンテンツ要素のレンダリングへの干渉の決定に応答して、第1のコンテンツ要素に基づきその後の情報リソースに対する第2のコンテンツ要素を生成することができる(ブロック815)。第2のコンテンツ要素は、第1のビットストリームと異なる第2のビットストリームを有することができる。情報リソース上の第1のコンテンツ要素のレンダリングの干渉の検出に応答して、データ処理システムは、第1のコンテンツ要素に基づきその後の情報リソースに対する第2のコンテンツ要素を生成することができる。第2のコンテンツ要素は、第1のビットストリームと異なる第2のビットストリームに対応し得る。プレゼンテーションリストリクタが各コンテンツ要素に対する要素識別子を生成するためにビットストリームのハッシュ値を計算すると、第1のビットストリームと異なる第2のビットストリームは、レンダリングベースの制限ポリシーを(たとえば、画像処理アルゴリズムを使用して)プレゼンテーションリストリクタに再実行させて第2のコンテンツ要素を解析するものとしてよい。コンテンツ制限ポリシーを異なるビットストリームで様々なコンテンツ要素に適用するかどうかを決定するためにレンダリングベースの制限ポリシーを繰り返し適用することで、プレゼンテーションリストリクタを実行するデバイスのパフォーマンスが低下し得る。このために、データ処理システムは、コンテンツ修正ポリシーに従って任意の数の技術および技術の組合せを使用して第1のビットストリームと異なる第2のビットストリームにより第2の要素を生成するように第1のコンテンツ要素を修正することができる。
データ処理システムによって生成される第2のコンテンツ要素は、第1のコンテンツ要素と見掛けが異なって見えるが、同じ情報を伝えるものとしてよく(たとえば、異なる背景色を有する同じテキストまたは異なる境界幅を有する同じ画像)、その結果、第1のビットストリームから第2のビットストリームに変わる。いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素の視覚的特性(たとえば、フォント、フォントサイズ、背景色、境界幅、寸法、情報リソース上の位置など)を修正して、第2のコンテンツ要素を生成することができる。視覚的特性の修正の結果、第1のビットストリームから第2のビットストリームへの変化が生じ得る。データ処理システムは、データベースから第1のコンテンツ要素の視覚的特性を識別することができる。データ処理システムは、コンテンツ修正ポリシーに従って第1のコンテンツ要素の視覚的特性を既定値と異なる値に設定することができる。コンテンツ修正ポリシーでは、既定値に基づき視覚的特性のどの値を設定するかを指定し得る(たとえば、背景色を明るい緑色から明るい青色に変更する)。
データ処理システムによって生成される第2のコンテンツ要素は、第1のコンテンツ要素に見掛けが類似しているように見え、同じ情報を伝えるが、異なる機能挙動を有し、第1のビットストリームから第2のビットストリームへの変更を引き起こし得る。いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素のファイルパス名を修正して、第2のコンテンツ要素を生成することができる。ファイルパス名は、第1のコンテンツ要素の送信元アドレスに対応することができる。ファイルパス名は、プロトコル(たとえば、http、https、ftpなど)、ホスト名(たとえば、www.example.com)、およびファイル名(たとえば、/samplecontent.html)を含むことができる。データ処理システムは、ファイルパス名からプロトコル、ホスト名、およびファイル名を識別することができる。いくつかの実装形態において、データ処理システムは、ホスト名およびファイル名のうちの一方を修正して、第2のコンテンツ要素を生成することができる。データ処理システムは、修正されたファイルパス名を有する第1のコンテンツ要素を複製するか、または再生成し、第2のコンテンツ要素を作成することができる。いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素のリダイレクトリンクを修正して、第2のコンテンツ要素を生成することができる。リダイレクトリンクは、第1のコンテンツ要素に含まれる送信元アドレスを含むものとしてよく、送信元アドレスに対応するコンテンツをクライアントデバイス上で実行されるアプリケーション160に取り出させるように構成され得る。データ処理システムは、第1のコンテンツ要素のリダイレクトリンクを識別することができる。データ処理システムは、修正されたリダイレクトリンクを有する第1のコンテンツ要素を複製するか、または再生成し、第2のコンテンツ要素を作成することができる。
データ処理システムによって生成される第2のコンテンツ要素は、結果として第1のビットストリームから第2のビットストリームへの変化を引き起こす第1のコンテンツ要素のコードまたはマークアップと異なるコードまたはマークアップに対応し得る。データ処理システムは、第1のコンテンツ要素または第1のコンテンツ要素に関連付けられている情報リソースに対応するコードセグメントを修正して第2のコンテンツ要素を生成することができる。コードセグメントは、第1のコンテンツ要素に関連付けられている1つまたは複数のスクリプトを含み得る。データ処理システムは、第1のコンテンツ要素の修正によりコードセグメントを複製するか、または再生成し、第2のコンテンツ要素を作成することができる。
いくつかの実装形態において、データ処理システムは、第1のコンテンツ要素のコードセグメントから確認応答コードを識別することができる。データ処理システムは、第1のコンテンツ要素のコードセグメントからの確認応答コードを修正し、第2のコンテンツ要素を生成することができる。確認応答コードは、クライアントデバイスによって受信され、その上で実行されているアプリケーション160によって処理されると、確認応答(たとえば、pingback)をデータ処理システムまたはコンテンツプロバイダデバイスに伝送することをクライアントデバイスに行わせるものとしてよい。
いくつかの実装形態において、データ処理システムは、情報リソースのコードセグメントからコンテンツ要求コードを識別することができる。データ処理システムは、情報リソースのコードセグメントからのコンテンツ要求コードを修正し、第2のコンテンツ要素を生成することができる。コンテンツ要求コードは、クライアントデバイスによって受信され、その上で実行されているアプリケーション160によって処理されると、コンテンツを求める要求をデータ処理システムまたはコンテンツプロバイダデバイスに伝送してコンテンツ要素を情報リソース内に挿入することをクライアントデバイスに行わせるものとしてよい。
いくつかの実装形態において、データ処理システムは、付加コードを第1のコンテンツ要素に対するコードセグメント内に追加、挿入、または付加して第2のコンテンツ要素を生成することができる。付加コードは、第1のコンテンツ要素に関して第2のコンテンツ要素の挙動を変更も変えもしない非機能コードであってよい。付加コードは、結果として、第1のビットストリームから第2のビットストリームへの変化を引き起こし得る。
実際、ビットストリームが変えられているかどうかを検証するために、データ処理システムは、第1のコンテンツ要素に対する第2のビットストリームが第1のコンテンツ要素に対する第1のビットストリームと異なるかどうかを決定することができる。データ処理システムは、第1のコンテンツ要素に対応する第1のビットストリームを識別することができる。データ処理システムは、第2のコンテンツ要素に対応する第2のビットストリームを識別することができる。データ処理システムは、第1のビットストリームと第2のビットストリームとの間で異なるビットの数を識別するか、または決定することができる。データ処理システムは、異なるビットの数を閾値数と比較することができる。データ処理システムが、異なるビットの数が閾値数以上であると決定した場合、データ処理システムは、クライアントデバイスへの第2のコンテンツ要素の伝送または提供を許可することができる。データ処理システムが、異なるビットの数が閾値数未満であると決定した場合、データ処理システムは、クライアントデバイスへの第2のコンテンツ要素の提供のための伝送を制限することができる。データ処理システムは、また、第1のコンテンツ要素の修正を再実行し、別のコンテンツ要素を生成することができる。
いくつかの実装形態において、データ処理システムは、第1のビットストリームと第2のビットストリームとの間で異なるビットの分布を識別することができる。データ処理システムは、異なるビットの分布を所定の閾値と比較することができる。データ処理システムが、異なるビットの分布が所定の閾値以上であると決定した場合、データ処理システムは、クライアントデバイスへの第2のコンテンツ要素の伝送または提供を許可することができる。データ処理システムが、異なるビットの分布が所定の閾値未満であると決定した場合、データ処理システムは、クライアントデバイスへの第2のコンテンツ要素の提供のための伝送を制限することができる。データ処理システムは、また、第1のコンテンツ要素の修正を再実行し、別のコンテンツ要素を生成することができる。
データ処理システムは、クライアントデバイスに、第2のコンテンツ要素を含むその後の情報リソースを伝送することができる(ブロック820)。第2のコンテンツ要素の受信は、クライアントデバイス上で実行しているコンテンツ制限スクリプトがレンダリングベースの制限ポリシーを第1のビットストリームと異なる第2のビットストリームに応答して適用することを引き起こし得る。第2のコンテンツ要素が生成された場合、データ処理システムは、クライアントデバイスに、第2のコンテンツ要素を含むその後の情報リソースを伝送することができる。いくつかの実装形態において、データ処理システムは、クライアントデバイスから、情報リソースを求める要求を受信することができる。要求の受信に応答して、データ処理システムはその後の情報リソースを伝送することができる。いくつかの実装形態において、データ処理システムは、クライアントデバイスから、情報リソース内に挿入するコンテンツを求める要求を受信することができる。コンテンツを求める要求に応答して、データ処理システムは、クライアントデバイスに、その後の情報リソースに含まれる第2のコンテンツ要素を伝送することができる。第2のコンテンツ要素が第1のビットストリームと異なる形で第2のビットストリームに対応している場合、クライアントデバイスによる第2のコンテンツ要素の受信は、レンダリングベースの制限ポリシーを適用することをクライアントデバイス上で実行されるプレゼンテーションリストリクタに行わせるものとしてよい。
次に図9を参照すると、図9は、例示的な一実装形態による、情報リソースの完全性に干渉するスクリプトに対する対抗手段の方法900を示す流れ図である。方法900に関して本明細書において説明されている機能は、図1に示されているようなシステム100、図6に示されているようなシステム600、または図10に示されているようなコンピューティングデバイス、またはこれらの任意の組合せによって実行されるか、または他の何らかの形で実行されてよい。概略を述べると、データ処理システムは、情報リソース上のコンテンツ要素を識別することができる(ブロック905)。データ処理システムは、コンテンツを求める要求が受信されたかどうかを決定することができる(ブロック910)。コンテンツを求める要求が受信された場合、データ処理システムは、コンテンツ要素に対する確認応答が受信されたかどうかを決定することができる(ブロック915)。確認応答が受信された場合、データ処理システムは、クライアントデバイスへのコンテンツ要素の伝送の時間を識別することができる(ブロック920)。データ処理システムは、クライアントデバイスからのコンテンツ要素に対する第1の確認応答の時間を識別することができる(ブロック925)。データ処理システムは、第1の確認応答の時間と伝送時間との間の差が閾値を超えるかどうかを決定することができる(ブロック930)。第1の確認応答の時間と伝送時間との間の差が閾値未満である場合、データ処理システムは、クライアントデバイスからのコンテンツ要素に対する第2の確認応答に対する時間を識別することができる(ブロック935)。データ処理システムは、第1の確認応答時間と伝送時間との間に経過した時間が第2の応答時間と伝送時間との間に経過した時間より所定のマージンだけ長いかどうかを決定することができる(ブロック940)。第1の確認応答時間と伝送時間との間に経過した時間が第2の応答時間と伝送時間との間に経過した時間より所定のマージンだけ長く、所定のマージン以下である場合に、データ処理システムは、干渉がないと決定することができる(ブロック945)。
そうでなく、コンテンツを求める要求が受信されず、コンテンツ要素に対する確認応答が受信されず、第1の確認応答時間と伝送時間との間の差が閾値より大きい場合、または第1の確認応答時間と伝送時間との間に経過した時間が第2の応答時間と伝送時間との間に経過した時間より所定のマージンだけ長い場合、データ処理システムは、コンテンツ要素への干渉が発生したと決定することができる(ブロック945)。データ処理システムは、干渉の発生を検出することができる(ブロック950)。データ処理システムは、コンテンツ要素のプロパティを識別することができる(ブロック955)。データ処理システムは、初期コンテンツ要素の識別されたプロパティから新しいコンテンツ要素を生成することができる(ブロック960)。データ処理システムは、コンテンツを求める別の要求に応答して新しいコンテンツ要素を伝送することができる(ブロック965)。
D.コンピューティングシステムのアーキテクチャ
図10は、いくつかの実装形態による、本明細書において説明されているコンピュータシステム(データ処理システム110ならびにコンテンツ要求モジュール130、リソースアセンブラモジュール135、干渉検出器605、およびコンテンツモディファイア610などのそのコンポーネント、アプリケーション205およびそのモジュール、またはプレゼンテーションリストリクタ165およびそのコンポーネント、リソースパーサー215、要素ハッシャー220、コンテンツリストリクタ225、ならびにレンダリングリストリクタ230を含む)のどれかを実装するために使用され得る例示的なコンピュータシステム1000の一般的なアーキテクチャを示している。コンピュータシステム1000は、ネットワーク105を介して情報を提供し表示するために使用され得る。図10のコンピュータシステム1000は、メモリ1025に通信可能に結合されている1つまたは複数のプロセッサ1020、1つまたは複数の通信インターフェース1005、ならびに1つまたは複数の出力デバイス1010(たとえば、1つまたは複数の表示ユニット)および1つまたは複数の入力デバイス1015を備える。プロセッサ1020は、データ処理システム110、またはコンテンツ要求モジュール130、リソースアセンブラモジュール135、干渉検出器605、およびコンテンツモディファイア610などのシステム110の他のコンポーネントに含まれていてよい。プロセッサは、クライアントデバイス125、プロキシデバイス145、アプリケーション160およびプレゼンテーションリストリクタ165およびそのコンポーネントなどのリモートコンテンツリストリクタデバイス155またはそれらのモジュール、リソースパーサー215、要素ハッシャー220、コンテンツリストリクタ225、ならびにレンダリングリストリクタ230に備えられ得る。
図10のコンピュータシステム1000では、メモリ1025は任意のコンピュータ可読記憶媒体を含むものとしてよく、それぞれのシステムについて本明細書において説明されている様々な機能を実装するためのプロセッサ実行可能命令などのコンピュータ命令、さらにはそれに関係するか、それによって生成されるか、または通信インターフェースもしくは入力デバイス(もし存在すれば)を介して受信されるデータを記憶し得る。図1のシステム110を再び参照すると、データ処理システム110は、ほかにもあるがとりわけ、1つまたは複数のコンテンツユニットのインベントリ、1つまたは複数のコンテンツユニットの予約の利用可能性に関係する情報を記憶するためのメモリ1025を備えることができる。メモリ1025は、データベース140を備えることができる。図10に示されているプロセッサ1020は、メモリ1025に記憶されている命令を実行するために使用されるものとしてよく、そうする際に、また、命令の実行に従って処理されおよび/または生成される様々な情報を、メモリから読み出すか、またはメモリに書き込むものとしてよい。
図10に示されているコンピュータシステム1000のプロセッサ1020は、命令の実行に従って様々な情報を伝送するか、または受信するために通信インターフェース1005に通信可能に結合されるか、または制御するようになされるものとしてもよい。たとえば、通信インターフェース1005は、有線もしくはワイヤレスネットワーク、バス、または他の通信手段に結合されてよく、したがって、コンピュータシステム1000が情報を他のデバイス(たとえば、他のコンピュータシステム)に伝送するか、またはそれから受信することを可能にし得る。図1または図6のシステムでは明示的に示されていないが、1つまたは複数の通信インターフェースは、システム1000のコンポーネントの間の情報の流れを円滑にする。いくつかの実装形態において、通信インターフェースは、ウェブサイトをコンピュータシステム1000の少なくともいくつかの態様へのアクセスポータルとして提供するように構成され得る(たとえば、様々なハードウェアコンポーネントまたはソフトウェアコンポーネントを介して)。通信インターフェース1005の例は、ユーザがデータ処理システム1000と通信する際に使用することができる、ユーザインターフェース(たとえば、ウェブページ)を含む。
図10に示されているコンピュータシステム1000の出力デバイス1010は、たとえば、命令の実行に関連して様々な情報が表示されるか、または他の何らかの形で知覚されることを可能にするために用意され得る。入力デバイス1015は、たとえば、ユーザが手動調整を行うこと、選択を行うこと、データを入力すること、または様々な方式のうちのどれかで命令の実行時にプロセッサとインタラクティブにやり取りすることを可能にするために備えられ得る。本明細書において説明されている様々なシステムに使用され得る一般的なコンピュータシステムアーキテクチャに関係する追加情報が、本明細書においてさらに提示される。
本明細書で説明されている主題および機能動作の実装形態は、デジタル電子回路で、または本明細書において開示されている構造およびその構造的等価物を含む、有形の媒体上に具現化されているコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書において説明されている主題の実装形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行できるようにまたはデータ処理装置の動作を制御するためにコンピュータ記憶媒体上に符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。プログラム命令は、データ処理装置による実行のため好適な受信機装置に伝送する情報が符号化されるように生成される、人工的に生成された伝搬信号、たとえば、機械で生成された電気、光、または電磁信号上で符号化されることが可能である。コンピュータ記憶媒体は、コンピュータ可読記憶装置デバイス、コンピュータ可読記憶装置基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、または含まれ得る。さらに、コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成される伝搬信号内に符号化されているコンピュータプログラム命令の送信元または送信先を含むことができる。コンピュータ記憶媒体は、また、1つまたは複数の独立した物理的コンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他の記憶装置デバイス)であり得るか、または含まれ得る。
本明細書で開示されている特徴は、インターネット接続性をより伝統的なテレビ番組ソース(たとえば、ケーブル、衛星、無線、または他の信号を介して受信される)と統合するように構成されている処理モジュールを備え得る、スマートテレビモジュール(または接続されているテレビモジュール、ハイブリッドテレビモジュールなど)上に実装され得る。スマートテレビモジュールは、テレビ受像機に物理的に組み込まれ得るか、またはセットトップボックス、ブルーレイ、もしくは他のデジタルメディアプレーヤー、ゲーム機、ホテルテレビシステム、または他の随伴デバイスなどの別個のデバイスを含み得る。スマートテレビモジュールは、ウェブ上にあるか、ローカルケーブルTVチャンネル上にあるか、衛星TVチャンネル上にあるか、またはローカルのハードドライブに記憶されているビデオ、動画、写真、および他のコンテンツを視聴者が検索し、見つけることを可能にするように構成され得る。セットトップボックス(STB)またはセットトップユニット(STU)は、チューナーを収容し、テレビ受像機に接続し得る情報家電デバイスおよび外部信号源を備えるものとしてよく、これは信号をその後テレビ画面もしくは他の表示デバイス上に表示されるコンテンツに変える。スマートテレビモジュールは、ウェブブラウザおよび複数のストリーミングメディアサービス、接続されたケーブルもしくは衛星メディアソース、他のウェブ「チャンネル」などの、複数の異なるアプリケーション用のアイコンを含むホーム画面または最上位画面を提供するように構成され得る。スマートテレビモジュールは、電子番組ガイドをユーザに提供するようにさらに構成され得る。スマートテレビモジュールの随伴アプリケーションは、ユーザに利用可能な番組に関する追加の情報を提供する、ユーザがスマートテレビモジュールを制御することを可能にするなどのことを行うためにモバイルコンピューティングデバイス上で動作可能であるものとしてよい。代替的実装形態において、これらの特徴は、ラップトップコンピュータもしくは他のパーソナルコンピュータ、スマートフォン、他の携帯電話、ハンドヘルドコンピュータ、タブレットPC、または他のコンピューティングデバイス上に実装され得る。
本明細書において説明されているオペレーションは、1つまたは複数のコンピュータ可読記憶装置デバイス上に記憶されているデータ、または他のソースから受信されたデータに対してデータ処理装置によって実行されるオペレーションとして実装され得る。
「データ処理装置」、「データ処理システム」、「ユーザデバイス」、または「コンピューティングデバイス」という用語は、たとえばプログラム可能プロセッサ、コンピュータ、システムオンチップ、または前述のもののうちの複数もしくは組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)を含むことができる。装置は、また、ハードウェアに加えて、注目しているコンピュータプログラム用の実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはこれらのうちの1つもしくは複数のものの組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散型コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。コンテンツ要求モジュール130、リソースアセンブラモジュール135、干渉検出器605、およびコンテンツモディファイア610は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むか、または共有することができる。アプリケーション160、プレゼンテーションリストリクタ165およびそのモジュール、リソースパーサー215、要素ハッシャー220、コンテンツリストリクタ225、およびレンダリングリストリクタ230は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むか、または共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも称される)は、コンパイル言語またはインタプリタ言語、宣言型または手続き型言語を含む、任意の形態のプログラミング言語で書かれ、スタンドアロンプログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境において使用するのに適している他のユニットを含む、任意の形態でデプロイされ得る。コンピュータプログラムは、ファイルシステム内のファイルに対応してよいが、そうである必要はない。プログラムは、他のプログラムをまたはデータ(たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプト)を保持するファイルの一部に、注目しているプログラム専用の単一ファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、副プログラム、またはコードの一部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるか、もしくは複数のサイトにまたがって分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるようにデプロイされることが可能である。
本明細書で説明されているプロセスおよび論理の流れは、入力データを操作し、出力を生成することによってアクションを実行するように1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実行され得る。これらのプロセスおよび論理の流れは、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)によっても実行され、また装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)としても実装され得る。
コンピュータプログラムの実行に適しているプロセッサは、たとえば、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令に従ってアクションを実行するためのプロセッサならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的に、コンピュータは、データを記憶するための1つもしくは複数の大容量記憶装置デバイス、たとえば、磁気ディスク、磁気光ディスク、もしくは光ディスクも備えるか、またはこれらからデータを受け取るか、もしくはこれらにデータを転送するか、もしくはその両方を行うように動作可能なように結合される。しかしながら、コンピュータは、そのようなデバイスを有している必要はない。さらに、コンピュータは、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、携帯オーディオもしくはビデオプレーヤー、ゲーム機、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれることが可能である。コンピュータプログラムの命令およびデータを記憶するのに適したデバイスは、たとえば、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補助されるか、または専用論理回路に組み込まれ得る。
ユーザとインタラクティブにやり取りするために、本明細書で説明されている主題の実装形態は、ユーザに情報を表示するためのディスプレイデバイス(たとえば、CRT(陰極線管)、プラズマ、またはLCD(液晶ディスプレイ)モニタ)ならびにユーザがコンピュータに入力を送るために使用できるキーボードおよびポインティングデバイス(たとえば、マウスもしくはトラックボール)を有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとインタラクションを行うために使用されてよい。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックを含むものとしてよく、ユーザからの入力は、音響、音声、または触覚入力を含む、任意の形態で受信され得る。それに加えて、コンピュータは、ドキュメントをユーザによって使用されるデバイスに送り、そのデバイスからドキュメントを受け取ることによって、たとえば、ウェブブラウザから受け取った要求に応答して、ウェブページをユーザのクライアントデバイス上のウェブブラウザに送信することによって、ユーザとインタラクティブにやり取りすることができる。
本明細書で説明されている主題の実装形態は、バックエンドコンポーネントを、たとえば、データサーバとして備えるか、もしくはミドルウェアコンポーネント、たとえば、アプリケーションサーバを備えるか、もしくはフロントエンドコンポーネント、たとえば、ユーザが本明細書で説明されている主題の実装形態をインタラクティブに操作するために使用することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを備えるコンピューティングシステムで、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組合せで実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワーク、によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム1000またはシステム110などのコンピューティングシステムは、クライアントおよびサーバを含み得る。たとえば、データ処理システム110は、1つまたは複数のデータセンターまたはサーバファーム内に1つまたは複数のサーバを備え得る。クライアントおよびサーバは、一般に、互いに隔てられており、典型的には、通信ネットワークを通じてインタラクティブな操作を行う。クライアントとサーバとの関係は、コンピュータプログラムが各コンピュータ上で実行され、互いとの間にクライアント-サーバ関係を有することによって発生する。いくつかの実装形態において、サーバはデータ(たとえば、HTMLページ)をクライアントデバイスに(たとえば、クライアントデバイスをインタラクティブに操作するユーザにデータを表示し、ユーザ入力を受け取ることを目的として)伝送する。クライアントデバイスで生成されるデータ(たとえば、ユーザインタラクションの結果)は、サーバ側でクライアントデバイスから受信され得る。
本明細書は、多くの特有の実装形態の詳細事項を含んでいるが、これらは、発明の範囲または請求内容の範囲に対する制限として解釈すべきではなく、むしろ本明細書で説明されているシステムおよび方法の特定の実装形態に特有のものである特徴の説明として解釈すべきである。本明細書において別々の実装形態の文脈で説明されているいくつかの特徴は、また、単一の実装形態において組み合わされて実現され得る。また、逆に、単一の実装形態に関して説明した様々な特徴は、複数の実装形態において別個に、あるいは任意の好適な部分組合せでも実装され得る。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求されることさえあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されることが可能であり、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象としてもよい。
同様に、動作は特定の順序で図面に示されているが、そのような動作は、望ましい結果を達成するために、示される特定の順序でもしくは順番に実行される必要がないことを、またはすべての図示の動作が実行される必要があるとは限らないことを、理解されたい。いくつかの場合において、請求項に記載されている動作は、異なる順序で実行されてもよく、しかも望ましい結果を達成することができる。それに加えて、添付図面に示されているプロセスは、必ずしも、望ましい結果を達成するために、図示されている特定の順序、または順番を必要としない。
ある状況では、マルチタスキングおよび並列処理が有利である場合がある。さらに、上記で説明した各実装形態における様々なシステムコンポーネントの分離は、すべての実装形態においてそのような分離が必要とされるものと理解されるべきではなく、前述のプログラムコンポーネントおよびシステムが概して単一のソフトウェアプロダクトとして一体化されるかまたは複数のソフトウェアプロダクトとしてパッケージ化されてもよいことを理解されたい。コンテンツ要求モジュール130、リソースアセンブラモジュール135、干渉検出器605、およびコンテンツモディファイア610は、データ処理システム110の一部、単一のモジュール、1つもしくは複数の処理モジュールを有する論理デバイス、1つもしくは複数のサーバ、または検索エンジンの一部であってよい。それに加えて、アプリケーション160、およびリソースパーサー215、要素ハッシャー220、コンテンツリストリクタ225、およびプレゼンテーションリストリクタ165のレンダリングリストリクタ230は、クライアントデバイス125、プロキシデバイス145、およびリモートコンテンツリストリクタデバイス150の一部、単一のモジュール、または1つもしくは複数の処理モジュールを有する論理デバイスを含むか、またはその一部であってよい。リソースパーサー215、要素ハッシャー220、コンテンツリストリクタ225、およびプレゼンテーションリストリクタ165のレンダリングリストリクタ230は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むか、または共有することができ、またクライアントデバイス125、プロキシデバイス145、およびリモートコンテンツリストリクタデバイス150の一部、単一のモジュール、または1つもしくは複数の処理モジュールを有する論理デバイスを含むか、または共有することができる。
いくつかの例示的な実装形態および実装形態が説明されているが、前述の内容は例示的であり、限定する意図はなく、例として提示されていることは明らかである。特に、本明細書に提示されている例の多くは、方法動作またはシステム要素の特定の組合せを伴い、それらの動作およびそれらの要素は、同じ目的を遂行するために他の方法で組み合わされてもよい。一実装形態に関連してのみ説明されている動作、要素、および特徴では、他の実装形態における類似の役割または実装形態から除外されることは意図されていない。
本明細書で使用されている語法および術語は、説明を目的とするものであり、限定するものとしてみなされるべきでない。「含む、備える(including)」、「からなる、備える、含む(comprising)」、「有する(having)」、「収容する、含む(containing)」、「伴う(involving)」、「特徴付けられる(characterized by)」、「特徴とする(characterized in that)」、および本明細書におけるそれらの変形の使用においては、それ以降に記載される項目、同等の項目、および追加項目、さらにはこれ以降排他的に記載されている項目からなる代替的実装形態を包含することが意図されている。一実装形態において、本明細書で説明されているシステムおよび方法は、説明されている要素、動作、またはコンポーネントのうちの1つ、複数の各組合せ、またはすべてからなる。
本明細書において単数形で参照されているシステムおよび方法の実装形態または要素または動作への参照は、また、これらの複数の要素を含む実装形態も包含するものとしてよく、本明細書における実装形態または要素または動作への複数の参照は、また、単一の要素のみを含む実装形態も包含し得る。単数形または複数形による参照は、本開示のシステムまたは方法、そのコンポーネント、動作、または要素を単一または複数の構成に限定することを意図していない。情報、動作、または要素に基づいている動作または要素への参照は、動作または要素が少なくとも一部は情報、動作、または要素に基づく実装を含み得る。
本明細書で開示されている実装形態は、他の実装形態と組み合わされるものとしてよく、「実装形態」、「いくつかの実装形態」、「代替的実装形態」、「様々な実装形態」、「一実装形態」、または同様の言い回しへの参照は、必ずしも相互排他的でなく、実装形態に関連して説明されている特定の特徴、構造、または特性が少なくとも1つの実装形態に含まれ得ることを指示することが意図されている。本明細書で使用されるそのような術語は、必ずしもすべて同じ実装形態を指しているわけではない。実装形態は、本明細書で開示されている態様および実装形態に一致する方式で、包含的にまたは排他的に他の実装形態と組み合わされてもよい。
「または」への参照は、「または」を使用して説明されている術語が、説明されている術語の1つ、複数、およびすべてのどれかを示し得るように包含的に解釈され得る。
図面、詳細な説明、または請求項における技術的特徴の後に引用符号が続く場合、引用符号は、図面、詳細な説明、および請求項の明瞭さを高めるという単独の目的のために含まれている。したがって、引用符号があることもないことも、請求要素の範囲に対する限定的効果を有しない。
本明細書で説明されているシステムおよび方法は、その特徴から逸脱することなく他の特定の形式で具現化され得る。本明細書において提示されている例は、情報リソース内に挿入されるコンテンツを制限すること、およびそれに対する対抗策をデプロイすることに関係しているけれども、本明細書において説明されているシステムおよび方法は、他の環境への適用も含み得る。前述の実装形態は、説明されているシステムおよび方法を限定するものではなく、例示するものである。したがって、本明細書で説明されているシステムおよび方法の範囲は、前述の説明ではなく、付属の請求項によって指示され、請求項の等価性の意味および範囲に入る変更は、そこに包含される。