1

https://www.myicomfort.com/に自動ログインしてデータを取得しようとしています。投稿された例のいくつかを試しましたが、機能していないようです。ユーザー名とパスワードを渡すときに、正しいフィールド名を使用していない可能性があります。誰かplsが助けることができますか?まだPHPを学んでいます。ありがとう!

$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL,"https://www.myicomfort.com/");  
curl_setopt($ch, CURLOPT_COOKIEFILE,1);  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
curl_setopt($ch, CURLOPT_HEADER, true);    
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);  
curl_setopt($ch, CURLOPT_TIMEOUT, 120);  

$post_array = array(  
'ctl00$RightContent$txtUserName'=>'xxxname',  
'ctl00$RightContent$txtPwd'=>'xxxpassword',  
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_array); 

$output = curl_exec($ch);

curl_close($ch);

`

4

3 に答える 3

1

他のフィールドがありません。Chrome で Ctrl+Shift+I を押して、どのフィールドが送信されているかを確認し、ログインを試みます。ページをクリックすると、次のように表示されます。

__LASTFOCUS:
__EVENTTARGET:
__EVENTARGUMENT:
__VIEWSTATE:/wEPDwUKMTczNjcxMDc0Mg9kFgJmD2QWAgIDD2QWBAIDD2QWBAI...
__EVENTVALIDATION:/wEWCAKI/qyXDAKSptf/CwKJn6v3AQKdg7/fBwKNoqOVDAK...
ctl00$RightContent$hdnPwd:
ctl00$RightContent$txtUserName:asfasdfa
ctl00$RightContent$txtPwd:dfasdf
ctl00$RightContent$chkRemember:on
ctl00$RightContent$btnLogin:Log in

それらのデータも提出してみてください。これが完了したら、ログインできるはずです。

于 2012-09-16T19:47:45.407 に答える
0

Uはそのページのソースコードを調べることができます。多くの非表示の入力フィールドがあります。ユーザー名とパスワードを入力するだけでは不十分です。

ソリューション:

  1. これらすべてのフィールドを取得し、PHPを使用して一緒に送信します
  2. ブラウザをシミュレートできるライブラリを使用すると、ログイン時にユーザー名とパスワードしか提供できなくなります。これは少し遅くなりますが、コードのボトルネックにはなりません。
于 2012-09-16T20:00:56.947 に答える
0

必要なすべての入力フィールドを使用していることを確認してください。フォームから送信される情報をネット スニッフィングすると、次のようになります。

'__EVENTARGUMENT'   
'__EVENTTARGET' 
'__EVENTVALIDATION'             /wEWCAKI/qyXDAKSptf/CwKJng .. etc
'__LASTFOCUS'   
'__VIEWSTATE'                   /wEPDwUKMTczNjcxMDc0Mg9kFgJmD2QWAg .. etc
'ctl00$RightContent$btnLog...'  Log in
'ctl00$RightContent$chkRem...'  on
'ctl00$RightContent$hdnPwd' 
'ctl00$RightContent$txtPwd'     vyvuy
'ctl00$RightContent$txtUse...'  iuhgiu

SO に関するこの質問も参照してください。

于 2012-09-16T19:53:21.163 に答える