JP2020529655A - プロキシベースのネットワーク通信における制御データのトランスポート - Google Patents

プロキシベースのネットワーク通信における制御データのトランスポート Download PDF

Info

Publication number
JP2020529655A
JP2020529655A JP2020503261A JP2020503261A JP2020529655A JP 2020529655 A JP2020529655 A JP 2020529655A JP 2020503261 A JP2020503261 A JP 2020503261A JP 2020503261 A JP2020503261 A JP 2020503261A JP 2020529655 A JP2020529655 A JP 2020529655A
Authority
JP
Japan
Prior art keywords
request
control data
web
response
app
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020503261A
Other languages
English (en)
Other versions
JP7018498B2 (ja
Inventor
ジョシュア ライアン ラウアー,
ジョシュア ライアン ラウアー,
ガル マオル,
ガル マオル,
エラン イジャク ハーシュ,
エラン イジャク ハーシュ,
Original Assignee
フェイスブック,インク.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by フェイスブック,インク. filed Critical フェイスブック,インク.
Publication of JP2020529655A publication Critical patent/JP2020529655A/ja
Application granted granted Critical
Publication of JP7018498B2 publication Critical patent/JP7018498B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本開示は、クライアントデバイスを制御するための技法に関する。本技法は、クライアントデバイスから、ウェブリソースについての要求を受信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスにウェブリソースと制御データとを含む応答を送信することとを含み得る。【選択図】図2

Description

コンピューティングデバイスの遠隔制御は、一般に、制御データを搬送するための新しいまたは追加の通信能力の使用を必要とする。たとえば、コンピューティングデバイス(たとえば、コンピュータ、スマートフォンなど)が、機能性のセットを提供するように設定され得る。機能性は、コンピューティングデバイス上で動作するソフトウェアアプリケーションによって、および/またはコンピューティングデバイスのハードウェア構成要素によって提供され得る。設定は、設定の対象に関連する制御データに基づいて実施され得る。制御データは、たとえば、ソフトウェアパッチ、ソフトウェアアプリケーションに提供されるべきパラメータのセット、ハードウェアレジスタに記憶されるべき値のセットなどであり得る。
データネットワークでは、コンピューティングデバイスは、遠隔設定プロセスにおいて別のデバイス(たとえば、サーバ)から制御データを受信し得る。設定プロセスを始動するために、コンピューティングデバイスは、更新または追加されるべきターゲット機能性と、ターゲット機能性のための制御データとを決定する。コンピューティングデバイスは、次いで、(たとえば、伝送制御プロトコル(TCP)に基づいて)サーバとのクライアントサーバ通信チャネルを確立し、次いで、制御データについての要求を、通信チャネルを介してサーバに送信することができる。サーバは、要求を処理し、要求された制御データを含む応答を、通信チャネルを介してコンピューティングデバイスに送信することができる。コンピューティングデバイスは、次いで、応答が、要求された制御データを含むことを検証し、次いで、制御データに基づいてターゲット機能性を更新する。
この構成ではいくつかの欠点がある。たとえば、通信チャネルの管理、ならびに制御データを取得するための要求および応答が、設定プロセスの複雑さを増加させ、より多くのコンピューティングリソースを必要とする。その上、これらの要求および応答の送信はまた、かなりの量のネットワーク帯域幅を消費し、ネットワークインフラストラクチャの追加の負担をもたらし得る。
本開示は、クライアントデバイスを制御するための技法に関する。より詳細には、本開示のいくつかの態様では、コンピュータ実装制御方法が提供される。本方法は、クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、第1の要求に基づいて、第2の要求を生成することと、ウェブリソースについて、ウェブサーバに第2の要求を送信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第1の応答を受信することと、制御データとウェブリソースとを含む第2の応答を生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスに第2の応答を送信することとを含み得る。
本コンピュータ実装方法のいくつかの実施形態は、サーバプロキシによって実施され得る。いくつかの実施形態では、クライアントデバイスは、アプリとローカルプロキシとを含み得、第1の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
本開示のいくつかの実施形態によれば、第1の要求と第2の要求とは、HTTP要求であり得、第1の応答と第2の応答とは、HTTP応答であり得、制御データは、第2の応答の1つまたは複数のヘッダ中に含まれ得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含み得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、ローカルプロキシに関連し得る。いくつかの実施形態では、第1の要求は、ローカルプロキシとサーバプロキシとの間に確立された第1のTCP接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第2のTCP接続を確立することと、第2のTCP接続を通してウェブサーバに第3の要求を送信することとを行うようにローカルプロキシを制御し得る。いくつかの実施形態では、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第2のTCP接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第3の要求を送信することとを行うようにローカルプロキシを制御し得る。
いくつかの実施形態によれば、制御データは、第1の要求に基づいて生成され得る。いくつかの実施形態では、制御データは、シグネチャで暗号化され得る。
本開示のいくつかの実施形態によれば、システムが提供される。本システムは、1つまたは複数のプロセッサと、命令を記憶する非一時的コンピュータ可読媒体とを含み得、命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、第1の要求に基づいて、第2の要求を生成することと、ウェブリソースについて、ウェブサーバに第2の要求を送信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第1の応答を受信することと、制御データとウェブリソースとを含む第2の応答を生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスに第2の応答を送信することとを含む動作を実施させる。
本開示のいくつかの実施形態によれば、本システムは、サーバプロキシの一部であり得る。クライアントデバイスは、アプリとローカルプロキシとを含み得、第1の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
本開示のいくつかの実施形態によれば、第1の要求と第2の要求とは、HTTP要求であり得、第1の応答と第2の応答とは、HTTP応答であり得、制御データは、第2の応答の1つまたは複数のヘッダ中に含まれ得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含み得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、ローカルプロキシに関連し得る。いくつかの実施形態では、第1の要求は、ローカルプロキシとサーバプロキシとの間に確立された第1のTCP接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第2のTCP接続を確立することと、第2のTCP接続を通してウェブサーバに第3の要求を送信することとを行うようにローカルプロキシを制御し得る。いくつかの実施形態では、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第2のTCP接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第3の要求を送信することとを行うようにローカルプロキシを制御し得る。
本開示のいくつかの実施形態によれば、制御データは、第1の要求に基づいて生成され得る。
本開示のいくつかの実施形態では、非一時的コンピュータ可読記憶媒体が提供される。本非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによって実行可能な複数の命令を記憶し得る。複数の命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、第1の要求に基づいて第2の要求を生成することと、ウェブリソースについて、ウェブサーバに第2の要求を送信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第1の応答を受信することと、制御データとウェブリソースとを含む第2の応答を生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスに第2の応答を送信することとを行わせ得る。
本開示のいくつかの態様では、コンピュータ実装制御方法が提供される。本コンピュータ実装制御方法は、クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、第1の要求に基づいて、第2の要求を生成することと、ウェブリソースについて、ウェブサーバに第2の要求を送信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第1の応答を受信することと、制御データとウェブリソースとを含む第2の応答を生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスに第2の応答を送信することとを含み得る。
本コンピュータ実装方法のいくつかの実施形態は、サーバプロキシによって実施され得る。いくつかの実施形態では、クライアントデバイスは、アプリとローカルプロキシとを含み得、第1の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。いくつかの実施形態では、1つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、1つまたは複数の機能性は、ローカルプロキシに関連し得る。
本開示のいくつかの実施形態によれば、第1の要求と第2の要求とは、HTTP要求であり得、第1の応答と第2の応答とは、HTTP応答であり得、制御データは、第2の応答の1つまたは複数のヘッダ中に含まれ得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、アプリに関連し得る。随意に、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含む。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、ローカルプロキシに関連し得る。随意に、第1の要求は、ローカルプロキシとサーバプロキシとの間に確立された第1のTCP接続を通してローカルプロキシから受信され、制御データは、ウェブサーバとの第2のTCP接続を確立することと、第2のTCP接続を通してウェブサーバに第3の要求を送信することとを行うようにローカルプロキシを制御し得る。随意に、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第2のTCP接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第3の要求を送信することとを行うようにローカルプロキシを制御し得る。
本開示のいくつかの実施形態によれば、制御データは、第1の要求に基づいて生成され得る。いくつかの実施形態では、制御データは、シグネチャで暗号化され得る。
本開示のいくつかの実施形態によれば、システムが提供される。本システムは、1つまたは複数のプロセッサと、命令を記憶する非一時的コンピュータ可読媒体とを含み得、命令は、1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、第1の要求に基づいて、第2の要求を生成することと、ウェブリソースについて、ウェブサーバに第2の要求を送信することと、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第1の応答を受信することと、制御データとウェブリソースとを含む第2の応答を生成することと、クライアントデバイスの1つまたは複数の機能性を制御するために、クライアントデバイスに第2の応答を送信することとを含む動作を実施させる。
本開示のいくつかの実施形態によれば、本システムは、サーバプロキシの一部であり得る。クライアントデバイスは、アプリとローカルプロキシとを含み得、第1の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
本開示のいくつかの実施形態によれば、第1の要求と第2の要求とは、HTTP要求であり得、第1の応答と第2の応答とは、HTTP応答であり得、制御データは、第2の応答の1つまたは複数のヘッダ中に含まれ得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、アプリに関連し得る。随意に、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含み得る。
本開示のいくつかの実施形態によれば、1つまたは複数の機能性は、ローカルプロキシに関連し得る。随意に、第1の要求は、ローカルプロキシとサーバプロキシとの間に確立された第1のTCP接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第2のTCP接続を確立することと、第2のTCP接続を通してウェブサーバに第3の要求を送信することとを行うようにローカルプロキシを制御し得る。随意に、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第2のTCP接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第3の要求を送信することとを行うようにローカルプロキシを制御し得る。
本開示のいくつかの実施形態によれば、制御データは、第1の要求に基づいて生成され得る。
いくつかの実施形態によれば、1つまたは複数のコンピュータ可読非一時的記憶媒体は、ソフトウェアを具現し得、ソフトウェアは、実行されたとき、開示される実施形態による方法を実施するように動作可能である。
いくつかの実施形態によれば、システムは、1つまたは複数のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える少なくとも1つのメモリとを備え得、プロセッサは、命令を実行したとき、開示される実施形態による方法を実施するように動作可能である。
いくつかの実施形態によれば、好ましくはコンピュータ可読非一時的記憶媒体を備えるコンピュータプログラム製品は、データ処理システム上で実行されたとき、開示される実施形態による方法を実施するように動作可能であり得る。
以下の図を参照しながら、例示的な実施形態が以下で詳細に説明される。
コンピューティングデバイス上にインストールされたソフトウェアアプリケーションを設定することの一例を示す図である。 本開示のいくつかの態様による、データネットワークシステムの簡略ブロック図である。 本開示のいくつかの態様による、制御データを含むHTTP応答の一例の簡略ブロック図である。 本開示のいくつかの態様による、設定を異なる制御データ値にマッピングする例示的なマッピングテーブルの簡略ブロック図である。 本開示のいくつかの態様による、制御データの送信のためのサーバプロキシの一例の簡略ブロック図である。 本開示のいくつかの態様による、制御データをクライアントデバイスに提供するための例示的な方法を示す簡略フローチャートである。 本明細書で開示される例のうちのいくつかを実装するための例示的なコンピューティングシステムの簡略ブロック図である。
I.コンピューティングデバイスの遠隔設定
コンピューティングデバイス(たとえば、コンピュータ、スマートフォンなど)が、機能性のセットを提供するように設定され得る。機能性は、コンピューティングデバイス上にインストールされたソフトウェアアプリケーションによって、および/またはコンピューティングデバイスのハードウェア構成要素によって提供され得る。
図1は、コンピューティングデバイス上で動作するソフトウェアアプリケーションを設定することの一例を示す。図1に示されているように、コンピューティングデバイス100は、「MY_APP」とラベリングされたソフトウェアアプリケーション(「アプリ」)を動作させる。アプリは、入力を受信するための、および情報を出力するためのインターフェース102を提供する。図1に示されている例では、アプリは、インターフェース102が、ウェブアドレスを入力するためのテキストボックス104と、テキストボックス104中のウェブアドレスに向けられたウェブアクセス要求の送信をトリガするためのアクティブ化可能要素106と、ウェブアドレスに関連するコンテンツを表示するための出力インターフェース108とを含む、ウェブブラウジング機能を提供し得る。コンテンツはまた、ウェブアクセス要求の送信をトリガするための1つまたは複数のアクティブ化可能要素(たとえば、ユニバーサルリソースリンク(URL)110および111)を含み得る。インターフェース102は、たとえば、バージョン情報112を含む他の情報をも表示し得る。
コンピューティングデバイス100は、設定プロセスを通して、アプリの様々な態様を更新するための制御データを受信する。たとえば、図1に示されているように、アプリのバージョンは、アクティブ化可能検索要素114が提供される、検索機能を含むために更新され得る。アプリのウェブブラウジング機能も更新され得る。たとえば、更新の結果としてナビゲーション要素116が提供され得る。さらに、アプリ(またはコンピューティングデバイス100の他の態様)も、異なるウェブブラウジング機能を提供すること、異なるコンテンツを表示することなどを行うために更新され得る。たとえば、図1に示されているように、アプリは、可変アクセスポリシーを実装するように設定され得る。ポリシーの一部として、アプリは、ゼロレートのウェブサービスへのアクセスを提供し得る。そのようなゼロレートウェブサービスは、ユーザが、アプリを通して、ある制限を伴ってインターネットにアクセスすることを可能にし得る。たとえば、アクセスの数が上限に到達し、これが、設定プロセスをトリガすることができるまで、アクセスは利用可能であり得る。設定プロセスの後に、アプリは、ゼロレートのウェブサービスへのアクセスを提供することを停止し、無料アクセスが終了したことを示すページを表示し得る。
コンピューティングデバイス100は、サーバから制御データを受信し得る。現在、コンピューティングデバイスは、たとえば、(たとえば、TCPに基づいて)サーバとのTCPパケットベース通信チャネルを確立することによって、制御データの送信を始動し得る。コンピューティングデバイスは、次いで、制御データについての要求を含むTCPパケットを、通信チャネルを介してサーバに送信する。サーバは、要求を処理し、要求された制御データを含むTCPパケットを、通信チャネルを介してコンピューティングデバイスに送信することができる。コンピューティングデバイスは、そのような構成を通して、要求された制御データを受信し得るが、通信チャネルの管理、ならびに制御データを取得するための要求および応答が、設定プロセスの複雑さを増加させ、より多くのコンピューティングリソースを必要とする。その上、これらの要求および応答の送信はまた、かなりの量のネットワーク帯域幅を消費し、ネットワークインフラストラクチャの追加の負担をもたらし得る。
本明細書では、コンピューティングデバイスに制御データを提供するために、コンピューティングデバイスとサーバとの間の既存の通信を活用する、コンピューティングデバイスの遠隔設定のための技法が開示される。サーバは、コンピューティングデバイスといくつかのウェブリソース(たとえば、ドキュメントファイル、メディアファイルなどを含み得るウェブコンテンツ)のホストとの間の媒介として動作するサーバプロキシを含むことができる。コンピューティングデバイスは、サーバとのTCP通信チャネルを確立し得る。コンピューティングデバイスは、TCP通信チャネルを介して、ウェブリソースを要求するためのウェブアクセス要求(たとえば、ハイパーテキスト転送プロトコル(HTTP)要求)をサーバに送信し得る。ウェブアクセス要求に基づいて、サーバは、同じくTCP通信チャネルを介して、要求されたウェブリソースを含んでいるウェブアクセス応答(たとえば、HTTP応答)をコンピューティングデバイスに送信し得る。サーバはまた、ウェブアクセス応答の一部として制御データをコンピューティングデバイスに送信する。
サーバは、様々な状況において制御データをコンピューティングデバイスに送信するように設定され得る。たとえば、再び図1を参照すると、サーバは、「MY_APP」アプリを異なるバージョンに更新するために1つまたは複数の外部イベントによってトリガされ得る。外部イベントは、たとえば、タイマーの満了(たとえば、サーバは、ある時点においてアプリを更新するように設定される)、別のサーバからのアプリについての更新パッチの受信などを含むことができる。外部イベントによってトリガされた後に、サーバプロキシは、更新されるべきアプリによって送信されるウェブアクセス要求を監視し得る。そのようなウェブアクセス要求が、たとえば、TCP通信チャネルを介してコンピューティングデバイス100から受信されたとき、サーバは、ウェブアクセス応答中に、要求されたウェブリソース(たとえば、ウェブコンテンツ)、ならびに制御データを含めることができる。サーバは、次いで、制御データを含むウェブアクセス応答を、ウェブアクセス要求を送信する同じTCP通信チャネルを介してコンピューティングデバイス100に送信することができる。
サーバはまた、たとえば、ウェブアクセス要求によって要求されたウェブリソースを含む他の情報に基づいて、送信されるべき制御データを決定し得る。たとえば、図1を参照しながら上記で説明されたように、コンピューティングデバイス100は、可変アクセスポリシーを実装するためにサーバと通信していることがある。コンピューティングデバイス100は、ゼロレートのウェブサービスへのアクセス(たとえば、ニュースコンテンツへの無料アクセス)を提供し、次いで、いくつかの条件が満たされたとき、ウェブサービスへのアクセスを変更し得る。たとえば、ニュースコンテンツへの無料アクセスは、ウェブサイト「XYZnews.com」上にホストされたコンテンツに向けられた所定の数のウェブアクセス要求に達したとき、停止され得る。サーバは、コンピューティングデバイス100から受信されたそのようなウェブアクセス要求の数を追跡し、上記数に達したときにコンテンツへのアクセスを拒否するために、コンピューティングデバイス100に制御データを送信し得る。図1の例を参照すると、ユーザは、「米国ニュース」に関連するコンテンツにアクセスするために、URL110(または他のアクティブ化可能要素)をアクティブ化し得る。URL110の選択は、コンピューティングデバイスに、サーバにHTTP要求を送信させ得る。HTTP要求を受信した後に、サーバは、コンピューティングデバイス100から受信されたそのような要求の数が限界に達したと決定し得る。サーバは、コンピューティングデバイス100に送信されるべきHTTP応答中に、要求されたコンテンツ(または他のコンテンツ)を含め得る。しかしながら、サーバは、要求されたコンテンツへのユーザアクセスを拒否するために、HTTP応答中に、インターフェース102の要素のうちのいくつかを変更する制御データを含め得る。たとえば、図1に示されているように、制御データは、要求されたコンテンツをレンダリングするとき、出力インターフェース108に不透明レイヤを表示させ得る。制御データはまた、出力インターフェース108に、アクセスが拒否されることを示すためにメッセージ118を表示することと、ユーザが有料ウェブサービスにサブスクライブすることができるサブスクリプションページへのリンク120を提供することとを行わせ得る。
開示される技法では、制御データを受信するために別個の通信チャネルを確立する代わりに、コンピューティングデバイス(たとえば、コンピューティングデバイス100)は、制御データと要求されたウェブリソースの両方を受信するために同じ通信チャネルを使用することができる。その上、要求されたリソースをも含むウェブアクセス応答の一部として制御データを含めることによって、コンピューティングデバイスは、制御データを受信するためにウェブアクセス応答とは別個の追加の応答をハンドリングする必要がない。これらのすべては、コンピューティングデバイスの動作とサーバの動作とを簡略化し、制御データの送信によって引き起こされるネットワークトラフィックを低減し、コンピューティングリソースおよびネットワーキングリソースのより効率的な使用につながることがある。
その上、開示される技法はまた、コンピューティングデバイスが通常ウェブアクセス要求以外に制御データについての固有の要求を送信することを必要とすることなしに、サーバが制御データをコンピューティングデバイスに単方向にプッシュすることを可能にする。その結果、アプリの更新は、特に、常にウェブアクセス要求を送信し、ウェブアクセス応答を受信する、内蔵ウェブブラウジング機能(たとえば、Web View)をもつアプリについて、複数のコンピューティングデバイスの間で、より均一で同期された様式で実施され得る。
II.データネットワークシステム
図2は、本開示のいくつかの態様による、データネットワークシステム200の簡略ブロック図である。データネットワークシステム200は、通信ネットワーク206を通してクライアントデバイス204に接続されたウェブサーバ202を含み得、これは、イーサネット、IEEE802.11、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、3G、4G、5G、符号分割多元接続(CDMA)、デジタル加入者回線(DSL)などの技術を使用する通信リンクを含み得る。(1つまたは複数の)ウェブサーバは、ウェブリソースのセットを提供し得る。たとえば、ウェブサーバ202は、ウェブページ、ならびにJAVA(登録商標)、FLASH(登録商標)、XMLなどの他のコンテンツをサーブし得る。ユーザは、ウェブサーバ202上にホストされた情報(たとえば、ウェブコンテンツ、画像、ビデオ、ポストなど)をアップロードおよび/または検索するために、ウェブサーバ202に要求を送り得る。ウェブサーバ202は、たとえば、受信およびルーティングメッセージを含む他のウェブリソースをも提供し得る。メッセージは、たとえば、インスタントメッセージ、キューイングされたメッセージ(たとえば、電子メール)、テキストメッセージ、ショートメッセージサービス(SMS)メッセージ、または任意の他の好適なメッセージング技法を使用して送られるメッセージを含むことができる。
クライアントデバイス204は、ユーザに対応し得、プロセッサ、(揮発性メモリおよび/または不揮発性記憶ドライブをもつ)メモリ、入力および出力インターフェース、あるいは当技術分野で知られている他のハードウェアまたはソフトウェアを備え得る。クライアントデバイス204はアプリ208を含み得る。アプリ208は、図1で説明されたアプリと同様の要素を含み得る。たとえば、アプリ208は、ウェブブラウジング能力を提供することができ、ウェブアドレスを入力するための入力インターフェース(たとえば、図1のテキストボックス104)と、ウェブコンテンツを出力するための出力インターフェース(たとえば、図1の出力インターフェース108)とを含み得る。ウェブブラウジング能力を提供するために、アプリ208はまた、入力インターフェースにおいて受信されたウェブアドレスに基づいてウェブアクセス要求を生成し、いくつかのウェブリソース(たとえば、ウェブコンテンツ)について要求するために、ウェブアクセス要求をウェブサーバ202に送信し得る。アプリ208はまた、要求されたウェブリソースを含むウェブアクセス応答を処理し、ウェブアクセス応答からウェブリソースを抽出し、出力インターフェースにウェブリソースを提供し得る。その上、アプリ208はまた、上記で説明されたように、ウェブアクセス応答中に含まれる制御データを抽出し、制御データに基づいて、アプリの1つまたは複数の要素を更新し得る。
クライアントデバイス204は、ローカルプロキシ210をさらに含み得、ローカルプロキシ210は、ソフトウェアアプリケーションであり得る。ローカルプロキシ210は、アプリ208によって生成されたウェブアクセス要求をどこにルーティングすべきかを決定することができる。第1の動作モードでは、ローカルプロキシ210は、ウェブアクセス要求をウェブサーバ202に送信し得る。ローカルプロキシ210は、ウェブサーバ202との通信チャネル220を確立し得る。ローカルプロキシ210は、アプリ208によって生成されたウェブアクセス要求221を、通信チャネル220を介してウェブサーバ202に送信し得る。ローカルプロキシ210はまた、通信チャネル220を介してウェブサーバ202からウェブアクセス応答222を受信し得る。ローカルプロキシ210は、アプリ208にウェブアクセス応答222を提供することができ、アプリ208は、応答中に含まれるウェブリソース(たとえば、ウェブコンテンツ)を抽出し、出力インターフェースにウェブリソースを提供することができる。いくつかの実施形態では、通信チャネル220はTCP通信チャネルであり得、ウェブアクセス要求221はHTTP要求であり得、ウェブアクセス応答222はHTTP応答であり得る。
第2の動作モードでは、ローカルプロキシ210は、ウェブアクセス要求をサーバプロキシ212にも送信し得る。サーバプロキシ212は、プロセッサとメモリとをもつコンピューティングデバイスであり得る。サーバプロキシ212は、図2に示されているように、通信ネットワーク206の一部であるか、またはウェブサーバ202の一部であり得る。サーバプロキシ212は、アプリ208に代わってウェブサーバ202にウェブリソースを要求し得る。その場合、ローカルプロキシ210は、サーバプロキシ212との通信チャネル224を確立し得、サーバプロキシ212はまた、ウェブサーバ202との通信チャネル226を確立する。ローカルプロキシ210は、アプリ208によって生成されたウェブアクセス要求230を、通信チャネル224を介してサーバプロキシ212に送信し得る。サーバプロキシ212は、(たとえば、ウェブアクセス要求230によって要求されたものと同じウェブリソースを要求するために)ウェブアクセス要求230に基づいてウェブアクセス要求232を生成し、ウェブアクセス要求232を、通信チャネル226を介してウェブサーバ202に送信し得る。サーバプロキシ212はまた、通信チャネル226を介してウェブサーバから、要求されたウェブリソースを含むウェブアクセス応答234を受信し得る。サーバプロキシ212は、ウェブアクセス応答234に基づいて(たとえば、ウェブアクセス応答234中に含まれるウェブリソースを含めることによって)ウェブアクセス応答236を生成し、ウェブアクセス応答236をローカルプロキシ210に送信し得る。ローカルプロキシ210はまた、アプリ208にウェブアクセス応答236を提供することができ、アプリ208は、応答中に含まれるウェブリソース(たとえば、ウェブコンテンツ)を抽出し、出力インターフェースにウェブリソースを提供することができる。いくつかの実施形態では、通信チャネル224および226は、TCP通信チャネルであり得る。ウェブアクセス要求230および232はHTTP要求であり得、ウェブアクセス応答234および236はHTTP応答であり得る。
サーバプロキシ212は、ウェブサーバ202とクライアントデバイス204との間の媒介として働くことができる。サーバプロキシ212は、制御データに基づいて第1の動作モードまたは第2の動作モードを実施するようにローカルプロキシ210に指示するために、制御データをローカルプロキシ210に送信することによって、ウェブサーバ202によってホストされるウェブリソースへのクライアントデバイス204のアクセスを制御し得る。たとえば、図1の例を参照すると、ユーザは、アプリ208を介してゼロベースのウェブサービスにアクセスすることを試み得、アプリ208はウェブアクセス要求230を生成する。ゼロベースのウェブサービスへのアクセス要求に基づいて、ローカルプロキシ210は、第2のモード下で動作し、ウェブアクセス要求230をサーバプロキシ212に送信し得、サーバプロキシ212は、アプリ208からのゼロベースのウェブサービスに関連するウェブアクセス要求の数を追跡することができる。ウェブアクセス要求の数がしきい値を超えない場合、サーバプロキシ212は、(たとえば、ウェブアクセス要求232を送信することによって)アプリ208に代わってウェブリソースを要求し得る。サーバプロキシ212が、ウェブサーバ202から、要求されたウェブリソースを受信した後に、サーバプロキシ212は、要求されたウェブリソースを含むウェブアクセス応答(たとえば、ウェブアクセス応答236)を、ローカルプロキシ210に送信することができる。一方、ゼロベースのウェブサービスに関連するウェブアクセス要求の数がしきい値に達した場合、サーバプロキシ212は、ウェブアクセス応答236の一部として、制御データをローカルプロキシ210に送信し得、ローカルプロキシ210は、次いで、アプリ208に制御データ(およびウェブアクセス応答236)をフォワーディングする。制御データは、ユーザが、アプリ208を介して、要求されたウェブリソースにアクセスすることを防ぐために、アプリ208のインターフェースを更新することができる(たとえば、ウェブページのレンダリング、メッセージを表示するなど)。
その上、サーバプロキシ212はまた、ユーザが有料ウェブサービスにサブスクライブした場合、第1のモード下で動作するようにローカルプロキシ210に指示するために、制御データを送信すること(すなわち、ウェブサーバ202と直接通信すること)によって、ウェブサーバ202上にホストされたウェブリソースへの異なる程度のアクセス(たとえば、無制限アクセス)をクライアントデバイス204に許可し得る。サーバプロキシ212は、ユーザが有料ウェブサービスにサブスクライブしたと決定するために、(たとえば、サブスクリプションリンク120の選択によって引き起こされるウェブアクセス要求を検出することによって)サブスクリプションアクティビティを検出し得る。この決定に基づいて、サーバプロキシ212は、ローカルプロキシ210に、ウェブサーバ202との通信チャネル220を確立させるために、制御データをローカルプロキシ210に送信し得る。ローカルプロキシ210は、次いで、アプリ208を動作させるユーザに、ウェブサーバ202上にホストされたウェブリソースへの無制限アクセスを許可するために、サーバプロキシ212を通ることなしに、ウェブサーバ202に後続のウェブアクセス要求を送信することができる。
III.制御データ
図3は、本開示のいくつかの態様による、制御データを含むHTTP応答300の一例の簡略ブロック図である。HTTP応答300は、たとえば、図2のサーバプロキシ212によって生成され得る。サーバプロキシ212は、たとえば、アプリ208および/またはローカルプロキシ210のいくつかの態様を制御するために、HTTP応答300をクライアントデバイス204に送信することができる。ここでは説明の目的でHTTPが説明されるが、代替実施形態では他のプロトコルおよび通信技法が使用され得る。図3に戻ると、HTTP応答300は、たとえば、図2のウェブアクセス応答236であり得る。図3に示されているように、HTTP応答300は、開始行310と、ヘッダ320と、本文330とを含む。開始行310は、たとえば、HTTPバージョン情報312、ステータスコード314、および理由フレーズ(reason phrase)316を含み得る。HTTPバージョン情報312は、メッセージが関連するHTTPプロトコルのバージョンを提供する。図3の例では、HTTP応答300は、HTTPバージョン1.0に関連する。ステータスコード314と理由フレーズ316とは、HTTP応答300につながる先行HTTP要求を処理することのステータスを提供することができる。図3の例では、ステータスコード314と理由フレーズ316との組合せは、処理が成功したことを示し得る。本文330は、その先行HTTP要求によって要求されたウェブリソースを含み、たとえば、文書、画像データ、メディアデータなどを含み得る。
ヘッダ320は、ヘッダ322および324を含む、1つまたは複数のヘッダを含み得る。ヘッダ322および324の各々は、名前ストリングと値とを含み得る。図3の例では、ヘッダ322は、名前ストリング「アプリID」と値「MY_APP」とを含み、ヘッダ324は、名前ストリング「アプリアクション」と値「Code_0」とを含む。本開示のいくつかの態様によれば、制御データは、名前ストリングと値との組合せとしてヘッダ320中に挿入され得る。名前ストリングと値との組合せは、制御データの所定のセマンティックおよび構造に基づいて決定され得る。図3の例では、ヘッダ322とヘッダ324の両方は、制御データの一部であり得る。たとえば、ヘッダ322の「アプリID」名前ストリングは、ヘッダ322が、制御データによって設定されるべきアプリの識別子(「MY_APP」)を搬送することを示し得る。また、ヘッダ324の「アプリアクション」名前ストリングは、ヘッダ324が、アプリのどの要素が更新されるべきであるか、およびどんな(1つまたは複数の)更新が行われるべきであるかを示すコードを搬送することを示し得る。
ヘッダ320を含むHTTP応答300を受信すると、アプリ208は、制御データの同じ所定のセマンティックおよび構造に基づいて、ヘッダ322および324を処理することができる。たとえば、アプリ208は、HTTP応答300がそのアプリについての制御データを含んでいるのか他のアプリについての制御データを含んでいるのかを決定するために、ヘッダ322の「アプリID」名前ストリングを識別し、値「MY_APP」を抽出し、抽出された値をアプリ208の識別子と比較し得る。さらに、アプリ208はまた、ヘッダ324の「アプリアクション」名前ストリングを識別し、値「Code_0」に基づいて設定更新を決定し得る。
図4は、本開示のいくつかの態様による、設定を異なる制御データ値にマッピングする例示的なマッピングテーブル400の簡略ブロック図である。マッピングテーブル400は、サーバプロキシ212とアプリ208の両方に記憶されるか、またはさもなければサーバプロキシ212とアプリ208の両方によってアクセス可能であり得る。図4の例では、値「Code_0」、「Code_1」、および「Code_2」のセットの各々は、アプリ要素および設定セッティングに関連する。設定セッティングは、たとえば、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定を含み得る。たとえば、「Code_0」と「Code_1」の両方は、アプリ208の検索要素(たとえば、図1の検索要素114)の動作に関連し、「Code_2」は、アプリ208の出力インターフェース(たとえば、図1の出力インターフェース108)の動作に関連する。さらに、「Code_0」、「Code_1」および「Code_2」の各々は、異なる設定セッティングを表し得る。たとえば、「Code_0」を受信すると、アプリ208は、検索クエリを受信するための検索入力テキストボックスを表示することができる。また、「Code_1」を受信すると、アプリ208は、検索クエリを「DOODLE」検索エンジンに向けることができる。さらに、「Code_2」を受信すると、アプリ208は、(たとえば、ユーザが、インターフェースにおいてレンダリングされたウェブコンテンツを読み取ることを防ぐために)出力インターフェース108において不透明レイヤを表示することができる。
サーバプロキシ212はまた、上述のトリガリングイベントに基づいて、ヘッダ324に書き込まれるべき値を決定するためにマッピングテーブル400を参照することができる。たとえば、サーバプロキシ212が、アプリ208に検索入力テキストボックスを表示させるようにとの命令を受信した場合、サーバプロキシ212は、アプリ208に送信されるべきHTTP応答ヘッダ中に「Code_0」を含め得る。さらに、サーバプロキシ212が、アプリ208に検索クエリを「DOODLE」検索エンジンに向けさせるようにとの命令を受信した場合、サーバプロキシ212は、HTTP応答ヘッダ中に「Code_1」を含め得る。その上、サーバプロキシ212が、アプリ208に、HTTP応答中に含まれるウェブリソースへのアクセスを与えないことを決定した場合、サーバプロキシ212は、HTTP応答ヘッダ中に「Code_2」を含め得る。
IV.制御データの提供のためのシステムおよび方法
図5は、本開示のいくつかの態様による、制御データの送信のためのサーバプロキシ500の一例の簡略ブロック図である。サーバプロキシ500は、図2のサーバプロキシ212であり得る。サーバプロキシ500は、1つまたは複数のプロセッサ502と、ネットワークインターフェースカード(NIC)504と、サーバ側インターフェースモジュール530、クライアント側インターフェースモジュール540、アクセス要求モジュール550、アクセス応答モジュール560、および制御データ生成モジュール570を記憶するコンピュータ可読媒体520とを含み得る。サーバプロキシ500は、制御データマッピングストア580をさらに含み得る。
(1つまたは複数の)プロセッサ502は、任意の好適な処理デバイスまたはそのようなデバイスの任意の組合せを含み得る。例示的なプロセッサは、所望の機能を達成するために協働する1つまたは複数のマイクロプロセッサを備え得る。プロセッサは、ユーザおよび/またはシステム生成された要求を実行するためのプログラム構成要素を実行するのに十分な少なくとも1つの高速データプロセッサを備える中央処理ユニット(CPU)を含み得る。
NIC504は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)(たとえば、インターネット)、および様々なワイヤレス電気通信ネットワークを含む、1つまたは複数の通信ネットワークを介した、サーバプロキシ500から他のデバイス(たとえば、クライアントデバイス、サーバなど)への通信インターフェースを提供し得る。NIC504は、イーサネットカード、非同期転送モードNIC、トークンリングNIC、ワイヤレスネットワークインターフェースコントローラ(WNIC)、ワイヤレスネットワークアダプタなどを備え得る。NIC504は、ソーシャルネットワーキングシステムへの入力コンテンツの送信および受信を可能にし得る。
コンピュータ可読媒体520は、電子データを記憶することができる任意の好適な1つまたは複数のデバイスであり得る。コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)または読取り専用メモリ(ROM)デバイスを含み得る、ワーキングメモリを含む、1つまたは複数のメモリデバイスによって具現され得る。メモリデバイスの例は、メモリチップ、ディスクドライブなどを含み得る。そのようなメモリデバイスは、任意の好適な電気、光および/または磁気動作モードを使用して動作し得る。コンピュータ可読媒体520は、1つまたは複数のプロセッサ502によって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体を備え得る。複数の命令は、1つまたは複数のプロセッサ502によって実行されたとき、1つまたは複数のプロセッサ502に、本明細書で説明される方法のいずれかを実施させ得る。複数の命令は、サーバ側インターフェースモジュール530、クライアント側インターフェースモジュール540、アクセス要求モジュール550、アクセス応答モジュール560、および制御データ生成モジュール570に対応する命令を含み得、ランタイム中にコンピュータ可読媒体520にロードされる。
サーバ側インターフェースモジュール530は、別のサーバ(たとえば、ウェブサーバ202、サブスクリプションサーバなど)とサーバプロキシ500の他の構成要素との間のインターフェースを提供し得る。サーバ側インターフェースモジュール530は、別のサーバに送信されるべきウェブアクセス要求(たとえば、図2のウェブアクセス要求232)を生成するための論理と、別のサーバから受信されたウェブアクセス応答(たとえば、図2のウェブアクセス応答234)を処理するための論理とを含み得る。以下でより詳細に説明されるように、サーバ側インターフェースモジュール530は、アクセス要求モジュール550から、ウェブアクセス要求を生成するようにとの命令を受信し得る。サーバ側インターフェースモジュール530はまた、別のサーバからウェブアクセス応答を受信し、処理のために、受信されたウェブアクセス応答をアクセス応答モジュール560にフォワーディングし得る。サーバプロキシ500とサーバとが、通信ネットワーク(たとえば、イーサネット)を介して接続される場合、サーバ側インターフェースモジュール530は、NIC504を介して、サーバにウェブアクセス要求を送信し、サーバからウェブアクセス応答を受信し得る。
クライアント側インターフェースモジュール540は、クライアントデバイス(たとえば、図1のコンピューティングデバイス100、図2のクライアントデバイス204など)とサーバプロキシ500の他の構成要素との間のインターフェースを提供し得る。サーバ側インターフェースモジュール540は、クライアントデバイスから受信されたウェブアクセス要求(たとえば、図2のウェブアクセス要求230)を処理するための論理と、クライアントデバイスに送信されるべきウェブアクセス応答(たとえば、図2のウェブアクセス応答236)を生成するための論理とを含み得る。以下でより詳細に説明されるように、クライアント側インターフェースモジュール540は、アクセス応答モジュール560および制御データ生成モジュール570から、ウェブアクセス応答を生成するようにとの命令を受信し得る。クライアント側インターフェースモジュール540はまた、クライアントデバイスからウェブアクセス要求を受信し、処理のために、受信されたウェブアクセス要求をアクセス要求モジュール550にフォワーディングし得る。クライアント側インターフェースモジュール540はまた、NIC504を介して、クライアントデバイスにウェブアクセス応答を送信し、クライアントデバイスからウェブアクセス要求を受信し得る。
アクセス要求モジュール550は、(クライアント側インターフェースモジュール540を介して)クライアントデバイスから受信されたウェブアクセス要求を処理し、ウェブアクセス要求を別のサーバに送信するようにとの命令をサーバ側インターフェースモジュール530に与え得る。アクセス要求モジュール550は、たとえば、要求されたウェブリソースを識別する情報(たとえば、HTTP要求中に含まれるユニバーサルリソース識別子(URI)または部分URI)を抽出することによって、ウェブアクセス要求を処理し得る。アクセス要求モジュール550は、上記で説明されたように、可変アクセスポリシーを実装するために、特定のウェブリソースに向けられたウェブアクセス要求の数を累積し得る。アクセス要求モジュール550はまた、クライアントデバイスが、アクセスポリシーに基づいて、要求されたウェブリソースへのアクセスを許可される場合、受信されたウェブアクセス要求に基づいて(たとえば、受信されたウェブアクセス要求から抽出されたURIまたは部分URIを含めることによって)、第2のウェブアクセス要求を生成し得る。アクセス要求モジュール550は、次いで、クライアントデバイスに代わってウェブリソースを要求するために、第2のウェブアクセス要求をターゲットサーバに送信するようにサーバ側インターフェースモジュール530に命令することができる。
アクセス応答モジュール560は、(サーバ側インターフェースモジュール530を介して)別のサーバから受信されたウェブアクセス応答を処理し、ウェブアクセス応答をクライアントデバイスに送信するようにとの命令をクライアント側インターフェースモジュール540に与え得る。アクセス応答モジュール560は、たとえば、応答中に含まれるウェブリソース(たとえば、HTTP応答の本文)および他の設定情報(たとえば、HTTP応答の開始行)を抽出することによって、ウェブアクセス応答を処理し得る。アクセス応答モジュール560はまた、制御データ生成モジュールから制御データを受信し、抽出されたウェブリソースおよび制御データを含むように、アクセス応答を生成し得る。たとえば、アクセス応答モジュール560は、HTTP応答として第2のウェブアクセス応答を生成し得、開始行が、抽出された設定情報を組み込み、ヘッダが制御データを組み込み、本文が、抽出されたウェブリソースを組み込む。アクセス応答モジュール560は、次いで、上記で説明されたように、クライアントデバイスの1つまたは複数の機能性を制御/設定するために、第2のウェブアクセス応答をクライアントデバイスに送信するようにクライアント側インターフェースモジュール540に命令することができる。
制御データ生成モジュール570は、クライアントデバイスに送信されるべきウェブアクセス応答中に含まれるべき制御データを決定し得る。制御データ生成モジュール570は、制御データを生成するための1つまたは複数のトリガリングイベントを検出するための(図5に示されていない)トリガモジュールを含み得る。トリガリングイベントは、たとえば、ソフトウェア更新をプッシュするようにとの別のサーバからの命令、(たとえば、ゼロレートのウェブサービスについての)ウェブアクセス要求の数がしきい値に達することなどを含み得る。制御データ生成モジュール570はまた、トリガリングイベントに基づいて、クライアントデバイスにおいて実現されるべき設定を決定し得る。たとえば、上記で説明されたように、要求されたウェブリソースへのアクセスを阻止するために、制御データ生成モジュール570は、クライアントデバイスのウェブブラウジングアプリの出力インターフェースの動作を設定し得る。また、無制限アクセスを許可するために、制御データ生成モジュール570は、ローカルプロキシが、後続のウェブアクセス要求をサーバプロキシではなくウェブサーバに向けるように、クライアントデバイスのローカルプロキシの動作を設定し得る。制御データ生成モジュール570はまた、制御データマッピングテーブル(たとえば、図4のマッピングテーブル400)を参照して、決定された設定に基づいて、クライアントデバイスに送信されるべきウェブアクセス応答中に含まれるべき制御データを決定し、制御データをアクセス応答モジュール560に提供し得る。
いくつかの実施形態では、制御データ生成モジュール570はまた、制御データを暗号化し、暗号化された制御データをアクセス応答モジュール560に提供し得る。たとえば、制御データ生成モジュール570は、マッピングテーブル400から制御データ値(たとえば、「Code_0」)を取得し、制御データ値に基づいてハッシュ値を生成し得る。制御データ生成モジュール570はまた、鍵(たとえば、UMAC鍵)を生成し、次いで、シグネチャを生成するために鍵を使用して制御データを暗号化し得る。識別子は、クライアントデバイスに関連するか、またはクライアントデバイスとサーバプロキシとの間のTCP通信チャネル(たとえば、セッションID)に関連し得る。制御データ生成モジュール570は、ウェブアクセス要求中に、暗号化された制御データとともにハッシュ値を含め得る。クライアントデバイスは、ウェブアクセス要求およびウェブアクセス要求中に含まれる暗号化された制御データを受信すると、UMAC鍵を用いて制御データを解読し、解読された制御データに基づいてハッシュ値を算出し、そのハッシュ値をウェブアクセス要求中に含まれるハッシュ値と比較することができる。2つのハッシュ値が一致する場合、クライアントデバイスは、制御データが、信用できるソースから来たと決定し、制御データ値に従って、設定をアプリおよび/またはローカルプロキシに適用し得る。
制御データマッピングストア580は、制御データを異なる設定にマッピングする1つまたは複数のマッピングテーブル(たとえば、図4のマッピングテーブル400)を備え得る。制御データ生成モジュール570は、上記で説明されたように、制御データ生成のためにマッピングテーブルを取得するために、制御データマッピングストア580にアクセスし得る。
図6は、本開示のいくつかの態様による、制御データをクライアントデバイスに提供するための例示的な方法600を示す簡略フローチャートである。本方法は、たとえば、図2のサーバプロキシ212および図5のサーバプロキシ500によって実施され得る。
602において、システムは、クライアントデバイス(たとえば、図1のコンピューティングデバイス100、図2のクライアントデバイス204など)から、ウェブリソースについての第1の要求を受信し得る。第1の要求は、ウェブリソースのURIまたは部分URIを含むHTTP要求であり得、ウェブリソースは、たとえば、ウェブサーバ(たとえば、図2のウェブサーバ202)上にホストされたウェブコンテンツであり得る。
604において、システムは、第1の要求に基づいて、第2の要求を生成し得る。第2の要求は、第1の要求中に含まれるURI(または部分URI)を含むHTTP要求であり得る。システムは、クライアントデバイスが、要求されたウェブリソースへのアクセスを許可されるという決定に基づいて、第2の要求を生成し得る。システムは、次いで、606において、第2の要求をウェブサーバに送信する。
608において、システムは、クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成し得る。1つまたは複数の機能性は、たとえば、出力インターフェースの動作、後続のウェブアクセス要求を送信するための宛先(たとえば、後続のウェブアクセス要求をサーバプロキシに送信すべきなのか、ウェブサーバに送信すべきなのか)などを含み得る。制御データは、たとえば、別のサーバからソフトウェアパッチを受信すること、サブスクリプショントランザクションの完了など、外部イベントの検出に基づいて生成され得る。外部イベントに基づいて、システムは、クライアントデバイスの様々な構成要素(たとえば、アプリ208、ローカルプロキシ210など)に適用されるべき設定のセットを決定し得る。システムは、制御データマッピングテーブル(たとえば、図4のマッピングテーブル400)を参照し、設定のセットに基づいて制御データを決定し得る。
610において、システムは、ウェブサーバから、要求されたウェブリソースを含む第1の応答を受信し得る。第1の応答はHTTP応答であり得る。
612において、システムは、制御データとウェブリソースとを含む第2の応答を生成し得る。第2の応答は、制御データから生成された1つまたは複数のヘッダをもつHTTP応答であり得る。制御データも暗号化され得る。
614において、システムは、クライアントデバイスの1つまたは複数の機能性を制御するために、第2の応答をクライアントデバイスに送信し得る。たとえば、第2の応答中に含まれる制御データに基づいて、クライアントデバイスは、ウェブコンテンツへのユーザアクセスを拒否するために、不透明レイヤを表示する、サーバプロキシの代わりにウェブサーバに後続のウェブアクセス要求を送信する、などを行い得る。
V.例示的なコンピューティングシステム
図7は、コンピューティングシステムのブロック図の一例を示す。図7に示されているコンピューティングシステムは、提供される説明の代替でまたは提供される説明を補足するために、本明細書で説明される任意のコンピューティングデバイス(たとえば、図1のコンピューティングデバイス100、図2のクライアントデバイス204およびサーバプロキシ212、ならびに図5のサーバプロキシ500など)を実装するために使用され得る。この例では、コンピューティングシステム700は、プロセッサ710と、バス720と、ストレージ730と、メモリ740と、ランダムアクセスメモリ(RAM)742と、読取り専用メモリ(ROM)744と、ファイルシステム750と、ユーザ入力デバイス760と、出力デバイス770と、ネットワークインターフェース780と、通信ネットワーク790とを含む。本例では、ユーザ入力デバイス760は、一般に、コンピュータマウス、トラックボール、トラックパッド、ジョイスティック、ワイヤレス遠隔制御装置、描画タブレット、音声コマンドシステム、アイトラッキングシステムなどとして具現される。ユーザ入力デバイス760は、一般に、ユーザが、ボタンのクリックなど、コマンドを介して出力デバイス770上に現れるオブジェクト、アイコン、テキストなどを選択することを可能にする。出力デバイス770は、コンピューティングデバイスに関連するスクリーン、バーチャルリアリティ環境、投影システム、スピーカーなどを含み得る。
ネットワークインターフェース780の例は、一般に、イーサネットカード、モデム(電話、衛星、ケーブル、統合サービスデジタルネットワーク(ISDN))、非同期デジタル加入者回線(DSL)ユニット、FireWire(登録商標)インターフェース、ユニバーサルシリアルバス(USB)インターフェースなどを含む。たとえば、ネットワークインターフェース780は、通信ネットワーク790、FireWire(登録商標)バスなどに結合され得る。他の実施形態では、ネットワークインターフェース780は、プロセッサ710上に物理的に組み込まれ得、ソフトデジタル加入者回線(DSL)など、ソフトウェアプログラムであり得る。ネットワークインターフェース780は、図5のNIC504に対応し得る。
様々な例では、コンピューティングシステム700は、一般に、プロセッサ710、およびRAM742、ROM744などのメモリ740デバイス、ファイルシステム750および上記の構成要素を相互接続するシステムバス720など、周知のコンピュータ構成要素を含む。プロセッサ710は、図5のプロセッサ502に対応し得る。メモリ740は、たとえば、図5のサーバ側モジュール530、クライアント側インターフェースモジュール540、アクセス要求モジュール550、アクセス応答モジュール560、および制御データ生成モジュール570を記憶し得る。それらのモジュールは、本明細書で説明される方法のいずれかを実施するために、プロセッサ710によって実行され得る。
RAM742およびROM744は、実行可能コンピュータコード、人間可読コードなどを含む、本開示の実施形態など、データを記憶するように設定された有形、非一時的媒体の例である。他のタイプの有形媒体は、フロッピーディスク、リムーバブルハードディスク、CD−ROM、DVD、およびバーコードなどの光記憶媒体、フラッシュメモリなどの半導体メモリ、バッテリーバックアップ付き揮発性メモリ、ネットワーク化された記憶デバイスなどを含む。
様々な例では、コンピューティングシステム700は、ハイパーテキスト転送プロトコル(HTTP)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、リアルタイムストリーミングプロトコル(RTP/RTSP)など、ネットワークを介した通信を可能にするソフトウェアをも含み得る。本開示の代替実施形態では、たとえば、インターネットワークパケット交換(IPX)、ユーザデータグラムプロトコル(UDP)など、他の通信ソフトウェアおよび転送プロトコルも使用され得る。
実施形態は、特に、方法、システムおよび記憶媒体を対象とする添付の特許請求の範囲において開示され、1つの請求項カテゴリー、たとえば、方法において言及された特徴はいずれも、別の請求項カテゴリー、たとえば、システムまたはコンピュータプログラム製品においても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的理由で選定されるにすぎない。ただし、前の請求項への意図的な参照(特に複数の従属関係)から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに/あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
特定の実施形態が説明されたが、様々な変更形態、改変形態、代替構成および等価物が可能である。実施形態は、ある特定のデータ処理環境内での動作に制限されず、複数のデータ処理環境内で自由に動作することができる。さらに、いくつかの実施形態が特定の一連のトランザクションおよびステップを使用して説明されたが、これは、限定するものではないことが当業者には明らかであろう。いくつかのフローチャートが動作を連続プロセスとして説明するが、動作の多くは、並列にまたはコンカレントに実施され得る。さらに、動作の順序が並べ替えられ得る。プロセスは、図中に含まれない追加のステップを有し得る。上記で説明された実施形態の様々な特徴および態様が、個々にまたは一緒に使用され得る。
また、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されている個々の例は、プロセスとして説明され得ることに留意されたい。フローチャートは動作を連続プロセスとして説明し得るが、動作の多くは、並列にまたはコンカレントに実施され得る。さらに、動作の順序が並べ替えられ得る。プロセスは、その動作が完了したとき終了するが、図中に含まれない追加のステップを有し得る。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、その終了は、呼出し関数またはメイン関数への関数のリターンに対応することができる。
「機械可読記憶媒体」または「コンピュータ可読記憶媒体」という用語は、限定はしないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、ならびに(1つまたは複数の)命令および/またはデータを記憶するか、含んでいるか、または搬送することが可能な様々な他の媒体を含む。機械可読記憶媒体またはコンピュータ可読記憶媒体は、データが記憶され得る非一時的媒体を含み得、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的電子信号を含まない。非一時的媒体の例は、限定はしないが、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータプログラム製品は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラム文の任意の組合せを表し得る、コードおよび/または機械実行可能命令を含み得る。
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、機械可読媒体に記憶され得る。必要なタスクを実施するために、1つまたは複数のプロセッサが、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、プログラムコード、またはコードセグメントを実行し得る。
図のうちのいくつかに示されているシステムは、様々な設定において提供され得る。いくつかの例では、システムは、分散型システムとして設定され得、システムの1つまたは複数の構成要素が、クラウドコンピューティングシステムにおいてなど、1つまたは複数のネットワークにわたって分散される。
構成要素が、ある動作を実施するように「設定されて」いるものとして説明される場合、そのような設定は、たとえば、その動作を実施するように電子回路または他のハードウェアを設計することによって、その動作を実施するようにプログラマブル電子回路(たとえば、マイクロプロセッサまたは他の好適な電子回路)をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。
さらに、いくつかの実施形態が、ハードウェアおよびソフトウェアの特定の組合せを使用して説明されたが、ハードウェアおよびソフトウェアの他の組合せも可能であることを認識されたい。いくつかの実施形態が、ハードウェアのみで、またはソフトウェアのみで、あるいはそれらの組合せを使用して実装され得る。一例では、ソフトウェアは、本開示で説明されるステップ、動作、またはプロセスいずれかまたはすべてを実施するための1つまたは複数のプロセッサによって実行可能なコンピュータプログラムコードまたは命令を含んでいるコンピュータプログラム製品として実装され得、コンピュータプログラムは、非一時的コンピュータ可読媒体に記憶され得る。本明細書で説明される様々なプロセスは、任意の組合せで同じプロセッサまたは異なるプロセッサ上に実装され得る。
デバイス、システム、構成要素またはモジュールが、ある動作または機能を実施するように設定されているものとして説明される場合、そのような設定は、たとえば、その動作を実施するように電子回路を設計することによって、コンピュータ命令またはコード、あるいは非一時的メモリ媒体に記憶されたコードまたは命令を実行するようにプログラムされたプロセッサまたはコアを実行することによってなど、その動作を実施するようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。プロセスは、限定はしないが、プロセス間通信のための従来の技法を含む様々な技法を使用して通信することができ、プロセスの異なるペアが異なる技法を使用し得るか、または、プロセスの同じペアが異なる時間において異なる技法を使用し得る。
実施形態の完全な理解を与えるために、具体的な詳細が本開示で与えられる。ただし、実施形態は、これらの具体的な詳細なしに実施され得る。たとえば、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、実施形態を不明瞭にすることを回避するために、不要な詳細なしに示された。この説明は、例示的な実施形態を提供するにすぎず、他の実施形態の範囲、適用可能性、または設定を限定するものではない。むしろ、実施形態の先行する説明は、様々な実施形態を実装することを可能にする説明を当業者に提供することになる。要素の機能および構成において様々な変更が行われ得る。
したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。しかしながら、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、差し引き、削除、ならびに他の修正および変更がそれに行われ得ることは明らかであろう。したがって、特定の実施形態が説明されたが、これらは限定するものではない。様々な変更形態および等価物が、以下の特許請求の範囲内に入る。

