我正在尝试自动登录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);
`
答案 0 :(得分: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
尝试提交这些数据。完成此操作后,您应该能够登录。
答案 1 :(得分: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
另请参阅this question on SO我相信他们建议在缺少登录按钮的地方
答案 2 :(得分:0)
你可以查看该页面的源代码,有很多隐藏的输入字段。只提供您的用户名和密码是不够的。
解决方案: