我正在尝试使用PHP CURL方法尝试自动登录到应用程序。
我调用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的一般性问题:
Ans:我使用了HTTPFox(一个firefox插件),发现它很完美 确定post请求参数以及捕获和查看 cookies信息
调试CURL帖子请求的最佳方法是什么?
我们是否应该将Login Page作为表单中提供的action属性的URL或url?
Ans:到目前为止,使用Action参数值的post请求 为我工作过。
在我提供参数的绝对路径
之后,代码开始工作 CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE
我已更新代码以反映相同内容,我还必须首先执行一个简单的获取,以获取发布工作所需的初始Cookie集。
GET请求具有相同的curl参数。
答案 0 :(得分:0)
确定发布请求所需的参数(标题,POST字段)的最佳方法是什么? (我知道一个是Firebug)但有工具吗?
是的,Firebug是一个可用的工具。这里的情况是你需要在那里查看请求的工作,所以通常是浏览器内部的工具,如Firebug或Chromium开发人员工具。
调试CURL帖子请求的最佳方法是什么?
Curl verbose选项。
是否有在线提供的教程可以通过示例解释高级CURL功能?
当然,只需搜索stackoverflow。这里只是一个例子,详细说明:
我们是否应该将Login Page作为表单中提供的action属性的URL或url?
这取决于你需要做什么,通常不能回答。