Claims (34)

  1. クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を含む、コンピュータ実装制御方法。
  2. 前記方法が、サーバプロキシによって実施され、
    前記クライアントデバイスが、アプリとローカルプロキシとを含み、
    前記第1の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
    請求項1に記載の方法。
  3. 前記第1の要求と前記第2の要求とが、HTTP要求であり、
    前記第1の応答と前記第2の応答とが、HTTP応答であり、
    前記制御データが、前記第2の応答の1つまたは複数のヘッダ中に含まれる、
    請求項2に記載の方法。
  4. 前記1つまたは複数の機能性が、前記アプリに関連する、請求項2に記載の方法。
  5. 前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含む、請求項4に記載の方法。
  6. 前記1つまたは複数の機能性が、前記ローカルプロキシに関連する、請求項2に記載の方法。
  7. 前記第1の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第1のTCP接続を通して前記ローカルプロキシから受信され、
    前記制御データが、前記ウェブサーバとの第2のTCP接続を確立することと、前記第2のTCP接続を通して前記ウェブサーバに第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項6に記載の方法。
  8. 前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
    前記制御データが、前記第2のTCP接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項7に記載の方法。
  9. 前記制御データが、前記第1の要求に基づいて生成される、請求項1に記載の方法。
  10. 前記制御データが、シグネチャで暗号化される、請求項1に記載の方法。
  11. 1つまたは複数のプロセッサと、
    命令を記憶する非一時的コンピュータ可読媒体と
    を備えるシステムであって、前記命令が、前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を含む動作を実施させる、
    システム。
  12. 前記システムが、サーバプロキシの一部であり、
    前記クライアントデバイスが、アプリとローカルプロキシとを含み、
    前記第1の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
    請求項11に記載のシステム。
  13. 前記第1の要求と前記第2の要求とが、HTTP要求であり、
    前記第1の応答と前記第2の応答とが、HTTP応答であり、
    前記制御データが、前記第2の応答の1つまたは複数のヘッダ中に含まれる、
    請求項12に記載のシステム。
  14. 前記1つまたは複数の機能性が、前記アプリに関連する、請求項12に記載のシステム。
  15. 前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含む、請求項14に記載のシステム。
  16. 前記1つまたは複数の機能性が、前記ローカルプロキシに関連する、請求項12に記載のシステム。
  17. 前記第1の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第1のTCP接続を通して前記ローカルプロキシから受信され、
    前記制御データが、前記ウェブサーバとの第2のTCP接続を確立することと、前記第2のTCP接続を通して前記ウェブサーバに第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項16に記載のシステム。
  18. 前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
    前記制御データが、前記第2のTCP接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項17に記載のシステム。
  19. 前記制御データが、前記第1の要求に基づいて生成される、請求項11に記載のシステム。
  20. 1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記複数の命令が、前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を行わせる、
    非一時的コンピュータ可読記憶媒体。
  21. クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を含む、コンピュータ実装制御方法。
  22. 前記方法が、サーバプロキシによって実施され、
    前記クライアントデバイスが、アプリとローカルプロキシとを含み、
    前記第1の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
    請求項21に記載の方法。
  23. 前記第1の要求と前記第2の要求とが、HTTP要求であり、
    前記第1の応答と前記第2の応答とが、HTTP応答であり、
    前記制御データが、前記第2の応答の1つまたは複数のヘッダ中に含まれる、
    請求項22に記載の方法。
  24. 前記1つまたは複数の機能性が、前記アプリに関連し、
    随意に、前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含む、請求項22または23に記載の方法。
  25. 前記1つまたは複数の機能性が、前記ローカルプロキシに関連し、
    随意に、前記第1の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第1のTCP接続を通して前記ローカルプロキシから受信され、
    前記制御データが、前記ウェブサーバとの第2のTCP接続を確立することと、前記第2のTCP接続を通して前記ウェブサーバに第3の要求を送信することとを行うように前記ローカルプロキシを制御し、および/または
    随意に、前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
    前記制御データが、前記第2のTCP接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項22から24のいずれか一項に記載の方法。
  26. 前記制御データが、前記第1の要求に基づいて生成される、請求項21から25のいずれか一項に記載の方法。
  27. 前記制御データが、シグネチャで暗号化される、請求項21から26のいずれか一項に記載の方法。
  28. 1つまたは複数のプロセッサと、
    命令を記憶する非一時的コンピュータ可読媒体と
    を備えるシステムであって、前記命令が、前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を含む動作を実施させる、
    システム。
  29. 前記システムが、サーバプロキシの一部であり、
    前記クライアントデバイスが、アプリとローカルプロキシとを含み、
    前記第1の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
    請求項28に記載のシステム。
  30. 前記第1の要求と前記第2の要求とが、HTTP要求であり、
    前記第1の応答と前記第2の応答とが、HTTP応答であり、
    前記制御データが、前記第2の応答の1つまたは複数のヘッダ中に含まれる、
    請求項29に記載のシステム。
  31. 前記1つまたは複数の機能性が、前記アプリに関連し、
    随意に、前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも1つを含む情報を含む、請求項29または30に記載のシステム。
  32. 前記1つまたは複数の機能性が、前記ローカルプロキシに関連し、
    随意に、前記第1の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第1のTCP接続を通して前記ローカルプロキシから受信され、
    前記制御データが、前記ウェブサーバとの第2のTCP接続を確立することと、前記第2のTCP接続を通して前記ウェブサーバに第3の要求を送信することとを行うように前記ローカルプロキシを制御し、および/または
    随意に、前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
    前記制御データが、前記第2のTCP接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第3の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項29から31のいずれか一項に記載のシステム。
  33. 前記制御データが、前記第1の要求に基づいて生成される、請求項28から32のいずれか一項に記載のシステム。
  34. 1つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記複数の命令が、前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
    クライアントデバイスから、ウェブリソースについての第1の要求を受信することと、
    前記第1の要求に基づいて、第2の要求を生成することと、
    前記ウェブリソースについて、ウェブサーバに前記第2の要求を送信することと、
    前記クライアントデバイスの1つまたは複数の機能性に関連する制御データを生成することと、
    前記ウェブサーバから前記ウェブリソースを含む第1の応答を受信することと、
    前記制御データと前記ウェブリソースとを含む第2の応答を生成することと、
    前記クライアントデバイスの前記1つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第2の応答を送信することと
    を行わせる、
    非一時的コンピュータ可読記憶媒体。
