以下に、本願の開示する中継装置、情報再現プログラム及び情報再現方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、ウェブブラウザとウェブサーバとの間の通信を中継する中継装置に適用した場合を示す。しかし、本実施例によりこの発明が限定されるものではなく、本発明は、中継装置以外であってもウェブサーバに送信するリクエストデータを処理する情報処理装置にも適用可能である。
[実施例1に係るウェブ中継システムの構成]
図1は、本実施例1に係るウェブ中継システム9の構成を示す機能ブロック図である。図1に示すように、ウェブ中継システム9は、中継装置1と、ウェブブラウザ2と、ウェブサーバ3とを有する。中継装置1は、ウェブブラウザ2とウェブサーバ3との間の通信を中継する。ウェブブラウザ2は、ウェブサービスを利用する、パーソナルコンピュータなどのユーザ端末である。ウェブサーバ3は、ウェブサービスを実施する。なお、ウェブ中継システム9では、ウェブサーバ3を中継装置1及びウェブブラウザ2と同一のネットワーク上に適用した場合であっても良いし、ウェブサーバ3を外部装置として異なるネットワーク上に適用した場合であっても良い。
中継装置1は、制御部10及び記憶部20を有する。制御部10は、リクエスト記録部11と、リクエスト送信部12と、レスポンス送信部13と、レスポンス記録部14と、汎用処理部15と、通信記録解析部16と、再現部17とを有する。通信記録解析部16は、通信記録を解析する。さらに、通信記録解析部16は、遷移関係生成部16aを有する。また、制御部20は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路又はCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。なお、遷移関係生成部16aは、生成部の一例として挙げられる。また、再現部17は、再現部の一例として挙げられる。
記憶部20は、通信記録テーブル21及び遷移関係テーブル22を有する。記憶部20は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、又は、ハードディスク、光ディスクなどの記憶装置に対応する。なお、通信記録テーブル21は、記憶部の一例として挙げられる。
リクエスト記録部11は、所定の業務の一連の操作毎にウェブブラウザ2から送信されたリクエストデータを順次通信記録テーブル21に記録する。ここで、所定の業務とは、例えば、在庫検索に関する業務であったり、出張旅費の精算に関する業務であったりするが、ウェブブラウザ2に一連の操作画面を順次遷移させる業務であれば良い。リクエスト送信部12は、ウェブブラウザ2から送信されたリクエストデータをウェブサーバ3に送信する。
レスポンス記録部14は、ウェブサーバ3から送信された、リクエストデータに対応するレスポンスデータを順次通信記録テーブル21に記録する。レスポンス送信部13は、ウェブサーバ3から送信された、リクエストデータに対応するレスポンスデータをウェブブラウザ2に送信する。このとき、レスポンス送信部13は、送信対象のレスポンスデータに対するリクエストデータが中継装置1を経由するように、当該レスポンスデータに該当するスクリプトを埋め込む。これにより、ウェブブラウザ2側の環境に対して特殊なソフトウェアが組み込まれなくても、レスポンス記録部14は、ウェブブラウザ2からのリクエストデータを記録することができるようになる。
ここで、通信記録テーブル21のデータ構造について、図2の上段及び図2の下段を参照しながら説明する。図2は、通信記録テーブル21のデータ構造の一例を示す図である。図2の下段に示すように、通信記録テーブル21は、識別番号21a、処理識別子21b、ユーザ識別子21c、及びURL21d毎に、リクエストデータ21eとレスポンスデータ21fとリファラ21gとを対応付けて記憶する。処理識別子21bは、業務に対応する処理識別子を示す。ユーザ識別子21cは、操作するユーザの識別子を示す。URL21dは、ウェブサーバ3で実行すべき処理のURL(Uniform Resource Locator)を示す。リクエストデータ21eは、ユーザ識別子21cのユーザからURL21dに対してリクエストする際のリクエストのデータを示す。レスポンスデータ21fは、リクエストに対するレスポンスのデータを示す。リファラ21gは、ページの遷移を管理するために用いられる情報であって遷移する前のページのURLを示し、ヘッダ情報の1つとしてリクエストデータ21eに設定される。なお、URL21dは、処理が実行された後のページに対応するので、以降、「ページ」と同じ意味で扱うものとする。
通信記録テーブル21の一例として、図2の上段のような操作の流れにおいて、操作に関わる通信記録が記録された場合について説明する。図2の上段の例では、リクエスト1(req1)からリクエスト8(req8)までのリクエストデータが操作順に並んでいる。req1について、URL(ページと同義)は「A」である。次のリクエストであるreq2について、URLは「X」であり、リクエストデータには、リファラ(Referer)が「A」を指している。次のリクエストであるreq3について、URLは「Y」であり、リクエストデータには、Refererが「X」を指している。次のリクエストであるreq4について、URLは「R1」であり、リクエストデータには、Refererが「X」を指している。次のリクエストであるreq5について、URLは「B」であり、リクエストデータには、Refererが「X」を指している。次のリクエストであるreq6について、URLは「C」であり、リクエストデータには、Refererが「Y」を指している。次のリクエストであるreq7について、URLは「Z」であり、リクエストデータには、Refererが設定されていない。そして、次のリクエストであるreq8について、URLは「R2」であり、リクエストデータには、Refererが「Z」を指している。
かかる場合に、識別番号21aが「2」である場合、処理識別子21bとして「F4」、ユーザ識別子21cとして「USER1」、URL21dとして「X」を記憶している。さらに、リクエストデータ21eとして「USERID=xxx&PASS=yyy」、レスポンスデータ21fとして「<html>・・・</html>」、リファラ21gとして「A」を記憶している。
図1に戻って、汎用処理部15は、通信記録テーブル21のリクエストデータを、同一の業務において一連の処理が汎用化できるように変換する。一例として、汎用処理部15は、認証で用いられるユーザIDやパスワードのように、ユーザに問い合わせるリクエストパラメータをパラメータ化する。例えば、同一の業務において同じ操作のリクエストデータが通信記録テーブル21に少なくとも2ユーザ分記憶されているとする。汎用処理部15は、通信記録テーブル21に記憶された同一操作のリクエストデータを比較し、リクエストデータに含まれるリクエストパラメータについて、差分を取得する。そして、汎用処理部15は、差分があるリクエストパラメータの値が直前のレスポンスデータに含まれるか否かを判定する。そして、汎用処理部15は、差分があるリクエストパラメータの値が直前のレスポンスデータに含まれていないと判定する場合には、ユーザに問い合わせるパラメータであるとして、当該リクエストパラメータを抽出する。そして、汎用処理部15は、抽出したリクエストパラメータの値を例えば変数に置き換えたリクエストデータに変換する。一方、汎用処理部15は、差分があるリクエストパラメータの値が直前のレスポンスデータに含まれていると判定する場合には、当該リクエストパラメータの値がウェブサーバ3によって作成されたものであると判定する。そして、汎用処理部15は、リクエストパラメータの値を例えばXPathで表したリクエストデータに変換する。そして、汎用処理部15は、通信記録テーブル21の該当するリクエストデータを、変換したリクエストデータに置き換える。
一例として、図2の下段に示すように、識別番号21aが「2」である場合のリクエストデータ21eには、ユーザ識別子21cが「USER1」であるユーザのユーザID及びパスワードが記憶されている。かかる場合に、汎用処理部15は、リクエストパラメータ「USER」、「PASS」を抽出し、抽出したリクエストパラメータの値を例えば変数を意味する「%%」に置き換えたリクエストデータ「USERID=%%&PASS=%%」に変換する。
なお、汎用処理部15による処理は、上記した方法に限定されず、リクエストパラメータを汎用化する方法であればいかなる方法であっても良い。また、以降では、通信記録テーブル21のリクエストデータは汎用化されているものする。
遷移関係生成部16aは、リファラを参照してリクエストデータの列を解析し、リクエストデータのURLに対応するページの遷移関係を表すツリー構造を、リクエストデータ間で生成する。例えば、遷移関係生成部16aは、通信記録テーブル21に記憶された通信記録を用いて、リクエストデータのリファラと当該リクエストデータより前のリクエストデータのURLとが一致するか否かを判定する。そして、遷移関係生成部16aは、一致すると判定した場合、リファラと一致するURLを持つリクエストデータから当該リファラを持つリクエストデータに接続することで、ツリー構造を生成する。すなわち、遷移関係生成部16aは、各ノードをリクエストデータとしてツリー構造を生成する。そして、遷移関係生成部16aは、生成したツリー構造を遷移関係テーブル22に記録する。なお、生成されたツリー構造の分岐点は、ページの遷移が分かれるので、画面を分割するフレーム(ページ)の呼び出しに関するリクエストデータとなる。
ここで、遷移関係テーブル22に記憶されるノードの情報の例について、図3を参照して説明する。図3は、実施例1に係る遷移関係テーブルに記憶されるノードの情報の一例を示す図である。
図3に示すように、遷移関係テーブル22は、ノードの情報として、ノード毎に識別番号、ノード種別及び子ノードリストを対応付けて記憶する。識別番号は、ノードの識別番号を示し、通信記録テーブル21のリクエストデータ21eに対応付けられた識別番号21aに対応する。ノード種別は、ノードがルート、中間、葉のいずれかであるかを示す情報である。子ノードリストは、識別番号で示されるノードの子ノードへのリンクポインタのリストであり、子ノードの識別番号が設定される。図3の例では、識別番号が「1」のノードである場合、ノード種別として「ルートノード」、子ノードリストとして「2」、「3」を記憶している。
また、遷移関係生成部16aが実行する、遷移関係生成処理について、図4A及び図4Bを参照して、具体的に説明する。図4A及び図4Bは、実施例1に係る遷移関係生成処理を説明するための図である。図4Aに示すように、操作に応じてウェブブラウザ2の画面に表示されるページが遷移する様子が表されている。加えて、操作に応じてウェブブラウザ2からウェブサーバ3に送信されるリクエストデータの遷移が表されている。リクエストデータ1(req1)を送信することで画面にページAが表示される。ページA内のリンクをクリックすることに応じて、リクエストデータ2(req2)を送信することで画面にページBが表示される。req2のリファラには、ページAが設定される。続いて、リクエストデータ3(req3)を送信することで画面の下側にページCが表示される。req3のリファラには、ページBが設定される。リクエストデータ4(req4)を送信することで画面の上側にページDが表示される。req4のリファラには、ページBが設定される。さらに、ページC内のリンクをクリックすることに応じて、リクエストデータ5(req5)を送信することで画面の下側にページEが表示される。req5のリファラには、ページCが設定される。
図4Aのようなページの遷移の下で、遷移関係生成部16aは、遷移関係生成処理を実行する。図4Bに示すように、遷移関係生成部16aは、リクエストのリファラとリクエストより前のリクエストのURLとが一致するか否かを判定し、一致すれば、リファラと一致するURLを持つリクエストデータからリファラを持つリクエストデータに接続する。ここでは、req2について、req2のリファラがAであり、req2のリファラがreq2より前のreq1のURL(ページA)と一致するので、遷移関係生成部16aはreq1からreq2に接続する。また、req3について、req3のリファラがBであり、req3のリファラがreq3より前のreq2のURL(ページB)と一致するので、遷移関係生成部16aはreq2からreq3に接続する。さらに、req4について、req4のリファラがBであり、req4のリファラがreq4より前のreq2のURL(ページB)と一致するので、遷移関係生成部16aはreq2からreq4に接続する。同様に、req5についても、遷移関係生成部16aはreq3からreq5に接続する。このように、遷移関係生成部16aは、遷移関係生成処理を実行することで、リクエストデータをノードとするツリー構造を生成する。
図1に戻って、再現部17は、リクエストデータのツリー構造の分岐点となるページのリクエストデータと当該ツリー構造の末端となるページのリクエストデータとに基づいて、一連の操作を再現する。ここで、再現される際に最終画面として必要なものは、フレーム(ページ)の呼び出しとそのフレームに表示されているコンテンツの情報である。そこで、再現部17は、ツリー構造の中の、フレームの呼び出しをする分岐点のノードと、最終のコンテンツが表される末端のノードとに基づいて、最終画面を再現する。
例えば、再現部17は、通信記録テーブル21に記憶された通信記録に基づいて、識別番号21aの昇順にリクエストデータをウェブサーバ3に対して送信し、リクエストデータに対応するレスポンスデータを受信し、受信したレスポンスデータを保持する。そして、再現部17は、遷移関係生成部16aによって生成されたリクエストデータのツリー構造の中に分岐があるか否かを判定する。そして、再現部17は、分岐があると判定した場合、ツリー構造の末端のノードから親ノードを辿り、分岐が発生するノードのレスポンスデータを、保持したレスポンスデータの中から取得する。また、再現部17は、分岐が発生するノードにつながる、ツリー構造の末端のノードのレスポンスデータを、保持したレスポンスデータの中から取得する。そして、再現部17は、分岐が発生するノードのレスポンスデータに基づいて、末端のノードのレスポンスデータを埋め込み、レスポンスデータとして一時的に保持する。そして、再現部17は、ツリー構造の中に分岐がないと判定した場合、最終のノードに対応するレスポンスデータと一時的に保持したレスポンスデータを合わせたレスポンスデータをウェブブラウザ2に送信する。
再現部17が実行する、再現処理について、図5を参照して、具体的に説明する。図5は、実施例1に係る再現処理を説明するための図である。図5に示すように、リクエストデータのツリー構造が表されている。かかるツリー構造では、リクエストデータ2(req2)が分岐点のノードであり、対応するレスポンスデータがフレーム(ページ)の呼び出しをする。また、リクエストデータ4(req4)及びリクエストデータ5(req5)がそれぞれ末端のノードであり、それぞれ対応するレスポンスデータにコンテンツが表される。そこで、再現部17は、分岐が発生するreq2のレスポンスデータに基づいて、末端のreq5及びreq4のそれぞれのレスポンスデータを埋め込み、レスポンスデータとして一時的に保持する。そして、再現部17は、最終のreqが持つレスポンスデータと一時的に保持したレスポンスデータを合わせたレスポンスデータをウェブブラウザ2に送信する。これにより、再現部17は、画面上のフレーム(ページ)が分割される場合であっても、すなわちフレーム呼び出しがあった場合であっても、フレーム(ページ)を含む最終画面を正確に再現できる。
[遷移関係生成処理の手順]
次に、遷移関係生成処理の手順について、図6を参照して説明する。図6は、実施例1に係る遷移関係生成処理の手順を示すフローチャートである。なお、通信記録解析部16は、通信記録の解析要求を受け取ったものとする。
通信記録の解析要求を受け取った通信記録解析部16は、遷移関係生成処理を実行する遷移関係生成部16aを呼び出す。すると、遷移関係生成部16aは、通信記録テーブル21に記憶された通信記録を記録順に並べ替える(ステップS11)。すなわち、遷移関係生成部16aは、識別番号21aが昇順となるように、通信記録を並べ替える。
そして、遷移関係生成部16aは、先頭ノードの通信記録を読み出す(ステップS12)。続いて、遷移関係生成部16aは、次ノードの通信記録を読み出す(ステップS13)。
そして、遷移関係生成部16aは、次ノードが読み出せたか否かを判定する(ステップS14)。次ノードが読み出せたと判定した場合(ステップS14;Yes)、遷移関係生成部16aは、読み出した次ノードのリファラ情報と直前のノードのURLが一致するか否かを判定する(ステップS15)。
読み出した次ノードのリファラ情報と直前のノードのURLが一致すると判定した場合(ステップS15;Yes)、遷移関係生成部16aは、直前のノードから次ノードに接続する(ステップS16)。そして、遷移関係生成部16aは、さらに次ノードの通信記録を読み出すべく、ステップS13に移行する。
一方、読み出した次ノードのリファラ情報と直前のノードのURLが一致しないと判定した場合(ステップS15;No)、遷移関係生成部16aは、リファラ情報と一致するURLを持つノードまで、親ノードの方向に遡る。そして、遷移関係生成部16aは、遡った先のノードから次ノードに接続する(ステップS17)。そして、遷移関係生成部16aは、さらに次ノードの通信記録を読み出すべく、ステップS13に移行する。
ステップS14では、次ノードが読み出せなかったと判定した場合(ステップS14;No)、遷移関係生成部16aは、遷移関係生成処理を終了する。
[再現処理の手順]
次に、再現処理の手順について、図7を参照して説明する。図7は、実施例1に係る再現処理の手順を示すフローチャートである。
まず、再現部17は、所定業務の再現指示があったか否かを判定する(ステップS21)。所定業務の再現指示がなかったと判定した場合(ステップS21;No)、再現部17は、所定業務の再現指示があるまで待つ。一方、所定業務の再現指示があったと判定した場合(ステップS21;Yes)、再現部17は、再現指示があった所定業務のリクエストデータが存在するか否かを、通信記録テーブル21の通信記録に基づいて判定する(ステップS22)。
所定業務のリクエストデータが存在すると判定した場合(ステップS22;Yes)、再現部17は、当該リクエストデータをウェブサーバ3へ送信する(ステップS23)。そして、再現部17は、ウェブサーバ3からレスポンスデータを受信し(ステップS24)、受信したレスポンスデータを保持する。そして、再現部17は、次のリクエストデータの処理をすべく、ステップS22に移行する。
所定業務のリクエストデータが存在しないと判定した場合(ステップS22;No)、再現部17は、遷移関係テーブル22に基づいて、ツリー構造中に分岐があるか否かを判定する(ステップS25)。ツリー構造中に分岐があると判定した場合(ステップS25;Yes)、再現部17は、ツリー構造の末端のノードから親ノードの方向に遡り、分岐が発生するノードのレスポンスデータを、保持したレスポンスデータの中から取得する(ステップS26)。そして、再現部17は、取得した分岐ノードのレスポンスデータを解析する(ステップS27)。
続いて、再現部17は、分岐につながる、ツリー構造の末端のノードのレスポンスデータを、保持したレスポンスデータの中から集める(ステップS28)。そして、再現部17は、分岐ノードの解析結果に基づいて、集めたレスポンスデータを埋め込み、レスポンスデータとして一時的に保持する(ステップS29)。そして、再現部17は、分岐ノード以降のノードをツリー構造から削除し(ステップS30)、他の分岐の処理を行うべく、ステップS25に移行する。
一方、ツリー構造中に分岐がないと判定した場合(ステップS25;No)、再現部17は、最終のノードに対応するレスポンス結果をウェブブラウザ2に返す(ステップS31)。すなわち、再現部17は、最終のノードに対応するレスポンスデータと一時的に保持したレスポンスデータとを合わせたレスポンスデータをウェブブラウザ2に送信する。そして、再現部17は、再現処理を終了する。
[実施例1の効果]
上記実施例1によれば、通信記録テーブル21は、ウェブブラウザ2に出力されたページから行う一連の操作について、ウェブブラウザ2からウェブサーバ3に送信されたリクエストデータとウェブサーバ3から受信したレスポンスデータとを対応付けた通信履歴を複数記憶する。そして、遷移関係生成部16aが通信履歴のリクエストデータに含まれるリファラを参照して、リクエストデータの送信によってウェブブラウザ2に出力されるページの遷移関係を、ツリー構造を用いて生成する。そして、再現部17は、生成したツリー構造の分岐点となるページのリクエストデータと分岐点につながる末端のページのリクエストデータとに基づいて、一連の操作を再現する。かかる構成によれば、再現部17は、操作の再現に分岐点となるページのリクエストデータと分岐点につながる末端のページのリクエストデータを用いることにより、操作の最終画面に表されるページをすべて再現できるので、ページを複数含む画面を再現できる。
また、上記実施例1によれば、遷移関係生成部16aは、リクエストデータに含まれるリファラ情報を参照して、当該リファラ情報と当該リクエストデータより前のリクエストデータに示されたページを示すURLとが一致するリクエストデータを取得する。そして、遷移関係生成部16aは、取得したリクエストデータから当該リファラ情報を含むリクエストデータに接続させることで、ツリー構造を生成する。かかる構成によれば、遷移関係生成部16aは、ツリー構造の生成にリファラを用いることにより、ページの遷移関係を生成できるので、ツリー構造によって操作の最終画面に表されるページを確実に再現できる。
ところで、実施例1では、中継装置1が、通信履歴のリクエストデータに含まれるリファラを参照して、リクエストデータをノードとしたツリー構造を生成し、生成したツリー構造に基づいて一連の操作を再現する場合を説明した。しかしながら、リファラを参照して生成されたツリー構造では、実際の画面構成と異なる場合がある。例えば、ツリー構造が実際の画面構成と異なる場合を、図8A及び図8Bを参照して説明する。図8A及び図8Bは、ツリー構造が実際の画面構成と異なる場合を説明する図である。
図8Aに示すように、操作に応じてウェブブラウザ2の画面に表示されるページが遷移する様子が表されている。加えて、操作に応じてウェブブラウザ2からウェブサーバ3に送信されるリクエストデータの遷移が表されている。リクエストデータ1(req1)を送信することで画面にページAが表示される。ページA内のリンクをクリックすることに応じて、リクエストデータ2(req2)を送信することで画面にページBが表示される。req2のリファラには、ページAが設定される。続いて、リクエストデータ3(req3)を送信することで画面の左側にページCが表示される。req3のリファラには、ページBが設定される。リクエストデータ4(req4)を送信することで画面の右上側にページDが表示される。req4のリファラには、ページBが設定される。リクエストデータ5(req5)を送信することで画面の右下側にページEが表示される。req5のリファラには、ページBが設定される。さらに、ページC内のリンクをクリックすることに応じて、リクエストデータ6(req6)を送信することで画面の右下側にページFが表示される。req6のリファラには、ページCが設定される。さらに、ページF内のリンクをクリックすることに応じて、リクエストデータ7(req7)を送信することで画面の右下側にページGが表示される。req7のリファラには、ページFが設定される。さらに、ページG内のリンクをクリックすることに応じて、リクエストデータ8(req8)を送信することで画面の右下側にページHが表示される。req8のリファラには、ページGが設定される。
図8Aに示すようなページの遷移の下で、遷移関係生成部16aは、リクエストデータのリファラを参照して、リクエストデータをノードとしたツリー構造を生成する。ここでは、図8Bに示すように、リクエストデータのツリー構造が生成される。ところが、生成されたリクエストデータのツリー構造には、画面構成と異なる遷移がある。具体的には、req6は、ページC内のリンクをクリックすることに応じたリクエストであるので、リファラにはページCが設定されている。ところが、ページC内のリンクをクリックすることに応じてリクエスト6を送信することで、ページFがページEと同じ画面右下に表示される。したがって、本来req6は、破線で示したように、ページEを表示させたreq5からの遷移先となるところ、実線で示したようにページCを表示させたreq3からの遷移先となってしまう。すなわち、req6は、画面構成と異なる遷移先に接続されている。
そこで、実施例2では、ツリー構造が実際の画面構成と異なる場合に、当該ツリー構造を修正する中継装置について説明する。
[実施例2に係るウェブ中継システムの構成]
図9は、実施例2に係るウェブ中継システムの構成を示す機能ブロック図である。なお、図1に示すウェブ中継システム9と同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例1と実施例2とが異なるところは、中継装置1Aの制御部10にスクリプト追加部31と遷移関係修正部16bとを追加した点にある。また、実施例1と実施例2とが異なるところは、中継装置1Aの制御部10のリクエスト記録部11をリクエスト記録部32に変更した点にある。さらに、実施例1と実施例2とが異なるところは、記憶部20にターゲット属性テーブル41を追加した点にある。
スクリプト追加部31は、ウェブサーバ3から送信されたレスポンスデータに、ターゲット属性を取得するスクリプトを追加する。ここで、ターゲット(target)属性とは、ページに画像などの位置を指すリンクが設定されている場合に、クリックされたリンクのリンク先のターゲットすなわちページが表示される画面の位置を指した属性である。スクリプト追加部31は、ターゲット属性を取得するスクリプトを追加することで、追加するスクリプトにより次のリクエスト送信時に設定されるターゲット属性をリクエスト記録部32に記録させる。
リクエスト記録部32は、所定の業務の一連の操作毎にウェブブラウザ2から送信されたリクエストデータを順次通信記録テーブル21に記録する。また、リクエスト記録部32は、リクエストデータとは別に、ウェブブラウザ2から送信されたターゲット属性を取得し、取得したターゲット属性を後述するターゲット属性テーブル41に記録する。
ここで、ターゲット属性テーブル41のデータ構造について、図10を参照しながら説明する。図10は、実施例2に係るターゲット属性テーブルのデータ構造の一例を示す図である。図10に示すように、ターゲット属性テーブル41は、No41aとURL41bとターゲット属性41cとを対応付けて記憶する。No41aは、ターゲット属性の情報を識別する識別番号を示す。URL41bは、ページに対応するURLを示す。ターゲット属性41cは、URL41bに対応するページのターゲット属性を示す。ターゲット属性41cには、例えば画面の右下を示す「Lower_right」や画面の左上を示す「Upper_left」などがある。なお、ターゲット属性41cには、アンダーバー(_)で始まる特別な属性、例えば「_blank」、「_top」、「_parent」、「_self」もあるが、これらについては、後述する。
ターゲット属性テーブル41の一例として、No41aが「1」である場合、URL41bとして「F」、ターゲット属性41cとして「Lower_right」を記憶している。この一例は、図8Aを参照すると、リクエストデータ5(req5)によってページEが表示された後、ページCに設定されたリンクがクリックされた場合の情報である。すなわち、レスポンスデータのページCに追加されたスクリプトが、ページ「F」のターゲット属性が「Lower_right」と記述してあるリンクがクリックされたと中継装置1Aに送信する。そして、リクエスト記録部32が、送信されたターゲット属性の情報を取得し、取得した情報をターゲット属性テーブル41に記録する。
図9に戻って、遷移関係修正部16bは、ターゲット属性テーブル41にデータが存在する場合、遷移関係生成部16aによって生成されたツリー構造の分岐点となるページ(URL)のリクエストデータに対応するレスポンスデータを検索する。該当するレスポンスデータは、通信記録テーブル21から検索される。そして、遷移関係修正部16bは、検索したレスポンスデータに含まれたページの画面構成の中から、ターゲット属性テーブル41によって記憶されたターゲット属性と一致する属性値を持つURLを取得する。そして、遷移関係修正部16bは、取得したURLのリクエストデータから、当該ターゲット属性に対応付けられたURLのリクエストデータに接続することで、ツリー構造を修正する。ここでいうページの画面構成とは、例えば、フレーム(ページ)の呼び出しを示すタグ(「frameset」と「/frameset」との間のタグ)を意味する。
ここで、遷移関係修正部16bが実行する、遷移関係修正処理について、図11を参照して、具体的に説明する。図11は、実施例2に係る遷移関係修正処理を説明するための図である。ここでは、図8Aで示したページの遷移及びリクエストデータの遷移を用いて説明する。
図11の上段に示すように、図8Aで示したリクエストデータの遷移の下、遷移関係生成部16aは、リクエストデータのリファラを参照して、リクエストデータをノードとしたツリー構造を生成する。
遷移関係修正部16bは、遷移関係生成部16aによって生成されたツリー構造の分岐点となるページ(URL)のリクエストデータに対応するレスポンスデータを通信記録テーブル21から検索する。ここでは、ツリー構造の分岐点となるページはBであるので、遷移関係修正部16bは、ページBのリクエストデータ(req2)に対応するレスポンスデータを検索する。
そして、遷移関係修正部16bは、検索したレスポンスデータに含まれたページの画面構成の中から、ターゲット属性テーブル41によって記憶されたターゲット属性と一致する属性値を持つURLを取得する。ここでは、ページBのレスポンスデータには、フレームの呼び出しを示すタグとして「frame src=“E” name=“Lower_right”」が記述されている。そして、ターゲット属性テーブル41には、URL41bとして「F」、ターゲット属性41cとして「Lower_right」が記憶されている。そこで、遷移関係修正部16bは、ページBのレスポンスデータのフレーム呼び出しから、ターゲット属性テーブル41に記憶されているターゲット属性「Lower_right」と一致する値を「name」の属性値に持つフレームを取得する。すると、遷移関係修正部16bは、「frame src」に指定されているURL「E」を取得する。
図11の下段に示すように、遷移関係修正部16bは、取得したURLのリクエストデータから、ターゲット属性に対応付けられたURLのリクエストデータに接続することで、ツリー構造を修正する。ここでは、遷移関係修正部16bは、URL「E」のリクエストデータ(req5)から、ターゲット属性「Lower_right」に対応付けられたURL「F」のリクエストデータ(req6)に接続することで、ツリー構造を修正する。
これにより、ページC内のリンクをクリックすることに応じてリクエストデータ6を送信することで、ページFがページEと同じ画面右下に表示されるような場合であっても、ページFのリクエストデータ6はページEのリクエストデータ5からの遷移先となる。つまり、リクエストデータ6は、画面構成と同じ遷移先に接続される。
[遷移関係修正処理の手順]
次に、遷移関係修正処理の手順について、図12を参照して説明する。図12は、実施例2に係る遷移関係修正処理の手順を示すフローチャートである。なお、遷移関係生成部16aが、既に、通信記録テーブル21に記憶された通信記録からリクエストデータをノードとしたツリー構造を生成したものとする。
遷移関係修正部16bは、遷移関係生成部16aから、生成されたリクエストデータのツリー構造を受け取り、受け取ったツリー構造の先頭ノードを選択する(ステップS41)。そして、遷移関係修正部16bは、選択した先頭ノードから2つ以上の子ノードを持つノードまで移動する(ステップS42)。
ここで、遷移関係修正部16bは、2つ以上の子ノードを持つノードがあるか否かを判定する(ステップS43)。2つ以上の子ノードを持つノードがあると判定した場合(ステップS43;Yes)、遷移関係修正部16bは、通信記録テーブル21に記憶された通信記録から、移動先のノードのレスポンスデータを検索する(ステップS44)。
そして、遷移関係修正部16bは、ターゲット属性テーブル41にデータがあるか否かを判定する(ステップS45)。ターゲット属性テーブル41にデータがないと判定した場合(ステップS45;No)、遷移関係修正部16bは、次の分岐ノードに移動すべく、ステップS42に移行する。
一方、ターゲット属性テーブル41にデータがあると判定した場合(ステップS45;Yes)、遷移関係修正部16bは、次の処理を行う。すなわち、遷移関係修正部16bは、ターゲット属性テーブル41に指定されているURLを持つノードを、レスポンスデータから確認できたURLを持つノードに接続する(ステップS46)。例えば、遷移関係修正部16bは、レスポンスデータに含まれたページの画面構成に、ターゲット属性テーブル41のターゲット属性と一致する属性値がある場合、当該画面構成から、ターゲット属性と一致した属性値を持つURLを取得する。そして、遷移関係修正部16bは、ターゲット属性テーブル41に記憶されたターゲット属性に対応付けられたURLを持つノードを、取得したURLを持つノードに接続する。そして、遷移関係修正部16bは、次の分岐ノードに移動すべく、ステップS42に移行する。
ステップS43では、2つ以上の子ノードを持つノードがないと判定した場合(ステップS43;No)、遷移関係修正部16bは、遷移関係修正処理を終了する。
[実施例2の効果]
上記実施例2によれば、ターゲット属性テーブル41は、リンク先のページのURLと当該ページが表示される画面位置を示すターゲット属性とを対応付けて記憶する。そして、遷移関係修正部16bは、ツリー構造の分岐点となるページのリクエストデータに対応するレスポンスデータを検索する。そして、遷移関係修正部16bは、検索したレスポンスデータに含まれたページの画面構成の中から、ターゲット属性テーブル41に記憶されたターゲット属性と一致する属性値を持つURLを取得する。そして、遷移関係修正部16bは、取得したURLが示すページのリクエストデータから当該ターゲット属性に対応付けられたURLが示すページのリクエストデータに接続することで、ツリー構造を修正する。かかる構成によれば、遷移関係修正部16bは、リファラを用いて得られたツリー構造が実際の画面構成と異なる場合であっても、ツリー構造を容易に修正できる。この結果、遷移関係修正部16bは、操作の最終画面としてページを複数含む画面であっても、画面構成に準じた操作の最終画面を正確に再現できる。
ところで、実施例1では、中継装置1が、通信履歴のリクエストデータに含まれるリファラを参照して、リクエストデータをノードとしたツリー構造を生成し、生成したツリー構造に基づいて一連の操作を再現する場合を説明した。また、実施例2では、リファラを参照して生成されたツリー構造では、実際の画面構成と異なる場合があるので、当該ツリー構造を修正する中継装置1Aについて説明した。しかしながら、当該ツリー構造を修正しても、ツリー構造が実際の画面構成と異なる場合がある。例えば、ツリー構造が実際の画面構成と異なる別の場合を、図13A及び図13Bを参照して説明する。図13A及び図13Bは、ツリー構造が実際の画面構成と異なる別の場合を説明する図である。
図13Aに示すように、操作に応じてウェブブラウザ2の画面に表示されるページが遷移する様子が表されている。加えて、操作に応じてウェブブラウザ2からウェブサーバ3に送信されるリクエストデータの遷移が表されている。リクエストデータ1(req1)を送信することで画面にページAが表示される。ページA内のリンクをクリックすることに応じて、リクエストデータ2(req2)を送信することで画面にページBが表示される。req2のリファラには、ページAが設定される。続いて、リクエストデータ3(req3)を送信することで画面の左側にページCが表示される。req3のリファラには、ページBが設定される。リクエストデータ4(req4)を送信することで画面の右側にページDが表示される。req4のリファラには、ページBが設定される。リクエストデータ5(req5)を送信することで画面の右上側にページEが表示される。req5のリファラには、ページDが設定される。続いて、リクエストデータ6(req6)を送信することで画面の左下側にページFが表示される。req6のリファラには、ページDが設定される。さらに、ページF内のリンクをクリックすることに応じて、リクエストデータ7(req7)を送信することで画面の右側にページGが表示される。req7のリファラには、ページFが設定される。さらに、ページG内のリンクをクリックすることに応じて、リクエストデータ8(req8)を送信することで画面の右側にページHが表示される。req8のリファラには、ページGが設定される。
図13Aのようなページの遷移の下で、遷移関係生成部16aは、リクエストのリファラを参照して、リクエストデータをノードとしたツリー構造を生成する。ここでは、図13Bのように、リクエストデータのツリー構造が生成される。ところが、生成されたリクエストデータのツリー構造には、画面構成と異なる遷移がある。具体的には、req5は、遷移する前のページがDであるので、リファラにはページDが設定されている。また、req6は、遷移する前のページがDであるので、リファラにはページDが設定されている。そして、req7は、ページF内のリンクをクリックすることに応じたリクエストデータであるので、リファラにはページFが設定されている。ところが、ページF内のリンクをクリックすることに応じてリクエストデータ7を送信することで、ページGがページE及びページFの親フレーム(ページD)と同じ画面位置に表示される。したがって、本来req7は、破線で示したように、ページDを表示させたreq4からの遷移先となるところ、実線で示したようにページFを表示させたreq6からの遷移先となってしまう。また、ページGは,ページEとページFの親フレームの位置に表示されているので、ページEを表示させたreq5及びページFを表示させたreq6は、不要なリクエストデータである。すなわち、req5、req6及びreq7は、画面構成と異なる遷移となっている。
そこで、実施例3では、ツリー構造が実際の画面構成と異なる場合に、当該ツリー構造を修正する中継装置について説明する。
[実施例3に係るウェブ中継システムの構成]
図14は、実施例3に係るウェブ中継システムの構成を示す機能ブロック図である。なお、図1及び図9に示すウェブ中継システム9、9Aと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例2と実施例3とが異なるところは、中継装置1Aの制御部10の遷移関係修正部16bを遷移関係修正部16cに変更した点にある。
遷移関係修正部16cは、ターゲット属性テーブル41にデータが存在する場合、ターゲット属性テーブル41に記憶されたターゲット属性がアンダーバー(_)で始まる特別な属性であるか否かを判定する。そして、遷移関係修正部16cは、ターゲット属性がアンダーバー(_)で始まる特別な属性である場合には、特別な属性に合わせた処理を実行する。ここで、ターゲット属性に指定可能なアンダーバー(_)で始まる特別な属性について説明する。かかる特別な属性には、「_blank」、「_top」、「_parent」、「_self」がある。「_blank」は、リンク先のターゲットを新しいウィンドウに表示することを意味する。「_top」は、フレームを解消してリンク先のターゲットを画面全体に表示することを意味する。「_parent」は、リンク先のターゲットをリンク元の親フレームに表示することを意味する。「_self」は、リンク先のターゲットをリンク元のフレームに表示することを意味する。
そこで、遷移関係修正部16cは、ターゲット属性が「_blank」又は「_top」である場合には、ターゲット属性に対応付けられたURLのリクエストデータを、最初の分岐を持つリクエストデータに接続する。リンク先のフレームが画面全体となるからである。そして、遷移関係修正部16cは、最初の分岐を持つリクエストデータとターゲット属性に対応付けられたURLのリクエストデータとの間のリクエストデータをツリー構造から削除する。
また、遷移関係修正部16cは、ターゲット属性が「_parent」である場合には、ターゲット属性に対応付けられたURLのリクエストデータを、直前の分岐を持つリクエストデータに接続する。リンク先のフレームがリンク元の親フレームとなるからである。そして、遷移関係修正部16cは、直前の分岐を持つリクエストデータとターゲット属性に対応付けられたURLのリクエストデータとの間のリクエストデータをツリー構造から削除する。
また、遷移関係修正部16cは、ターゲット属性が「_self」である場合には、ツリー構造の修正を何も行わない。リンク先のフレームがリンク元のフレームと変化がないからである。
なお、遷移関係修正部16cは、ターゲット属性が特別な属性でない場合には、レスポンスデータに含まれたページの画面構成の中から、当該ターゲット属性と一致する属性値を持つURLを取得する。そして、遷移関係修正部16cは、取得したURLのリクエストデータから、当該ターゲット属性に対応付けられたURLのリクエストデータに接続する。すなわち、ターゲット属性が特別な属性でない場合は、実施例2で説明した処理となる。
ここで、遷移関係修正部16cが実行する、遷移関係修正処理について、図15を参照して、具体的に説明する。図15は、実施例3に係る遷移関係修正処理を説明するための図である。ここでは、図13Aで示したページの遷移及びリクエストデータの遷移を用いて説明する。また、ターゲット属性テーブル41には、URL41bとして「G」、ターゲット属性41cとして「_parent」が記憶されている。
図15の上段に示すように、図13Aで示したリクエストデータの遷移の下、遷移関係生成部16aは、リクエストデータのリファラを参照して、リクエストデータをノードとするツリー構造を生成する。
遷移関係修正部16cは、ターゲット属性テーブル41にデータが存在するので、ターゲット属性テーブル41に記憶されたターゲット属性がアンダーバー(_)で始まる特別な属性であるか否かを判定する。ここでは、遷移関係修正部16cは、ターゲット属性テーブル41に記憶されたターゲット属性は「_parent」であるので、特別な属性であると判定する。
そこで、遷移関係修正部16cは、ターゲット属性が「_parent」であるので、ターゲット属性に対応付けられたURLのリクエストデータを、直前の分岐を持つリクエストデータに接続する。そして、遷移関係修正部16cは、直前の分岐を持つリクエストデータとターゲット属性に対応付けられたURLのリクエストデータとの間のリクエストデータをツリー構造から削除する。ここでは、図15の下段に示すように、遷移関係修正部16cは、ターゲット属性に対応付けられたURL「G」のリクエストデータ(req7)を、直前の分岐を持つリクエストデータ(req4)に接続する。そして、遷移関係修正部16cは、直前の分岐を持つリクエストデータ(req4)とターゲット属性に対応付けられたURL「G」のリクエストデータ(req7)との間のリクエストデータをツリー構造から削除する。図15の上段の例では、遷移関係修正部16cは、req5とreq6とをツリー構造から削除する。
これにより、ページF内のリンクをクリックすることに応じてリクエストデータ7を送信することで、ページGがページFの親フレーム(ページD)と同じ画面位置に表示されても、ページGのリクエストデータ7はページDのリクエストデータ4からの遷移先となる。つまり、リクエスト7は、画面構成と同じ遷移となる。
[遷移関係修正処理の手順]
次に、遷移関係修正処理の手順について、図16を参照して説明する。図16は、実施例3に係る遷移関係修正処理の手順を示すフローチャートである。なお、遷移関係生成部16aが、既に、通信記録テーブル21に記憶された通信記録からリクエストデータをノードとしたツリー構造を生成したものとする。
遷移関係修正部16cは、遷移関係生成部16aから、生成されたリクエストデータのツリー構造を受け取り、受け取ったツリー構造の先頭ノードを選択する(ステップS51)。そして、遷移関係修正部16cは、選択した先頭ノードから2つ以上の子ノードを持つノードまで移動する(ステップS52)。
ここで、遷移関係修正部16cは、2つ以上の子ノードを持つノードがあるか否かを判定する(ステップS53)。2つ以上の子ノードを持つノードがあると判定した場合(ステップS53;Yes)、遷移関係修正部16cは、通信記録テーブル21に記憶された通信記録から、移動先のノードのレスポンスデータを検索する(ステップS54)。
そして、遷移関係修正部16cは、ターゲット属性テーブル41にデータがあるか否かを判定する(ステップS55)。ターゲット属性テーブル41にデータがないと判定した場合(ステップS55;No)、遷移関係修正部16cは、次の分岐ノードに移動すべく、ステップS52に移行する。
一方、ターゲット属性テーブル41にデータがある場合(ステップS55;Yes)、遷移関係修正部16cは、ターゲット属性テーブル41に記憶されたターゲット属性が「_blank」又は「_top」であるか否かを判定する。(ステップS56)。ターゲット属性が「_blank」又は「_top」である場合(ステップS56;Yes)、遷移関係修正部16cは、ターゲット属性に対応付けられたURLのノードを、ルートノードから辿って、最初の分岐を持つノードに接続する。リンク先のフレームが画面全体となるからである。そして、遷移関係修正部16cは、分岐ノードからターゲット属性が指定されたノードまでを削除する(ステップS57)。そして、遷移関係修正部16cは、ステップS52に移行する。
ターゲット属性が「_blank」又は「_top」でない場合(ステップS56;No)、遷移関係修正部16cは、ターゲット属性が「_parent」であるか否かを判定する(ステップS58)。ターゲット属性が「_parent」である場合(ステップS58;Yes)、遷移関係修正部16cは、ターゲット属性に対応付けられたURLのノードを、直前の分岐を持つノードに接続する。そして、遷移関係修正部16cは、分岐ノードからターゲット属性が指定されたノードまでを削除する(ステップS59)。そして、遷移関係修正部16cは、ステップS52に移行する。
ターゲット属性が「_parent」でない場合(ステップS58;No)、遷移関係修正部16cは、ターゲット属性が「_self」であるか否かを判定する(ステップS60)。ターゲット属性が「_self」である場合(ステップS60;Yes)、遷移関係修正部16cは、何も処理をしないで、ステップS52に移行する。
一方、ターゲット属性が「_self」でない場合(ステップS60;No)、遷移関係修正部16cは、ターゲット属性テーブル41に指定されているURLを持つノードを、レスポンスデータから確認できたURLを持つノードに接続する(ステップS61)。なお、処理の具体的な内容は実施例2に示したとおりであるので、詳細な説明は省略する。そして、遷移関係修正部16cは、ステップS52に移行する。
[実施例3の効果]
上記実施例によれば、遷移関係修正部16cは、ターゲット属性テーブル41に記憶されたターゲット属性を判定する。そして、遷移関係修正部16cは、ターゲット属性が親画面を示す属性である場合、直前の分岐点となるページのリクエストデータから当該ターゲット属性に対応付けられたURLが示すページのリクエストデータに接続する。そして、遷移関係修正部16cは、ターゲット属性が全体画面を示す属性である場合、ツリー構造のルートから辿って最初の分岐点となるページのリクエストデータから当該ターゲット属性に対応付けられたURLが示すページのリクエストデータに接続する。かかる構成によれば、遷移関係修正部16cは、リファラを用いて得られたツリー構造が実際の画面構成と異なる場合であっても、ツリー構造を容易に修正できる。この結果、遷移関係修正部16cは、操作の最終画面としてページを複数含む画面であっても、画面構成に準じた操作の最終画面を正確に再現できる。
ところで、実施例1から実施例3では、中継装置1が、通信履歴のリクエストデータに含まれるリファラを参照して、リクエストデータをノードとしたツリー構造を生成し、生成したツリー構造に基づいて一連の操作を再現する場合を説明した。しかしながら、通信履歴のリクエストデータにリファラがない場合がある。例えば、メタタグのリフレッシュによる画面更新リクエストの場合や、JavaScript(登録商標)の「location.href」による画面更新の場合である。
そこで、実施例4では、通信履歴のリクエストデータにリファラがない場合であっても、リファラがないリクエストデータをツリー構造に接合する中継装置1Cについて説明する。
[実施例4に係るウェブ中継システムの構成]
図17は、実施例4に係るウェブ中継システムの構成を示す機能ブロック図である。なお、図14に示すウェブ中継システム9Bと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例3と実施例4とが異なるところは、中継装置1Cの制御部10のスクリプト追加部31をスクリプト追加部61に変更した点にある。実施例3と実施例4とが異なるところは、中継装置1Cの制御部10に遷移関係接合部62を追加した点にある。また、実施例3と実施例4とが異なるところは、記憶部20にフレームURLテーブル51を追加した点にある。
スクリプト追加部61は、ウェブサーバ3から送信されたレスポンスデータに、ターゲット属性を取得するスクリプトを追加する。なお、ターゲット属性の説明は、前述したので省略する。また、スクリプト追加部61は、ウェブサーバ3から送信されたレスポンスデータに、元のURL(ページ)を取得するスクリプトを追加する。スクリプト追加部61は、元のURLを取得するスクリプトを追加することで、追加するスクリプトにより次のリクエスト送信時に設定される元のURLをリクエスト記録部32に記録させる。
リクエスト記録部32は、所定の業務の一連の操作毎にウェブブラウザ2から送信されたリクエストデータを順次通信記録テーブル21に記録する。また、リクエスト記録部32は、リクエストデータとは別に、ウェブブラウザ2から送信されたターゲット属性を取得し、取得したターゲット属性をターゲット属性テーブル41に記録する。さらに、リクエスト記録部32は、リクエストデータやターゲット属性情報とは別に、ウェブブラウザ2から送信された元のURLの情報を取得し、取得した元のURLの情報を後述するフレームURLテーブル51に記録する。フレームURLテーブル51は、リクエストデータのロード前後のフレーム(ページ)に対応するURLを記憶する。
ここで、フレームURLテーブル51のデータ構造について、図18を参照しながら説明する。図18は、実施例4に係るターゲット属性テーブルのデータ構造の一例を示す図である。図18に示すように、フレームURLテーブル51は、No51aと元URL51bとロード後URL51cとを対応付けて記憶する。No51aは、リクエストデータにおけるロード前後のURLの情報を識別する識別番号を示す。元URL51bは、ロード前の元のURL(ページ)を示す。ロード後URL51cは、ロード後のURL(ページ)を示す。
フレームURLテーブル51の一例として、No51aが「1」である場合、元URL51bとして「C」、ロード後URL51cとして「Z」を記憶している。また、No51aが「2」である場合、元URL51bとして「Y」、ロード後URL51cとして「R2」を記憶している。
図17に戻って、遷移関係接合部62は、通信記録テーブル21のリクエストデータにリファラが含まれていない場合、フレームURLテーブル51から、ロード後のURL(51b)がリクエストデータのURLと一致するレコードを読み出す。そして、遷移関係接合部62は、読み出したレコードの元のURL(51b)を抽出する。そして、遷移関係接合部62は、遷移関係生成部16aによって生成された、リクエストデータのツリー構造について、リファラが含まれていないリクエストデータを、抽出した元のURLのリクエストデータに接合する。なお、遷移関係接合部62が実行されるタイミングは、例えば通信記録を解析する際、遷移関係生成部16aによってリクエストデータをノードとするツリー構造が生成された後である。
ここで、遷移関係接合部62が実行する、遷移関係接合処理について、図19を参照して、具体的に説明する。図19は、実施例4に係る遷移関係接合処理を説明するための図である。なお、通信記録テーブル21のリクエストデータ7(req7)が、URLを「Z」とするデータであって、リファラを含まないデータであるとする。
図19の上段に示すように、遷移関係生成部16aは、通信記録テーブル21に記憶された通信記録のリクエストデータに含まれるリファラを参照して、リクエストデータをノードとしたツリー構造を生成する。ここでは、リクエストデータ1(req1)からリクエストデータ6(req6)までのリクエストデータのツリー構造が生成されている。また、リクエストデータ7(req7)は、リファラを含まないので、リクエストデータ8(req8)との間で新たなツリー構造が生成されている。
このようなツリー構造の下、図19の下段に示すように、遷移関係接合部62は、通信記録テーブル21のreq7にリファラが含まれていないので、フレームURLテーブル51を用いて、リファラが含まれていないreq7をツリー構造に接合する。ここでは、フレームURLテーブル51には、No51aとして「1」、元URL51bとして「C」、ロード後URL51cとして「Z」が記憶されている。遷移関係接合部62は、フレームURLテーブル51から、ロード後URL51bがreq7のURL「Z」と一致するレコードを読み出す。そして、遷移関係接合部62は、読み出したレコードの元URL51bの情報「C」を抽出する。そして、遷移関係接合部62は、生成されているツリー構造について、リファラが含まれていないreq7を、抽出した元URL51bの情報「C」を持つリクエストデータ(req6)に接合する。
[実施例4の効果]
上記実施例4によれば、遷移関係接合部62は、リクエストデータにリファラがない場合、フレームURLテーブル51を用いて、ツリー構造における当該リクエストデータの遷移直前のリクエストデータからリファラがないリクエストデータに接合する。これにより、遷移関係接合部62は、リクエストデータにリファラが含まれていない場合であっても、リファラが含まれていないリクエストデータを容易にツリー構造に接合できる。この結果、中継装置1Cは、操作の最終画面としてページを複数含む画面であっても、画面構成に準じた操作の最終画面をさらに正確に再現できる。
また、上記実施例4によれば、遷移関係接合部62は、リクエストデータにリファラを含まない場合、フレームURLテーブル51を用いて、リファラを含まないリクエストデータをツリー構造に接合するとして説明した。しかしながら、遷移関係接合部62は、これに限定されず、リクエストデータにリファラを含まない場合、通信記録テーブル21に記憶された通信履歴を用いて、リファラを含まないリクエストデータをツリー構造に接合しても良い。かかる場合、遷移関係接合部62は、通信記録テーブル21に記憶された通信履歴から、リファラを含まないリクエストデータの直前のリクエストデータのURLを抽出する。そして、遷移関係接合部62は、遷移関係生成部16aによって生成された、リクエストデータのツリー構造について、リファラを含まないリクエストデータを、抽出したURLのリクエストデータに接合する。これにより、遷移関係接合部62は、リクエストデータにリファラが含まれていない場合であっても、リファラが含まれていないリクエストデータを容易にツリー構造に接合できる。この結果、中継装置1Cは、操作の最終画面としてページを複数含む画面であっても、画面構成に準じた操作の最終画面をさらに正確に再現できる。
[プログラムなど]
なお、実施例1〜4では、通信記録テーブル21は、URL21dおよびリファラ21gを独立の項目として定義するものとして説明した。しかしながら、URL21dおよびリファラ21gは、リクエストデータ21eに含まれる情報であるので、通信記録テーブル21は、URL21dおよびリファラ21gを独立の項目として定義しないで、省略しても良い。
また、中継装置1、1A、1B、1Cは、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した通信記録解析部16及び再現部17などの各機能を搭載することによって実現することができる。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、汎用処理部15と通信記録解析部16とを1個の部として統合しても良い。一方、遷移関係修正部16cを、ターゲット属性が特別な属性である場合に遷移関係を修正する修正部とターゲット属性が特別な属性でない場合に遷移関係を修正する修正部とに分散しても良い。また、通信記録テーブル21や遷移関係テーブル22などの記憶部を中継装置1、1A、1B、1Cの外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図20を用いて、図1に示した中継装置1の制御部10と同様の機能を有する情報再現プログラムを実行するコンピュータの一例を説明する。
図20は、情報再現プログラムを実行するコンピュータの一例を示す図である。図20に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、ネットワークインタフェース装置1020と、HDD1030と、CPU(Central Processing Unit)1040、媒体読取装置1050及びバス1060とを有する。RAM1010、ネットワークインタフェース装置1020、HDD1030、CPU1040、媒体読取装置1050は、バス1060によって接続されている。
そして、HDD1030には、図1に示した制御部10と同様の機能を有する情報再現プログラム1031が記憶される。また、HDD1030には、図1に示した通信記録テーブル21及び遷移関係テーブル22に対応する情報再現処理関連情報1032が記憶される。
そして、CPU1040が情報再現プログラム1031をHDD1030から読み出してRAM1010に展開することにより、情報再現プログラム1031は、情報再現プロセス1011として機能するようになる。そして、情報再現プロセス1011は、情報再現処理関連情報1032から読み出した情報などを適宜RAM1010上の自身に割り当てられた領域に展開し、この展開したデータなどに基づいて各種データ処理を実行する。
媒体読取装置1050は、情報再現プログラム1031がHDD1030に格納されていない場合であっても情報再現プログラム1031を記憶する媒体などから情報再現プログラム1031を読み取る。媒体読取装置1050には、例えばCD−ROMや光ディスク装置がある。また、ネットワークインタフェース装置1020は、外部装置とネットワーク経由で接続する装置であり、有線、無線がある。
なお、上記の情報再現プログラム1031は、必ずしもHDD1030に格納されている必要はなく、CD−ROMなどの媒体読取装置1050に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを介してコンピュータ1000に接続される他のコンピュータ(又はサーバ)などにこのプログラムを記憶させておいても良い。この場合には、コンピュータ1000がネットワークインタフェース装置1020を介してこれらからプログラムを読み出して実行する。
以上の実施例1〜4を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)ウェブブラウザに出力されたページから行う一連の操作について、前記ウェブブラウザからウェブサーバに送信されたリクエストデータと前記ウェブサーバから受信したレスポンスデータとを対応付けた通信履歴を複数記憶する記憶部と、
前記記憶部に記憶された通信履歴のリクエストデータに含まれる情報であって当該リクエストデータを送信した元のページを示す情報を参照して、リクエストデータの送信によって前記ウェブブラウザに出力されるページの遷移関係を生成する生成部と、
前記生成部によって生成された遷移関係の分岐点となるページのリクエストデータと当該遷移関係の末端となるページのリクエストデータとに基づいて、前記一連の操作を再現する再現部と
を有することを特徴とする中継装置。
(付記2)前記生成部は、前記リクエストデータに含まれるリファラ情報を参照して、当該リファラ情報と前記リクエストデータより前のリクエストデータに示されたページを示す情報とが一致するリクエストデータを取得し、取得したリクエストデータから当該リファラ情報を含むリクエストデータに接続させることで、前記遷移関係を生成する
ことを特徴とする付記1に記載の中継装置。
(付記3)操作によってアクセスされるページを示す情報と当該ページが表示される画面位置を示す属性情報とを対応付けて記憶する属性記憶部と、
前記属性記憶部にデータが存在する場合、前記生成部によって生成された遷移関係の分岐点となるページのリクエストデータに対応するレスポンスデータを検索し、検索したレスポンスデータに含まれたページの画面構成の中から、前記属性記憶部によって記憶された属性情報と一致する属性値を持つ、ページを示す情報を取得し、該取得した情報が示すページのリクエストデータから当該属性情報に対応付けられた情報が示すページのリクエストデータに接続することで、前記遷移関係を修正する修正部と
をさらに有することを特徴とする付記1又は付記2に記載の中継装置。
(付記4)前記修正部は、さらに、前記属性記憶部に記憶された属性情報を判定し、当該属性情報が親画面を示す属性である場合、直前の分岐点となるページのリクエストデータから当該属性情報に対応付けられた情報が示すページのリクエストデータに接続し、当該属性情報が全体画面を示す属性である場合、前記遷移関係のルートから辿って最初の分岐点となるページのリクエストデータから当該属性情報に対応付けられた情報が示すページのリクエストデータに接続することで、前記遷移関係を修正する
ことを特徴とする付記3に記載の中継装置。
(付記5)前記生成部は、さらに、前記リクエストデータにリファラ情報が含まれていない場合、前記記憶部に記憶された通信履歴を用いて、当該リクエストデータの直前のリクエストデータからリファラ情報が含まれていないリクエストデータに接続する
ことを特徴とする付記2に記載の中継装置。
(付記6)コンピュータに、
ウェブブラウザに出力されたページから行う一連の操作について、前記ウェブブラウザからウェブサーバに送信されたリクエストデータと前記ウェブサーバから受信したレスポンスデータとを対応付けた通信履歴を複数記憶する記憶部に記憶された通信履歴のリクエストデータに含まれる情報であって当該リクエストデータを送信した元のページを示す情報を参照して、リクエストデータの送信によって前記ウェブブラウザに出力されるページの遷移関係を生成し、
前記生成した処理によって生成された遷移関係の分岐点となるページのリクエストデータと当該遷移関係の末端となるページのリクエストデータとに基づいて、前記一連の操作を再現する
処理を実行させる情報再現プログラム。
(付記7)コンピュータが、
ウェブブラウザに出力されたページから行う一連の操作について、前記ウェブブラウザからウェブサーバに送信されたリクエストデータと前記ウェブサーバから受信したレスポンスデータとを対応付けた通信履歴を複数記憶する記憶部に記憶された通信履歴のリクエストデータに含まれる情報であって当該リクエストデータを送信した元のページを示す情報を参照して、リクエストデータの送信によって前記ウェブブラウザに出力されるページの遷移関係を生成し、
前記生成した処理によって生成された遷移関係の分岐点となるページのリクエストデータと当該遷移関係の末端となるページのリクエストデータとに基づいて、前記一連の操作を再現する
ことを実行することを特徴とする情報再現方法。