Php curl正在返回不完整的数据
我正试图登录一个网站的用户名和密码与php卷曲Php curl正在返回不完整的数据,php,curl,Php,Curl,我正试图登录一个网站的用户名和密码与php卷曲 <?php $url = 'http://XXXXX.com/login'; $ch = curl_init(); $formFields = array('username' => 'XXXX', 'password' => 'WAO', 'button' => 'Login'); $cookiefile = 'C:/wamp/www/tests/cookies.txt'; curl_setopt($ch, CURLOP
<?php
$url = 'http://XXXXX.com/login';
$ch = curl_init();
$formFields = array('username' => 'XXXX', 'password' => 'WAO', 'button' => 'Login');
$cookiefile = 'C:/wamp/www/tests/cookies.txt';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $formFields);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
echo $response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
服务器可能会以元刷新或某种错误进行响应。检查响应标题…这是一个很好的开始
$response = curl_exec($ch);
print_r(curl_getinfo($ch));
您还应该使用http\u build\u query()将post字段作为字符串而不是数组发送
如果您正在加载的页面是通过Ajax将内容加载到页面上的,那么显然会得到不同的结果。而且,您提到的站点似乎确实通过ajax请求加载内容
cURL不能解析javascript,因此不能通过ajax加载内容。因此,您无法获得与普通浏览器完全相同的内容
您可以通过将cURL的输出和浏览器与禁用javascript的输出进行比较来验证上述说法,并发现它们是相同的。我怀疑这是一个与网络连接相关的问题。为了更清楚地理解,请将echo line替换为$response=cURL\u exec($ch);回显“”,htmlentities($response),“”;我有过几次使用代理的经验,代理会返回http状态为200的不完整响应!服务器可以通过多种方式请求浏览器刷新…通过302状态代码或元刷新标记。我不认为curl会跟随meta-refresh,在禁用javascript之后,我仍然得到不同的输出。此外,我认为没有人会使用ajax添加:)
$formFields = http_build_query( array('username' => 'XXXX', 'password' => 'WAO', 'button' => 'Login'));