JP2020503261A 2017-07-24 2017-07-25 プロキシベースのネットワーク通信における制御データのトランスポート Active JP7018498B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,326 US11025724B2 (en) 2017-07-24 2017-07-24 Transport of control data in proxy-based network communications
US15/658,326 2017-07-24
PCT/US2017/043787 WO2019022723A1 (en) 2017-07-24 2017-07-25 TRANSPORTING CONTROL DATA IN NETWORK COMMUNICATIONS BASED ON A REPRESENTATIVE

Publications (2)

Publication Number Publication Date
JP2020529655A true JP2020529655A (ja) 2020-10-08
JP7018498B2 JP7018498B2 (ja) 2022-02-10

Family

ID=65023333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020503261A Active JP7018498B2 (ja) 2017-07-24 2017-07-25 プロキシベースのネットワーク通信における制御データのトランスポート

Country Status (5)

Country Link
US (1) US11025724B2 (ja)
JP (1) JP7018498B2 (ja)
KR (1) KR102308269B1 (ja)
CN (1) CN110999260B (ja)
WO (1) WO2019022723A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US10789642B2 (en) 2014-05-30 2020-09-29 Apple Inc. Family accounts for an online content storage sharing service
US9875346B2 (en) 2015-02-06 2018-01-23 Apple Inc. Setting and terminating restricted mode operation on electronic devices
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US11025724B2 (en) * 2017-07-24 2021-06-01 Facebook, Inc. Transport of control data in proxy-based network communications
EP4184896A1 (en) 2017-08-28 2023-05-24 Bright Data Ltd. Content fetching through intermediate device
US10872024B2 (en) * 2018-05-08 2020-12-22 Apple Inc. User interfaces for controlling or presenting device usage on an electronic device
EP4053717A3 (en) * 2019-02-25 2022-10-26 Bright Data Ltd. System and method for url fetching retry mechanism
WO2020202135A2 (en) 2019-04-02 2020-10-08 Luminati Networks Ltd. System and method for managing non-direct url fetching service
KR102609732B1 (ko) * 2021-11-16 2023-12-05 주식회사 카카오엔터프라이즈 Api 게이트웨이 및 그의 동작 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007288A (ja) * 2000-06-21 2002-01-11 Ntt Communications Kk 否認防止情報管理方法、その装置及びプログラム記録媒体
JP2005182364A (ja) * 2003-12-18 2005-07-07 Canon Software Inc Www中継サーバおよび情報閲覧時間計測方法およびプログラムおよび記録媒体
JP2010160592A (ja) * 2009-01-07 2010-07-22 Hitachi Ltd サービス中継装置、サービス中継方法、この方法を実行するためのプログラム
JP2011186912A (ja) * 2010-03-10 2011-09-22 Fujitsu Ltd 中継処理方法、プログラム及び装置
JP2012095280A (ja) * 2010-09-30 2012-05-17 Brother Ind Ltd 画像処理システム、画像処理方法、画像処理装置、中継装置、及び、中継プログラム。
US20140207911A1 (en) * 2013-01-22 2014-07-24 James Kosmach System and method for embedding multimedia controls and indications in a webpage
JP2016509277A (ja) * 2012-12-13 2016-03-24 クアルコム,インコーポレイテッド 通信システムにおけるクライアントデバイスのウェブブラウザでのリダイレクトされたウェブページの読み込み

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673322A (en) * 1996-03-22 1997-09-30 Bell Communications Research, Inc. System and method for providing protocol translation and filtering to access the world wide web from wireless or low-bandwidth networks
JP3307894B2 (ja) * 1999-06-22 2002-07-24 三菱電機株式会社 通信方法
US6684257B1 (en) * 1999-10-15 2004-01-27 International Business Machines Corporation Systems, methods and computer program products for validating web content tailored for display within pervasive computing devices
US6895444B1 (en) * 2000-09-15 2005-05-17 Motorola, Inc. Service framework with local proxy for representing remote services
US7076244B2 (en) * 2001-07-23 2006-07-11 Research In Motion Limited System and method for pushing information to a mobile device
US7383339B1 (en) * 2002-07-31 2008-06-03 Aol Llc, A Delaware Limited Liability Company Local proxy server for establishing device controls
US8468578B1 (en) * 2002-12-30 2013-06-18 Aol Inc. Establishing access controls in a premise-based environment
JP4160092B2 (ja) * 2004-03-09 2008-10-01 ケイティーフリーテル カンパニー リミテッド パケットデータ課金細分化方法及びそのシステム
US7523145B2 (en) * 2004-04-22 2009-04-21 Opentv, Inc. System for managing data in a distributed computing system
US20050271207A1 (en) * 2004-06-05 2005-12-08 Helmut Frey Method and system for chaotic digital signature, encryption, and authentication
US20070061488A1 (en) * 2004-09-20 2007-03-15 Trilibis Inc. System and method for flexible user interfaces
CN100499577C (zh) * 2005-01-20 2009-06-10 中兴通讯股份有限公司 一种快速响应的集中式接纳控制系统及控制方法
US20060200566A1 (en) * 2005-03-07 2006-09-07 Ziebarth Wayne W Software proxy for securing web application business logic
US7899919B2 (en) * 2005-04-19 2011-03-01 Lg Electronics Inc. Method and apparatus for making devices on a local network remotely-accessible
US7594003B2 (en) * 2005-08-02 2009-09-22 Aol Llc Client/server web application architectures for offline usage, data structures, and related methods
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US9306975B2 (en) * 2006-09-19 2016-04-05 The Invention Science Fund I, Llc Transmitting aggregated information arising from appnet information
US8539329B2 (en) * 2006-11-01 2013-09-17 Bloxx Limited Methods and systems for web site categorization and filtering
US7756903B2 (en) * 2006-12-12 2010-07-13 Yahoo! Inc. Configuring a search engine results page with environment-specific information
WO2009055458A1 (en) * 2007-10-27 2009-04-30 Research In Motion Limited Content disposition system and method for processing message content in a distributed environment
US8839403B2 (en) * 2007-12-31 2014-09-16 Sandisk Il Ltd. Local proxy system and method
US8543667B2 (en) * 2008-01-14 2013-09-24 Akamai Technologies, Inc. Policy-based content insertion
KR100967337B1 (ko) 2008-08-20 2010-07-05 주식회사 컴퍼니원헌드레드 프록시 서버를 이용한 이동통신 단말기의 웹 브라우저 시스템
US20100057830A1 (en) * 2008-08-26 2010-03-04 Nokia Corporation Controlling Client-Server Communications
US8621065B1 (en) * 2008-10-23 2013-12-31 Amazon Technologies, Inc. Dynamic blocking of suspicious electronic submissions
US20100153568A1 (en) * 2008-12-16 2010-06-17 Nokia Corporation Methods, apparatuses, and computer program products for providing a local proxy for accessing web services
US10263958B2 (en) * 2010-03-18 2019-04-16 Nominum, Inc. Internet mediation
EP2599280A2 (en) 2010-07-26 2013-06-05 Seven Networks, Inc. Mobile application traffic optimization
US8484287B2 (en) 2010-08-05 2013-07-09 Citrix Systems, Inc. Systems and methods for cookie proxy jar management across cores in a multi-core system
US9276979B2 (en) * 2010-09-01 2016-03-01 Vuclip (Singapore) Pte. Ltd. System and methods for resilient media streaming
US9021048B2 (en) * 2010-11-01 2015-04-28 Seven Networks, Inc. Caching adapted for mobile application behavior and network conditions
US8824370B2 (en) * 2010-12-16 2014-09-02 Openet Telecom Ltd. Methods, systems and devices for dynamic context-based routing
US8799470B2 (en) * 2011-03-11 2014-08-05 Qualcomm Incorporated System and method using a client-local proxy-server to access a device having an assigned network address
US20130031601A1 (en) * 2011-07-27 2013-01-31 Ross Bott Parental control of mobile content on a mobile device
US8813092B2 (en) * 2011-10-12 2014-08-19 Raytheon Company CORBA embedded inter-orb protocol (EIOP)
FI125252B (en) 2011-12-07 2015-08-14 Arm Finland Oy Procedure, device and system for managing web services
US8977704B2 (en) * 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US10120847B2 (en) * 2012-01-27 2018-11-06 Usablenet Inc. Methods for transforming requests for web content and devices thereof
GB2511562B (en) * 2012-03-02 2015-08-12 Seven Networks Inc Providing data to a mobile application accessible at a mobile device via different network connections without interruption and mobile device which hands over
WO2013190545A1 (en) * 2012-06-17 2013-12-27 Skycure Ltd Access control system for a mobile device
WO2014062921A1 (en) * 2012-10-19 2014-04-24 Interdigital Patent Holdings, Inc. Multi-hypothesis rate adaptation for http streaming
US20140173111A1 (en) * 2012-12-19 2014-06-19 Netzero Wireless, Inc. Data usage management systems and methods
US10075554B2 (en) * 2012-12-20 2018-09-11 Facebook, Inc. Detecting mobile device attributes
US9213845B1 (en) * 2013-03-08 2015-12-15 Amazon Technologies, Inc. Content access control across multiple media devices
US10282401B2 (en) * 2013-03-13 2019-05-07 Usablenet Inc. Methods for processing cascading style sheets and devices thereof
US9787687B2 (en) * 2013-04-10 2017-10-10 Spotify Ab Systems and methods for efficient and secure temporary anonymous access to media content
EP3008942B1 (en) * 2013-06-11 2018-10-10 Seven Networks, LLC Application and/or server stability in signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US20150019686A1 (en) * 2013-07-12 2015-01-15 Seven Networks, Inc. Distributed caching systems with configurable extended caching optimization
US9065765B2 (en) * 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9654580B2 (en) * 2013-10-08 2017-05-16 Microsoft Technology Licensing, Llc Proxy-based web application monitoring through script instrumentation
US9697189B2 (en) * 2013-11-15 2017-07-04 Instart Logic, Inc. Partial website optimization for a web publisher
US9351254B2 (en) * 2014-01-22 2016-05-24 Seven Networks, Llc Method for power saving in mobile devices by optimizing wakelocks
US20150249852A1 (en) * 2014-02-28 2015-09-03 United Video Properties, Inc. Systems and methods for crowd-sourced media access control
US9380342B2 (en) * 2014-02-28 2016-06-28 Rovi Guides, Inc. Systems and methods for control of media access based on crowd-sourced access control data and user-attributes
US9391995B2 (en) * 2014-09-30 2016-07-12 Airwatch Llc Remote processing of mobile applications
EP3018580A1 (en) 2014-11-06 2016-05-11 Alcatel Lucent Cache server and method for serving and caching web resources
US9342617B1 (en) * 2015-05-19 2016-05-17 Parrable, Inc. Unique identifiers for browsers
US9747434B1 (en) * 2015-09-17 2017-08-29 EMC IP Holding Company LLC Authenticating with an external device by providing a message having message fields arranged in a particular message field order
US20170302619A1 (en) * 2016-04-19 2017-10-19 Virtual Network Element, Inc. System and Method for Automating Protocol Implementation in a Diameter Wireless Network
US20190141013A1 (en) * 2016-06-02 2019-05-09 Adjesty Sofware Ltd. Method and system for informational content quality verification
US10277701B2 (en) * 2016-07-08 2019-04-30 Facebook, Inc. Methods and Systems for Rewriting Scripts to Direct Requests
US10402181B2 (en) * 2016-07-18 2019-09-03 Airwatch Llc Generating and optimizing deployment configurations for enrolled devices
US10282172B2 (en) * 2016-09-12 2019-05-07 Adobe Inc. Authoring and deploying television apps and pages in a content management system
US10853887B2 (en) * 2016-09-27 2020-12-01 Adobe Inc. Determination of paywall metrics
US10367784B2 (en) * 2016-09-30 2019-07-30 Palo Alto Networks, Inc. Detection of compromised credentials as a network service
US10542459B2 (en) * 2017-03-17 2020-01-21 Verizon Patent And Licensing Inc. Systems and methods for accessing multiple application servers via a service capability exposure function
US11025724B2 (en) * 2017-07-24 2021-06-01 Facebook, Inc. Transport of control data in proxy-based network communications
US11062050B2 (en) * 2017-11-24 2021-07-13 Elsi Inc Devices, systems, and methods for securely storing and managing sensitive information
US11088994B2 (en) * 2017-12-01 2021-08-10 Twingate Inc. Local interception of traffic to a remote forward proxy
CN112364274A (zh) * 2020-10-28 2021-02-12 北京中科网威信息技术有限公司 Web站点访问加速方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007288A (ja) * 2000-06-21 2002-01-11 Ntt Communications Kk 否認防止情報管理方法、その装置及びプログラム記録媒体
JP2005182364A (ja) * 2003-12-18 2005-07-07 Canon Software Inc Www中継サーバおよび情報閲覧時間計測方法およびプログラムおよび記録媒体
JP2010160592A (ja) * 2009-01-07 2010-07-22 Hitachi Ltd サービス中継装置、サービス中継方法、この方法を実行するためのプログラム
JP2011186912A (ja) * 2010-03-10 2011-09-22 Fujitsu Ltd 中継処理方法、プログラム及び装置
JP2012095280A (ja) * 2010-09-30 2012-05-17 Brother Ind Ltd 画像処理システム、画像処理方法、画像処理装置、中継装置、及び、中継プログラム。
JP2016509277A (ja) * 2012-12-13 2016-03-24 クアルコム,インコーポレイテッド 通信システムにおけるクライアントデバイスのウェブブラウザでのリダイレクトされたウェブページの読み込み
US20140207911A1 (en) * 2013-01-22 2014-07-24 James Kosmach System and method for embedding multimedia controls and indications in a webpage

