1

我正在尝试自动登录到https://www.myicomfort.com/以检索数据。尝试了一些发布的示例,但似乎不起作用。也许我在传递用户名和密码时没有使用正确的字段名称。有人可以帮忙吗?还在学习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

你可以查看那个页面的源代码,有很多隐藏的输入字段。仅提供您的用户名和密码是不够的。

解决方案:

  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 回答