(58)【調査した分野】(Int.Cl.,DB名)
前記受信された情報はセッション識別子をさらに含み、前記受信されたセッション識別子がメモリに格納されたいずれかのセッション識別子に一致するかどうかを判定するステップをさらに含む、請求項1の方法。
前記受信された情報はユーザエージェント識別子をさらに含み、前記受信されたユーザエージェント識別子がメモリに格納されたいずれかのユーザエージェント識別子に一致するかどうかを判定するステップをさらに含む、請求項1の方法。
前記プロセッサは、前記参照されたブラウザ識別子を新しいブラウザ識別子に置き換えることによって前記参照されたブラウザ識別子を更新する命令をさらに実行する、請求項12のシステム。
前記受信された情報はセッション識別子をさらに含み、前記プロセッサは、前記受信されたセッション識別子がメモリに格納されたいずれかのセッション識別子に一致するかどうかを判定する命令をさらに実行する、請求項10のシステム。
前記受信された情報はユーザエージェント識別子をさらに含み、前記プロセッサは、前記受信されたユーザエージェント識別子がメモリに格納されたいずれかのユーザエージェント識別子に一致するかどうかを判定する命令をさらに実行する、請求項10のシステム。
【発明を実施するための形態】
【0015】
本発明の実施の形態は、識別子のタイムスタンプベースのマッチングを可能にする。関連づけられたウェブサイトまたは関連づけられたブラウザにそれぞれ固有の複数の識別子に関する情報をメモリに格納してもよい。格納された情報はデバイス識別子を少なくとも一つのブラウザ識別子にそれぞれ関連づける1以上のマップに関する情報をさらに含んでもよい。デバイス識別子は関連づけられたコンピューティングデバイスに固有のものであってもよい。ブラウザを使用してウェブサイトをダウンロードしたコンピューティングデバイスから情報を受信してもよい。ダウンロードされたウェブサイトは、ブラウザに特有のブラウザ識別子への参照を含んでもよい。受信された情報がタイムスタンプとインターネットプロトコル(IP)アドレスを含むことを判定してもよい。受信された情報におけるタイムスタンプとIPアドレスが、格納されたマップの一つにおけるデバイス識別子に対応することをさらに判定してもよい。対応するコンピューティングデバイスは対応するデバイス識別子によって識別される。参照されたブラウザ識別子にもとづいて対応するデバイス識別子に関連づけられた格納されたマップを更新してもよい。
【0016】
図1は、可変ブラウザ識別子のマッチングを取るためのシステムが実装されるネットワーク環境100を示す。ネットワーク環境100は、通信ネットワーク110、一つまたは複数のユーザデバイス120A−D、ウェブサーバ130、識別子サーバ140、および一つまたは複数のサービスプロバイダ150を含んでもよい。ネットワーク環境100内のデバイスは、通信ネットワーク110を介して互いに通信することができる。
【0017】
通信ネットワーク110は、ローカルの専用ネットワーク(例えば、イントラネット)であってもよく、および/またはより広いワイドエリアネットワークの一部であってもよい。通信ネットワーク110は、インターネットなどの広域ネットワーク(WAN)に通信可能に結合されるローカルエリアネットワーク(LAN)であってもよい。インターネットは、相互接続されたコンピュータおよびサーバの広範なネットワークであり、ネットワークサービスプロバイダを介して接続されたユーザ間でインターネットプロトコル(IP)データの送信および交換を可能にする。ネットワークサービスプロバイダの例は、公衆交換電話網、セルラまたはモバイルサービスプロバイダ、ケーブルサービスプロバイダ、デジタル加入者回線(DSL)サービスのプロバイダ、または衛星サービスプロバイダである。通信ネットワーク110は、ネットワーク環境100の様々なコンポーネント間の通信を可能にする。
【0018】
ユーザは、汎用コンピュータ、携帯電話、スマートフォン、スマートウォッチ、ウェアラブルデバイス、パーソナルデジタルアシスタント(PDA)、ポータブルコンピューティングデバイス(例えば、ラップトップ、ネットブック、タブレット)、デスクトップコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、または通信ネットワーク110を介して通信することができる任意の他のタイプのコンピューティングデバイスなどの任意の数の異なる電子ユーザデバイス120A〜Dを利用する。ユーザデバイス120は、ダウンロードされたサービスの場合に適切であるように、ローカルキャッシュ、メモリカード、またはディスクドライブなどの他の記憶媒体からデータにアクセスするように構成されてもよい。ユーザデバイス120は、ネットワークおよびメディアインタフェースのような標準的なハードウェアコンピューティングコンポーネント、非一時的コンピュータ可読記憶装置(メモリ)、およびメモリに記憶される命令を実行するためのプロセッサを含んでもよい。
【0019】
さらに、ユーザデバイス120は、ユーザが特定のウェブページを要求できるようにするブラウザアプリケーションを含む様々なアプリケーションを含んでもよい。ここで使用される、ブラウザおよびブラウザ識別子への参照は例示的なものであり、これに関する教示内容は、他のタイプのアプリケーションおよびアプリケーション識別子(たとえばアップルのIDFAやグーグルのAdID)にも適用可能である。例えば、ユーザは、ブラウザアプリケーションにユニフォームリソースロケータ(URL)を入力することができる。そのようなブラウザは、関連するウェブサーバ(例えば、ウェブサーバ130)にそのような要求を送信し、応答データ(例えばダウンロードする他のファイルへの参照を含むウェブページファイル)を受信し、そのような応答データを使用して、要求されたウェブページを表示してもよい。ユーザデバイス120にダウンロードされるウェブページファイルは、ウェブページの一部として実際に表示されるコンテンツに対応するファイルだけでなく、関連するファイルも含んでもよい。
【0020】
ウェブサーバ130、識別子サーバ140、およびサービスプロバイダ150は、ネットワークおよびメディアインタフェースなどの標準的なハードウェアコンピューティングコンポーネント、非一時的コンピュータ可読記憶装置(メモリなど)、およびメモリに格納される命令を実行するかメモリに格納される情報にアクセスするためのプロセッサを含む、既知の任意のタイプのサーバまたは他のコンピューティングデバイスを含んでもよい。複数のサーバの機能を一つのサーバに統合してもよい。前述のサーバ(または統合サーバ)は、特定のクライアント側のキャッシュ、またはプロキシサーバの特性を引き受けてもよい。これらの特性は、サーバの特定のネットワーク配置またはサーバの特定の構成に依存することがある。
【0021】
ウェブサーバ130は、任意のタイプのウェブページまたはウェブサイトデータを含む、ウェブコンテンツをホストするために使用される任意の種類のサーバであってもよい。各ウェブサイトに関連づけられる特定のファイルは、パブリッシャ(または指定された管理者)によって制御されてもよい。ウェブサイトファイルには、他の当事者の管理下にあるファイルへのリンクが含まれることがある。これに関して、ウェブサーバ130からダウンロードされたウェブサイトファイルは、可変ブラウザ識別子ファイルへの参照(例えば、URL)と、オプションのローダアプリケーション(例えば、Java(登録商標)Script(登録商標)コマンド)と、可変ブラウザ識別子ファイルとともに使用される関連コードライブラリを含んでもよい。そのような可変ブラウザ識別子ファイルは、ウェブサイトに固有であってもよい。例えば、特定のウェブサイトに対する可変ブラウザ識別子は、そのウェブサイトのドメイン(または他の特性)を含むか、さもなければそれに基づくものであってもよい。このように、特定のユーザデバイスによって訪問された各ウェブサイトは、一意かつ異なる可変ブラウザ識別子に関連付けられてもよい。
【0022】
そのような可変ブラウザ識別子は、関連する同時係属の米国特許出願第14/716,187号に開示されているブラウザ識別子に関して開示されたものと同様の方法で生成され、管理されてもよい。さらに、本明細書で開示される可変ブラウザ識別子は、関連する米国特許出願第14/716,187号に開示された発明と併せて使用されてもよい。それぞれの名前で示されるように、不変ブラウザ識別子は変化せず、可変ブラウザ識別子は変化する可能性がある。不変ブラウザ識別子は、異なる可変ブラウザ識別子に関連付けられるかまたはマッピングされてもよい。可変ブラウザ識別子は変化する可能性があるため、参照された可変ブラウザ識別子に関連づけられた様々なインジケータを使用して、参照されたブラウザ識別子を不変ブラウザ識別子、それに関連づけられた可変ブラウザ識別子および/または関連づけられたデバイス識別子にマッピングしてもよい。
【0023】
この点に関して、ブラウザは、自動的にまたはユーザデバイス120によって実行されるローダアプリケーションの指示の下で、参照された可変ブラウザ識別子ファイルにアクセスしようと試みることができる。このようなアクセスは、参照された可変ブラウザ識別子ファイルが既に以前からダウンロードされているかどうかを判断するためにローカルブラウザキャッシュを自動的にチェックすることを含んでもよい。
【0024】
ローカルブラウザキャッシュのこのようなチェックの後、ユーザデバイス120は、参照された可変ブラウザ識別子ファイルに関連づけられた識別子サーバ140に要求を送信してもよい。そのような要求は、参照された可変ブラウザ識別子ファイルがローカルブラウザキャッシュ内に見つかったかどうか(もしそうであれば、参照された可変ブラウザ識別子ファイルがいつ最後に変更されたか)を示してもよい。その要求が、参照された可変ブラウザ識別子ファイルがローカルブラウザキャッシュに見つからなかったことを示す場合、識別子サーバ140は、新しい可変ブラウザ識別子ファイルをユーザ装置120に送信することによって応答してもよい。上述したように、新しい可変ブラウザ識別子は、(例えば、ウェブサイトドメインまたは他の特性に基づいて)ダウンロードされている特定のウェブサイトに固有になるように生成してもよい。
【0025】
この点で、識別子サーバ140は、要求に応じて新たな一意の可変ブラウザ識別子を生成し提供してもよい。このような一意の可変ブラウザ識別子は、要求を行うウェブサイトに固有のものであってもよい。ただし、ユーザがオプトアウトした場合は、一意の可変ブラウザ識別子の代わりに一意でない用語を挿入してもよい。いくつかの実施の形態では、ユーザは、指定されたウェブページまたはウェブサイトに関して一意の識別子を提供されることをオプトアウト(選択解除)することができる。あるいは、ユーザは、指定されたウェブページまたはウェブサイトに関して一意の識別子を提供することをオプトイン(選択)してもよい。このようにして、そのウェブサイトは、一部のウェブページの一意の可変ブラウザ識別子を介して一意に識別されるが、他のウェブサイトは識別されない。いくつかの実施の形態では、ユーザのオプトアウトまたはオプトインに関するこのような情報は、可変ブラウザ識別子ファイルに反映されてもよい。例えば、可変ブラウザ識別子ファイルは、定義されたウェブページ、ウェブサイトまたはウェブサイトのカテゴリに対するユーザのオプトインまたはオプトアウトを示す情報と、オプトインまたはオプトアウトのどちらが実施されるべきか細かい詳細を指定するインジケータとを含んでもよい。
【0026】
ユーザはまた、ウェブサイトに関連付けられた一意の可変ブラウザ識別子をリセットすることを選択してもよい。一意の可変ブラウザ識別子をリセットすることは、以前にダウンロードされた可変ブラウザ識別子ファイルのローカルブラウザキャッシュをクリアし、(新しい可変ブラウザ識別子ファイル内に)新しい可変ブラウザ識別子を生成し、ローカルブラウザのキャッシュにキャッシュすることを含む。いくつかの実施の形態では、可変ブラウザ識別子ファイルを更新する必要があることを示すために、識別子サーバ140に信号を送ってもよい。そのような信号はクッキーに実装されてもよく、識別子サーバ140がクッキーを読み取って、可変ブラウザ識別子ファイルとして何を返送するべきかを決定することができる。あるいは、(パス情報またはパラメータを含む)要求を(例えば、可変ブラウザ識別子および任意の指令を含むように構成された)一時的URLに向かわせ、その後、その要求を識別子サーバ140にリダイレクトしてもよい。識別子サーバ140は、その要求のリファラーヘッダ(例えば、一時的URL)を見て、可変ブラウザ識別子ファイルへの要求された変更を解析することができる。
【0027】
さらに、識別子サーバ140は、複数の可変ブラウザ識別子(それぞれ異なるウェブサイトに対するものであり、異なる可変ブラウザ識別子ファイルで提供される)を提供することができる。ウェブサイトに関連するユーザデバイス120でのアクティビティは、その後、提供された一意の可変ブラウザ識別子に関連付けられてもよい。そのような可変ブラウザ識別子は、さらに、不変ブラウザ識別子および/またはデバイス識別子と関連付けられてもよく、それによって、場合によっては同じまたは異なるコンピューティングデバイス上の異なるブラウザ間を区別する能力が可能になる。具体的には、ユーザデバイス120上のローダアプリケーションによって識別子サーバ140(または関連づけられたサーバ)に提供される(一意の可変ブラウザ識別子によって識別される)特定のウェブサイトでの活動に関する情報をログに記録してもよい。この点で、可変ブラウザ識別子は、ユーザデバイス120に常駐するローカルアプリケーションまたはコード(例えば、ブラウザ、ローダアプリケーション、ローカルコードライブラリ)によってのみ呼び出すことができるので、識別子サーバ140は、可変ブラウザ識別子自体を受信しなくてもよい。ローダアプリケーションを実行して、コードライブラリからのコードのロードおよび実行を含む様々な機能を実行してもよい。そのようなコードライブラリは、ウェブサーバ130、識別子サーバ140、または他の指定されたサービスプロバイダ150で提供され、変更され、更新されてもよい。
【0028】
参照された可変ブラウザ識別子ファイルが実際にローカルブラウザキャッシュ内に見つかった場合、ブラウザは、参照された可変ブラウザ識別子ファイルに関するインジケータ(例えば、「if−modified−since」ヘッダ)とともに要求を識別子サーバ140に送信する。次いで、識別子サーバ140は、当該要求の中に提供された情報(例えば、「if−modified−since」ヘッダが参照された可変ブラウザ識別子ファイルに存在するかどうか)または関連づけられたクッキー、リファラーヘッダーなどに基づいて、参照された可変ブラウザ識別子ファイルの更新バージョンを送信するべきかどうかを判断する。参照された可変ブラウザ識別子ファイルがローカルブラウザキャッシュにあると判定された場合(例えば、当該要求の中に関連づけられた「if−modified−since」ヘッダが存在することによって示される)、識別子サーバ140は当該ファイルを検証し、このような検証に関するインジケータ(例えば、「304 not modified」インジケータ)を送信する。いくつかの実施の形態では、このような検証は、参照された可変ブラウザ識別子ファイルの最大年齢または有効期日/期限を延長してもよく、それにより、参照された可変ブラウザ識別子ファイルを(延長された最大年齢または有効期日/期限に対応する)延長期間の間、ローカルブラウザキャッシュに維持してもよい。しかしながら、(例えば、オプトアウトクッキーによって示されるように)ユーザがオプトアウトを選択した場合、識別子サーバ140は、一意でない可変ブラウザ識別子またはオプトアウト識別子を有する可変ブラウザ識別子ファイルを返してもよい。
【0029】
ブラウザは、場合によっては、識別子サーバ140が参照された可変ブラウザ識別子ファイルを検証することを必ずしも要求しない。そのような場合、ブラウザは、識別子サーバ140に何の要求もせずに、キャッシュされた可変ブラウザ識別子ファイルを使用してもよい。
【0030】
場合によっては、参照された可変ブラウザ識別子ファイルは、更新を要求するように決定されてもよい。例えば、「if−modified−since」ヘッダのないクッキーは、参照された可変ブラウザ識別子ファイルが以前に存在していたが、もはや(全部または一部が)ローカルブラウザキャッシュには存在しないことを示すことがある。そのような変更が(例えば、要求の中のヘッダまたは他のインジケータによって示されるように)起こった可能性があると判断すると、識別子サーバ140は、参照されたウェブサイトファイルを再作成するか、または新しい可変ブラウザ識別子ファイルをユーザデバイス120に送信する。上記は主に変更ヘッダのことを指すが、当技術分野で知られている任意のタイプのキャッシュ制御ヘッダ(または任意のタイプのキャッシュ制御コマンド)を使用してもよい。キャッシュ制御には、検証を指示すること、所望の最大年齢を調整すること、および可変ブラウザ識別子ファイルがキャッシュされる場所(例えば、ローカルブラウザキャッシュを指定する)を制御することを含め、キャッシュメモリに関する任意の操作が含まれてもよい。
【0031】
可変ブラウザ識別子ファイルは、スタイルシート、JavaScript(登録商標)ファイル、HTMLファイル、テキストファイル、AJAX要求、画像ファイルなどを含む、ローカルブラウザのキャッシュメモリにキャッシュされる任意のタイプのファイルであってもよい。このような可変ブラウザ識別子ファイルによって、そのコンテンツ(一意であるか非一意であるかにかかわらず、可変ブラウザ識別子を含む)がブラウザおよび関連するブラウザアプリケーション(ローダアプリケーションを含む)にアクセスされることが可能になる。このように、ブラウザおよび関連するブラウザアプリケーションは、可変ブラウザ識別子にアクセスし、ロギングアクティビティを含むさまざまな操作のために可変ブラウザ識別子を使用することができる。
【0032】
可変ブラウザ識別子ファイルは、可変ブラウザ識別子を含んでもよく、可変ブラウザ識別子は、ウェブページに固有のものであってもよい。場合によっては、ユーザは、一意の可変ブラウザ識別子を提供されることをオプトアウト(選択解除)してもよい。そのような場合、新しい可変ブラウザ識別子ファイルは、可変ブラウザ識別子として一意でない用語とともに生成されてもよい。あるいは、可変ブラウザ識別子ファイルを更新して、一意の識別子を一意でない用語(または定義されたまたは一般的なオプトアウト用のオプトアウト識別子)で置き換えてもよい。
【0033】
いくつかの実施の形態では、可変ブラウザ識別子ファイルは、特定のウェブページに対するユーザオプトアウトまたはオプトインに関する情報を含む、(ユーザによって指定された)ユーザプリファレンスに関する他のタイプの情報をさらに含んでもよい。ユーザがオプトアウト設定またはオプトイン設定を変更すると、そのような情報を使用して、可変ブラウザ識別子ファイルを更新することができる。次に、ブラウザは、可変ブラウザ識別子ファイルをローカルブラウザキャッシュに再ロードするように指示され、それによって、更新されたユーザ設定を実装することができる。
【0034】
識別子サーバ140はさらに、可変ブラウザ識別子を共通の不変のブラウザ識別子に一致させることができ、場合によっては共通のデバイス識別子に一致させることもできる。これに関して、(デバイス識別子によって識別される)特定のユーザデバイス120は、(それぞれの不変ブラウザ識別子によって識別される)一つ以上のブラウザに関連付けられてもよく、それぞれのブラウザは(それぞれの可変ブラウザ識別子によって識別される)一つ以上のウェブサイトに関連付けられてもよい。したがって、識別子サーバ140は、ユーザデバイスが特定のブラウザを使用してウェブサイトを要求したとき、一つまたは複数のそのような識別子(ウェブサイトであれ、ブラウザであれ、デバイスであれ)を識別することができるだけでなく、どの識別子が互いに関連づけられているかに関するマップを管理し更新することができる。
【0035】
識別子サーバ140は、様々なインジケータを使用して、そのようなマップを作成し更新することができる。例えば、セキュアセッション(例えば、セキュアソケットレイヤ(SSL)セッション)によってセッション再開が可能になる。セッション再開は、クライアントとサーバがSSL情報をネゴシエートし、後で将来の接続のためにそのネゴシエートされたSSL情報を再利用する場合に発生する。SSLセッションの設定には通常非常に時間がかかるため、再ネゴシエートする必要がないことが望ましい。セッションを再開するには、クライアントがセッションを識別できることが必要である。SSLセッションIDとTLSセッションチケットは、以前のセッションの識別と再開を可能にする2つのメカニズムである。
【0036】
識別子サーバ140は、ブラウザが(例えば、識別子サーバ140のドメインを呼び出すような)特定のスクリプトを有するウェブサイトにアクセスするときに呼び出される。したがって、識別子サーバ140は、特定のウェブサイトがアクセスされたときにセッション再開データを受信することができる。このように、識別子サーバ140はそのようなセッション情報を使用して、複数の接続が、例えば同じSSLセッションIDによって示された同じセッションをいつ使用しているかを決定することができる。したがって、識別子サーバ140は、複数の接続に関連づけられたブラウザIDをまとめてマッピングすることができる。識別子サーバ140によって構築されたこのようなマップによって、既存のSSLセッションが存在しない場合であっても、ブラウザを認識するために使用可能な一連の永続的インジケータを作成することが可能になる。
【0037】
付加的なインジケータは、伝送制御プロトコル(TCP)情報の使用に基づいてもよい。TCPは、Webブラウザ、電子メール、およびその他のアプリケーションを含むさまざまなインターネットベースのアプリケーションによって使用される。(例えば、TCPパケット内に存在する)特定のデバイスによるTCPの使用に関連づけられた情報は、現在の時間、稼働時間、およびクロックスキューなどの様々なタイムスタンプ情報を含むか示すものであってもよい。例示的な実施の形態では、識別子サーバ140は、(例えば、特定の現在時刻、稼働時間、ソースIPアドレス、クロックスキューなどのTCPタイムスタンプ情報に関連づけられた)ブラウザ識別子を受信し、関連づけられたタイムスタンプ情報(例えば、稼働時間)がブラウザ識別子に以前に関連付けられたいずれかのタイムスタンプ情報と一致するかどうか判断し(一致しない場合、その関連付けられたタイムスタンプ情報を含むようにブラウザ識別子に関する格納された情報を更新する)、稼働時間(またはソースIPアドレスまたはクロックスキュー)がデバイス識別子にマッピングされるかどうかを決定し、もしそうであるなら、それらのデバイス識別子をまとめてマッピングする。
【0038】
現在の時間が一般にTCPパケットに含まれているが、更なる計算が他のタイムスタンプ情報(例えば、稼働時間及びクロックスキュー)を得るために適用されてもよい。例えば、稼働時間は、コンピューティングデバイスが開始され、継続的に動作してからの時間の計測を提供する。特に、他のインジケータ(例えば、送信元IPアドレス、クロックスキュー)と組み合わされたとき、稼働時間は、特定のデバイスを、そのコンピューティングデバイスが再起動される前の時間の間、一意に識別することができる。稼働時間に関して、デバイスは、デバイスが起動されるか、ティックの数がリセットされた最後の時間以来のティックの数を記録し報告することができる。ティックの数は、異なるコンピューティングデバイスに対して異なるスケジュールに基づいてリセットされてもよい(例えば、いくつかのデバイスは数日ごとにリセットし、他のデバイスは数週間ごとにリセットする)。ティックはまた、異なるシステムに対して異なる時間量を表すこともあるので、報告されたティック数によってどのくらいの時間が表されるかを決定するためにデバイス固有の計算が関与することがある。結果は、一貫して増加する時間である。これを後方に計算することで、デバイスが最後に起動された時刻や、ティックの数がリセットされた最後の時刻などの稼働時間が提供される。このようにして、一般に稼働時間は、稼働時間がリセットされる時までティックが増加しても同じ値にとどまる。
【0039】
したがって、識別子サーバ140によって使用されるこのようなインジケータは、セッション識別子(例えば、トランスポート層セキュリティ(TLS)、セキュアソケット層(SSL))、伝送制御プロトコル(TCP)識別子(例えば、稼働時間、現在時刻、クロックスキュー)、インターネットプロトコル(IP)アドレス、ユーザエージェント識別子、その他が含まれる。そのようなインジケータは、個別にまたは任意の組み合わせ(例えば、SSLセッション識別子とTCPタイムスタンプ)で使用され、共通の一致に基づいて特定の共通ブラウザおよび/または特定のユーザデバイス120を識別する。例示的な実施の形態は、異なるブラウザまたは異なるデバイスに対する識別子間の結合を識別する際に、それぞれの決定論的な値に基づいてある種のインジケータのセットを選択することができる。たとえば、SSLセッション識別子は特定のセッションに固有であるため、同じブラウザに対する異なる可変ブラウザ識別子をまとめてマップして関連付けることができる。同様に、現在の時間、稼働時間、クロックスキューおよびソースIPアドレスの組み合わせは、特定のデバイスに固有であり、それによって、デバイスに関連付けられた異なるデバイス識別子間の結合を導出することが可能になる。
【0040】
例えば、ウェブサイトをダウンロードする特定の要求は、一つまたは複数のインジケータ(たとえば、SSLセッション識別子)に関連付けられた可変ブラウザ識別子を参照してもよい。このようなSSLセッション識別子は、格納された情報と比較され、識別子サーバ140によって、異なる可変ブラウザ識別子、不変ブラウザ識別子、および/またはデバイス識別子と共に以前に使用されたものとして決定されてもよい。同様に、要求側コンピューティングデバイスに関連づけられたTCPタイムスタンプは、識別子サーバ140によって、他の可変ブラウザ識別子、不変ブラウザ識別子、および/またはデバイス識別子と共に以前にマッピングされるか使用されたものとして決定されてもよい。
【0041】
参照された可変ブラウザ識別子(またはその関連づけられたインジケータまたは識別子のいずれか)に対して格納されたマップが存在しない場合、新しいマップが作成されてもよい。格納されたマップが存在する場合、そのような格納されたマップは更新されてもよい。このように、これらの識別子のうちの一つ以上を有するマップは、(特定のインジケータに関連づけられた)新たに入ってくる識別子に基づいて、また(同一または異なるインジケータに関連付けられた)格納された識別子との一致に基づいて、生成され、更新されてもよい。例えば、二つの異なる可変ブラウザ識別子が同じインジケータ(例えば、SSLセッション識別子)を有することを識別子サーバ140が発見すると、識別子サーバ140は、それぞれのウェブサイトが同じブラウザを使用していると判断することができる。各インジケータの寿命、可用性、および決定論的価値は、異なるブラウザ、ユーザエージェント、および/またはオペレーティングシステムによって異なるかもしれない。したがって、インジケータを組み合わせて使用して、一致を見つける可能性を高め、そのような一致の信頼度を高めてもよい。
【0042】
いくつかの実施の形態では、識別子サーバ140は、要求が特定のブラウザおよびウェブサイト(可変ブラウザ識別子によって識別される)に関連付けられていることを判定することができてもよい。「304 not modified」というインジケータの代わりに、識別子サーバ140は、元のブラウザ識別子に関連付けられるかマッピングされた識別子サーバ140によって格納される新しい可変ブラウザ識別子を有する「200 request fulfilled」というインジケータを返してもよい。したがって、このようなスキームは、様々な他の識別子(例えば、デバイス識別子および不変ブラウザ識別子)との関連を維持しながら、可変ブラウザ識別子の可変性を提供する。
【0043】
いくつかの実施の形態では、第1の当事者のクッキーを、各ウェブサイトに対する永続的識別子(例えば、可変ブラウザ識別子)として使用してもよい。クッキーはある時間の間持続するかもしれないが、そのようなクッキーは定期的に変更されるかもしれない。その後、以下でさらに詳細に説明するように、様々なマッチングパラメータ(例えば、SSLおよび稼動時間)を使用して、関連づけられたクッキーを識別し、それらを一緒にマッピングしてもよい。これに関して、識別子サーバ140は、他の永続的識別子にマッピングするために任意の永続的識別子を使用する能力を有するものとして理解されるべきである。したがって、時間の経過とともに、識別子サーバ140によって構築されたマップは、様々な識別子間の新しい結合および関連づけを組み込むように成長することができる。
【0044】
サービスプロバイダ150は、ブラウザの識別に基づいて様々なサービスを提供することができるサーバまたは他のコンピューティングデバイスを含んでもよい。例えば、サービスプロバイダ140は、リピート訪問に関する情報を使用して、(初回訪問者と対比して)リピート訪問者に対するターゲット広告を提供してもよい。
【0045】
図2は、識別子のタイムスタンプベースのマッチングのための例示的な方法200を示すフローチャートである。
図2の方法200は、CD、DVD、またはハードドライブなどの不揮発性メモリを含むがこれに限定されない非一時的コンピュータ可読記憶媒体内の実行可能命令として実施することができる。記憶媒体の命令は、記憶媒体をホスティングまたはアクセスするコンピューティング装置の様々なハードウェア構成要素に方法を実行させるプロセッサ(またはプロセッサ群)によって実行されてもよい。
図2で特定されるステップ(およびその順序)は例示的なものであり、それらの実行順序を含むがそれらに限定されない様々な代替、等価物、または派生物を含んでもよい。
【0046】
図2の方法200では、識別子情報を識別子サーバ140のメモリに格納し、ブラウザ識別子への参照を受信し、参照されたブラウザ識別子に関連づけられたタイムスタンプおよびIPアドレスが存在するかどうかを判定することができる。存在しない場合、この方法は、参照されたブラウザ識別子がデバイス識別子にマッピングされているかどうかを決定するために進み、マッピングされていない場合、デバイス識別子を作成し、参照されたブラウザ識別子にマッピングする。あるいは、参照されたブラウザ識別子は、一つまたは複数の他の識別子(例えば、デバイス、他のブラウザ、および/またはウェブサイト)と照合されてもよい。対応する格納されたブラウザ識別子に関連づけられた格納された情報は、参照されたブラウザ識別子(およびその関連情報)を格納されたブラウザ識別子情報(関連識別子のマップを含む)と比較することに基づいて、更新される。
【0047】
ステップ205では、識別子情報を識別子サーバ140のメモリに格納する。格納された情報は、複数の異なる可変ブラウザ識別子、不変ブラウザ識別子、およびデバイス識別子、ならびに一つまたは複数のこのような識別子を相互に関連づけるマップを含む。例えば、マップは、特定のデバイス識別子を一つまたは複数の可変ブラウザ識別子および不変ブラウザ識別子に関連付けることができる。そのようなマップは、そのような関連付けに関する以前に受信された情報(例えば、特定の共通のデバイス識別子にマッピングされた以前に受信されたブラウザ識別子)に基づいて生成され、また時間の経過とともに更新されてもよい。このような更新は、新たに受信された関連付けデータに基づいて新たな関連付けを生成することだけでなく、新たに受信された情報との一致に基づいて格納された関連付けを更新することも含む。
【0048】
ステップ210において、(例えばURLによって識別されるような)特定のウェブサイトに対する要求はユーザデバイス120のブラウザを介してユーザによって入力され、ブラウザは、そのウェブサイトに関連づけられたウェブサーバ130にそのような要求を送信する。ウェブサーバ130は、ウェブサイトコンテンツをユーザデバイス120のブラウザに提供する。このようなウェブサイトのコンテンツは、ブラウザ識別子ファイルへの参照に関連付けられる。このような参照は、識別子サーバ140に解決(resolve)される別のURLであってもよい。いくつかの実施の形態では、ウェブサーバ140によって送信された参照は、ブラウザ識別子ファイルを参照するために実行可能なローダアプリケーションに関するものであってもよい。ブラウザは、ローカルのブラウザキャッシュをチェックして、参照されたブラウザ識別子ファイルを見つけてもよい。
【0049】
ステップ215において、タイムスタンプ(例えば、TCPタイムスタンプ)およびIPアドレスが、ステップ210で受信された要求に関連づけられているかどうかが判定される。関連づけられていない場合、方法はステップ220に進み、関連づけられている場合、方法はステップ235に進む。
【0050】
ステップ220において、参照されたブラウザ識別子がデバイス識別子に既にマッピングされているかどうかが判定される。そのような決定は、識別子サーバ140のメモリ内に記憶されたマップに基づくことができる。マッピングされていれば、この方法は終了する。マッピングされていなければ、方法はステップ225に進むことができる。
【0051】
ステップ225において、ブラウザ識別子を参照したコンピューティングデバイスを一意に特定するためにデバイス識別子が生成される。
【0052】
ステップ230において、参照されたブラウザ識別子は、デバイス識別子にマッピングされる。
【0053】
ステップ235では、参照されたブラウザ識別子をデバイス識別子にマッピングできるかどうかが判定される。このようなステップは、ステップ220と同様の方法で実行されてもよい。もっとも、ここで、参照されたブラウザ識別子をデバイス識別子にマッピングできない場合、方法はステップ240に進む。一方、参照されたブラウザ識別子をデバイス識別子にマッピングできる場合、本方法はステップ245に進む。
【0054】
ステップ240において、参照されたブラウザ識別子と同じ要求で見つかったタイムスタンプおよびIPアドレスが、格納されたデバイス識別子にマッピングできるかどうかが判定される。マッピングできない場合、方法は、ステップ230(そこでは参照されたブラウザ識別子がデバイス識別子にマッピングされる)に進む前に、ステップ225(そこではデバイス識別子が作成される)に進む。しかし、参照されたブラウザ識別子と同じ要求で見つかったタイムスタンプおよびIPアドレスを格納されたデバイス識別子にマッピングできる場合、方法は直接ステップ230に進む。
【0055】
ステップ245では、マッピングされたデバイス識別子に関連付けられたタイムスタンプおよびIPアドレスが、参照されたブラウザ識別子と同じ要求で受信されたタイプスタンプおよびIPアドレスと一致するかどうかが判定される。一致する場合、この方法は終了する。一致しない場合、方法はステップ250に進む。
【0056】
ステップ250において、参照されたブラウザ識別子のタイムスタンプおよびIPアドレスと一致するタイムスタンプおよびIPアドレスに関連づけられた別の異なるデバイス識別子(例えば、識別子サーバ140に記憶されたすべてのデバイス識別子のうちのいずれか)が存在するかどうかが判定される。存在しない場合、方法はステップ255に進み、存在する場合、方法はステップ260に進む。
【0057】
ステップ255において、デバイス識別子に関する格納された情報は、参照されたブラウザ識別子のタイムスタンプおよびIPアドレスを反映するように更新される。上述したように、いくつかのインジケータは異なる決定論的価値を有する。ありそうもないが、二つの異なるコンピューティングデバイスが同じタイムスタンプおよびIPアドレスをもつことはありうる。そのような場合、参照されたブラウザ識別子は、そのブラウザ識別子を参照したコンピューティングデバイス以外の(異なるデバイス識別子を有する)異なるコンピューティングデバイスに関連付けられる。
【0058】
ステップ260では、格納されたマップを更新して、一致するタイムスタンプおよびIPアドレスに基づいて、参照された不変ブラウザ識別子(および任意の関連づけられた可変ブラウザ識別子)を他のデバイスザ識別子に再マッピングする。いくつかの実施の形態では、再マッピングは、どのデバイス識別子がより古いかに基づいてもよい。
【0059】
図3は、本発明の実施の形態を実装するために使用される例示的なコンピューティングシステム300を示す。
図3のシステム300は、ユーザ装置120A〜D、ウェブサーバ130、識別子サーバ140、およびサービスプロバイダ150の類いのコンテキストで実装することができる。
図3のコンピューティングシステム300は、一つまたは複数のプロセッサ310およびメモリ310を含む。メインメモリ310は、プロセッサ310による実行のための命令およびデータを部分的に記憶する。メインメモリ310は、動作中に実行可能コードを格納することができる。
図3のシステム300は、大容量記憶装置330、可搬型記憶媒体ドライブ340、出力装置350、ユーザ入力装置360、グラフィックスディスプレイ370、および周辺装置380をさらに含む。
【0060】
図3に示す構成要素は、単一のバス390を介して接続されているものとして示されている。しかしながら、構成要素は、一つ以上のデータ転送手段を介して接続されてもよい。例えば、プロセッサユニット310およびメインメモリ310は、ローカルマイクロプロセッサバス390を介して接続され、大容量記憶装置330、周辺装置380、可搬型記憶装置340、およびディスプレイシステム370は、一つまたは複数の入出力(I/O)バス390を介して接続される。
【0061】
大容量記憶装置330は、磁気ディスクドライブまたは光ディスクドライブで実装することができ、プロセッサユニット310による使用のためのデータおよび命令を記憶するための不揮発性記憶装置である。大容量記憶装置330は、メインメモリ310にソフトウェアをロードする目的で、本発明の実施の形態を実施するためのシステムソフトウェアを格納することができる。
【0062】
ポータブル記憶装置340は、フロッピー(登録商標)ディスク、コンパクトディスク(CD)またはデジタルビデオディスク(DVD)などのポータブル不揮発性記憶媒体と連携して動作し、
図3のコンピュータシステム300に対してデータおよびコードを入出力する。本発明の実施の形態を実装するためのシステムソフトウェアは、このようなポータブル媒体に格納され、ポータブルストレージデバイス340を介してコンピュータシステム300に入力されてもよい。
【0063】
入力装置360は、ユーザインタフェースの一部を提供する。入力装置360は、アルファベットやその他の情報を入力するためのキーボードなどの英数字キーパッド、マウス、トラックボール、スタイラスまたはカーソル方向キーなどのポインティングデバイスを含んでもよい。さらに、
図3に示すシステム300は、出力装置350を含む。適切な出力装置の例には、スピーカ、プリンタ、ネットワークインタフェース、およびモニタが含まれる。
【0064】
ディスプレイシステム370は、液晶ディスプレイ(LCD)または他の適切なディスプレイデバイスを含んでもよい。表示システム370は、テキスト情報およびグラフィック情報を受信し、その情報を処理して表示装置に出力する。
【0065】
周辺機器380は、コンピュータシステムに追加の機能を追加するための任意のタイプのコンピュータ支援デバイスを含んでもよい。例えば、周辺装置380は、モデムまたはルータを含んでもよい。
【0066】
図3のコンピュータシステム300に含まれる構成要素は、本発明の実施の形態で使用するのに適したコンピュータシステムに通常見られる構成要素であり、当技術分野で周知であるそのようなコンピュータ構成要素の広範なカテゴリを表すことが意図されている。したがって、
図3のコンピュータシステム300は、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、電話、モバイルコンピューティングデバイス、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、または任意の他のコンピューティングデバイスであってもよい。また、コンピュータは、異なるバス構成、ネットワーク化されたプラットフォーム、マルチプロセッサ・プラットフォームなどを含むことができる。Unix(登録商標)、Linux(登録商標)、Windows(登録商標)、Macintosh OS、Palm OS、および他の適切なオペレーティングシステムを含む様々なオペレーティングシステムを使用することができる。
【0067】
本発明は、様々なデバイスを使用して動作可能なアプリケーションで実装することができる。非一時的コンピュータ可読記憶媒体は、実行するために中央処理装置(CPU)に命令を提供することに関与する任意の媒体または媒体を指す。そのような媒体は、光学ディスクまたは磁気ディスクおよび動的メモリなどの不揮発性および揮発性媒体を含むが、これに限定されない多くの形態を取ることができる。例えば、非一時的コンピュータ可読記憶媒体の通常の形態には、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、CD−ROMディスク、デジタルビデオディスク(DVD)、その他光学媒体、RAM、PROM、EPROM、FLASHEPROM、および任意の他のメモリチップまたはカートリッジが含まれる。
【0068】
様々な形態の伝送媒体が、実行するために一つまたは複数の命令の一つまたは複数のシーケンスをCPUに搬送することに関与してもよい。バス(例えば、バス390)は、データをシステムRAMに運び、そこからCPUが命令を取り出して実行する。システムRAMによって受信された命令は、任意に、CPUによる実行の前または後のいずれかに、固定ディスクに格納することができる。様々な形態の記憶装置を同様に実装することができ、必要なネットワークインタフェースおよびネットワークトポロジを同様に実装することができる。
【0069】
様々な実施の形態を上記で説明してきたが、それらは限定ではなく例として提示されたものであることを理解されたい。本説明は、本発明の範囲を本明細書に記載の特定の形態に限定することを意図したものではない。したがって、好ましい実施の形態の幅および範囲は、上記の例示的な実施の形態のいずれによっても制限されるべきではない。上記の説明は例示であり、限定的ではないことを理解されたい。それどころか、本説明は、添付の特許請求の範囲によって定義されるような本発明の精神および範囲内に含まれるものとして、さもなければ当業者によって認識されるものとして代替物、改変物、および等価物を包含することが意図される。したがって、本発明の範囲は、上記の説明を参照せずに決定されるべきであり、その代わりに、添付の特許請求の範囲を参照して、均等物の全範囲とともに決定されるべきである。