Also Published As

Publication number Publication date
US20190028548A1 (en) 2019-01-24
JP7018498B2 (ja) 2022-02-10
US11025724B2 (en) 2021-06-01
WO2019022723A1 (en) 2019-01-31
CN110999260A (zh) 2020-04-10
KR20200023485A (ko) 2020-03-04
KR102308269B1 (ko) 2021-10-06
CN110999260B (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
JP7018498B2 (ja) プロキシベースのネットワーク通信における制御データのトランスポート
US10171591B2 (en) Connecting public cloud with private network resources
US10411956B2 (en) Enabling planned upgrade/downgrade of network devices without impacting network sessions
US9706371B2 (en) Push notification middleware
US10587583B2 (en) Prioritizing application traffic through network tunnels
EP3056993A1 (en) Enabling an on-premises resource to be exposed to a public cloud application securely and seamlessly
US11178111B2 (en) Licensing authority controlled modification of http headers in a proxy-based system
JP2017184259A (ja) 協働環境におけるフロー制御のためのおよび信頼性のある通信のための方法
JP2018512084A (ja) 高度にスケーラブルでフォールトトレラントなリモートアクセスアーキテクチャと、当該リモートアクセスアーキテクチャに接続する方法
US9426152B2 (en) Secure transfer of web application client persistent state information into a new domain
WO2020232698A1 (en) Secure web application delivery platform
US11503104B1 (en) Implementing a queuing system in a distributed network
EP3276914A1 (en) Data sharing method and device for virtual desktop
US9754327B2 (en) Method and apparatus for configuring social networking site sharing functions
CN114586325A (zh) 用于基于5g通用媒体应用格式的媒体流式传输的内容准备模板的方法
EP3435629B1 (en) Transport of control data in proxy-based network communications
RU2629444C2 (ru) Способ и сервер определения спам активности в облачной системе
US11290523B1 (en) High-speed transfer of data from device to service
US20150149596A1 (en) Sending mobile applications to mobile devices from personal computers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210831

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220131

R150 Certificate of patent or registration of utility model

Ref document number: 7018498

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150