• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ID/PASSが必要な第三者サイトのhtmlを解析したい(対象:エンドユーザ)

ID/PASSが必要な第三者サイトのhtmlを解析する方法

このQ&Aのポイント
  • ウェブ構築をしている際、第三者サイトのID/PASSが必要なhtmlを解析する方法について教えてください。
  • 具体的な要件として、自サイトでエンドユーザに検索ワードを入力させ、その検索ワードをもとに第三者のサイトにリダイレクトし、表示されたhtmlを解析してアクションを起こす方法を知りたいです。
  • ただし、自サイトでは検索ワードの入力を求めるが、第三者サイトのID/PASSの入力は求めないものとします。また、第三者サイトのhtmlソースを解析する際は、JavaScriptを使用することを想定しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

確かJavaScriptってサイトを越えた場合 var objWin = window.open("URL"); var doc = objWin.document; とかでdocumentを取得できなかったように思います … アクセス拒否とかのエラーになってしまったような ・・・ 自サイト内でもサイトとして独立しているような場合 ttp://hogehoge.com/hoge1/sample1.htm ttp://hogehoge.com/hoge2/sample2.htm sample1.htmから sample2.htmもだめだったように思います

m_etc
質問者

お礼

ご回答ありがとうございます。 ご回答に対して、お聞きしたいのですが、 >自サイト内でもサイトとして独立しているような場合 >ttp://hogehoge.com/hoge1/sample1.htm >ttp://hogehoge.com/hoge2/sample2.htm >sample1.htmから sample2.htmもだめだったように思います とのことですが、 両方のURLとも、ttp://hogehoge.com で同じなので、 両者のサイトは同じでは?と思うのですが・・・ なので、恐縮ですが、 「自サイト内でもサイトとして独立している」の意味がわかりません。 (「1サイト」=「http(s).~com/jp/or.../net/」単位だと思っていたのですが。。。違うのでしょうか?) よろしければ、お教えいただけますでしょうか?

その他の回答 (2)

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.3

いまいち理解していないので、見当違いの可能性大ですが。 解析を実行するのはサーバーサイドですよね? サーバーサイドであることを前提に以下の回答。 >(1)最初のリダイレクトは、別ウィンドウとして開くのが必須?なのかなあと・・・・違ったらご指摘ください。 http通信を行い取得したhtmlを解析するシステムを構築してはどうでしょうか? 自サイトは、このシステムに解析を依頼する。リダイレクトでは無く直接http通信。 解析結果を、最初の入力したユーザに見せたいなら、自サイトと解析システムの連携は必須。 >(2)で、第三者サイトのhtmlソースをいじるので、JavaScriptで解析することになるのかなあと違ったらご指摘ください。 第三者サイトのhtmlと言っても、第三者サイトから“取得したhtmlのコピーを解析・操作する”ですので、JavaScriptでもPHPでも。 「PHP=サーバーサイド、JavaScript=クライアント」です。 自サイトが内部で勝手に解析するなら、PHP。 自サイトを閲覧中のユーザに(ユーザのPCリソースを拝借して)解析させたいなら、JavaScript。 普通はJavaScriptよりサーバーサイド。(目的によって違うが) 1.ユーザが入力して検索実行 2.サーバサイドが解析してその結果を表示 どういった用途か不明ですが、簡潔にまとめると、「クライアントサイドのJavaScript」より「サーバーサイドのプログラム」で行ったらどうでしょう。

m_etc
質問者

お礼

お礼が遅くなり失礼しました。 //もう、ごらんになってないかな(汗 すみません、私の最初の質問が、分かりづらかったですね。 えと、まず、 「http通信を行い取得したhtmlを解析するシステム」とおっしゃるのは、 早い話、phpだと、 <?php  // PHP 5 以降での例  $handle = fopen("http://www.example.com/", "rb");  $contents = stream_get_contents($handle);  fclose($handle); ?> または、 <?php  //PHP4でならこうする  $handle = fopen("http://www.example.com/", "rb");  $contents = '';  while (!feof($handle)) {   $contents .= fread($handle, 8192);  }  fclose($handle); ?> //ちがったらご指摘ください。 で、自分もその方法は考えたのですが、 //----- (2)その検索サイトをもとに第三者のサイトへリダイレクト   (例:​http://example.com/foo/bar/hoge.php?q=​検索ワード)  ※なお、その第三者のサイトでは、ID/PASSが必要です! //----- なんですね。なので、 自サイトにおいて、エンドユーザが第三者サイトのID/PASSを入力すれば、 可能ですが、これは、フィッシングサイトになってしまうかと。 また、第三者サイトにひも付いたクッキーを、自サイトで読めればいいのですが、でも、よめないはうですよね。。。(よめちゃったら、それはUAのセキュリティバグになるかと) で、詳しくないのですが、その第三者サイトがOpenIDを採用しているので、 この仕組みを使ってどうにかできないかなーと想った次第です。 //----- あと、ふと今思ったのですが、もし第三者へのアクセス (​http://example.com/foo/bar/hoge.php?q=​検索ワード)において、 ID/PASSが必要だとしても、 ***もし、その第三者サイトにおけるIDによって 「http://example.com/foo/bar/hoge.php?q=​検索ワード」の返す内容が変わらないと仮定したら*** この自作システムが第三者サイトへアクセスする際の、IDを専用にあらかじめつくっておき、それでアクセスすることは可能ですよね? //----- ●ただ、同時アクセスの場合に、はじかれるかも? ●第三者サイトの利用規約に反するかも //----- という危惧はありますが・・・。 遅くなりまして、恐縮ですが、もしよろしければ、お答えいただければ幸いです。 よろしくお願いいたします。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

> 「自サイト内でもサイトとして独立している」の意味がわかりません すみません m(__)m こちらは私の勘違いだったようです サイト内の仮想サイトとして分離されている場合ダメだったような気がしたので先のような回答をしました 仮想サイトとして分離されていても取得はできるようです …

m_etc
質問者

お礼

お返事遅くなり失礼しました。 ごていねいにご回答ありがとうございました。