2

PHP CURLメソッドを使用して、アプリケーションへのログインを自動化しようとしています。

アプリケーションのURLは次のとおりです 。https ://www.test.accounts.xerox.com/auth/login.jsf?Xcntry = USA&Xlang = en_US&next_page = https://uscbopoc.external.xerox.com:4430 / eservice_enu /

CURLリクエストを呼び出すための私のPHPコードは次のとおりです。

 $url = 'https://www.test.accounts.xerox.com/auth/login.jsf?Xcntry=USA&Xlang=en_US';
 $cookie = "cookie.txt";   
 $postData    = array( 
                       '_id171:username' => 'XXXX',
                       '_id171:password' => 'XXXX',
                       '_id171:submitLogin' => '_id171_SUBMIT',
                       'nextpage' => 'next_page=https://uscbopoc.external.xerox.com:4430/eservice_enu/'
                      );

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 //curl_setopt($ch, CURLOPT_HTTPHEADER

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4");
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch,CURLOPT_HTTPHEADER,array(
                                          'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                          'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
                                          'Accept-Encoding: gzip,deflate,sdch',
                                          'Accept-Language: en-US,en;q=0.8',
                                          'Cache-Control: max-age=0',
                                          'Connection: keep-alive',
                                          'Content-Type:application/x-www-form-urlencoded',
                                          'Host:www.test.accounts.xerox.com',
                                          'Origin:https://www.test.accounts.xerox.com'
                                          ));


 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch,CURLOPT_REFERER,'https://www.test.accounts.xerox.com/auth/login.jsf?Xcntry=USA&Xlang=en_US&next_page=https://uscbopoc.external.xerox.com:4430/eservice_enu/');
 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
 curl_setopt ($ch, CURLOPT_COOKIEJAR,"c:\\wamp\www\\cookie.txt");
 curl_setopt ($ch, CURLOPT_COOKIEFILE,"c:\\wamp\www\\cookie.txt");

 curl_close($ch);
 return $output;

以下は私のcurl_getinfo関数の出力です

   array
   'url' => string 'https://www.test.accounts.xerox.com/auth/login.jsf?Xcntry=USA&Xlang=en_US' (length=73)
   'content_type' => string 'text/html;charset=UTF-8' (length=23)
   'http_code' => int 200
   'header_size' => int 648
   'request_size' => int 778
   'filetime' => int -1
   'ssl_verify_result' => int 20
   'redirect_count' => int 0
   'total_time' => float 0.969
   'namelookup_time' => float 0
   'connect_time' => float 0.078
   'pretransfer_time' => float 0.407
   'size_upload' => float 568
   'size_download' => float 96789
   'speed_download' => float 99885
   'speed_upload' => float 586
   'download_content_length' => float -1
   'upload_content_length' => float 568
   'starttransfer_time' => float 0.469
   'redirect_time' => float 0
   'certinfo' => 
   array
   empty
   'redirect_url' => string '' (length=0)

しかし、私は常に応答としてログインページを返します。主な問題はCookieにあると思いますが、PHPとCURLは初めてなので、よくわかりません。

また、誰かが私を正しい方向に向けることができれば、CURLについていくつかの一般的な質問がありました。

  1. ポストリクエストに必要なパラメーター(ヘッダー、POSTフィールド)を決定するための最良の方法は何ですか?(私は1つがFirebugであることを知っています)しかし、利用可能なツールはありますか?

回答:HTTPFox(Firefoxプラグイン)を使用しましたが、リクエスト後のパラメーターを決定し、Cookie情報をキャプチャして表示するのに最適であることがわかりました。

  1. CURL投稿リクエストをデバッグするための最良の方法は何ですか?

  2. ログインページを、フォームで提供されたアクション属性のURLまたはURLとして指定する必要がありますか?

回答:これまでのところ、Actionパラメーターの値を使用した投稿リクエストはうまくいきました。

編集 - - - -

パラメータの絶対パスを指定した後、コードが機能し始めました

  CURLOPT_COOKIEJAR
  CURLOPT_COOKIEFILE 

同じことを反映するようにコードを更新しました。また、投稿が機能するために必要なCookieの初期セットを取得するために、最初に単純なgetを実行する必要がありました。

GETリクエストは同じcurlパラメーターを使用していました。

4

1 に答える 1

0

POST リクエストに必要なパラメータ (ヘッダー、POST フィールド) を決定する最良の方法は何ですか? (1 つが Firebug であることは知っています) しかし、利用可能なツールはありますか?

はい、Firebug はツールであり、利用できます。ここでのポイントは、リクエストが機能する場所でインスペクションが必要な場合です。多くの場合、Firebug や Chromium 開発者ツールなどのブラウザー内のツールです。

CURL ポスト リクエストをデバッグする最良の方法は何ですか?

Curl 冗長オプション。

高度な CURL 機能を例で説明するためにオンラインで利用できるチュートリアルはありますか?

もちろん、stackoverflow を検索してください。詳細については、ここに 1 つの例を示します。

ログイン ページを URL またはフォームで提供されるアクション属性の URL として指定する必要がありますか?

それはあなたが何をする必要があるかによって異なります、それは一般的に答えることはできません.

于 2012-10-14T21:58:05.580 に答える