0

Apache http クライアントを使用してポップアップを処理することは可能ですか?

ウェブサイトにアクセスしようとしています。特定のページにアクセスすると、新しいウィンドウがポップアップ表示され、http 応答ではすべて HTML で新しいウィンドウ コードがポップアップ表示されます。

http クライアントから新しいポップアップ ウィンドウにリダイレクトする方法はありますか?

私のコード

HttpResponse res = null;
HttpEntity entity = null;
DefaultHttpClient defClient = new DefaultHttpClient();

HttpPost httpost = new HttpPost("http://sudhaezine.com/svww_loginform.php?email=guest@xxx.com&password=yyy&brw=safari");
res = defClient.execute(httpost);
entity = res.getEntity();

StringBuffer sb = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
String str;
while ((str = reader.readLine()) != null) {
    sb.append(new String(str.getBytes(), "UTF-8"));
}
entity.consumeContent();

これにより、次の応答が得られます

<html><head>  <title></title></head><META HTTP-EQUIV=refresh content=30;url=thankyou.php><body background="images/bg1.gif"><script language="javascript">var popupstr='';   //var bor = navigator.appName;   //alert(bor);   doPopUpWindow = window.open("svww_index1.php","StarView",'width=800,height=600,left=0,top=0'+popupstr);  // if (!doPopUpWindow) {       //Popup blocked open with in current browser window.     //  doPopUpWindow = window.open("svww_index1.php","_parent",'width='+ screen.availWidth +',height='+ screen.availHeight +',left=0,top=0'+popupstr);  // }    try{ var obj = doPopUpWindow.name;  // window.close();//WindowOpen.close();//alert("Popup blocker NOT detected");    }   catch(e){       doPopUpWindow = window.open("svww_index1.php","_parent",'width='+ screen.availWidth +',height='+ screen.availHeight +',left=0,top=0'+popupstr); }</script></body></html>
4

1 に答える 1

1

このようなポップアップは、クライアントの JavaScript コードを介して作成されるため、http クライアントで自動的に処理することはできません。そのため、JS インタープリター (Web ブラウザーなど) を備えたクライアントが必要です。

JavaScript コードをリバース エンジニアリングし、取得したパラメーターを応答本文から結果の関数に渡し、生成された URL に対して http クライアントで新しい要求を作成することで続行できます。このプロセスはWeb スクレイピングと呼ばれます。

于 2013-07-22T11:01:04.640 に答える