PHP cUrl-自动登录到网站不保留会话

时间:2019-01-21 08:40:48

标签: php php-curl autologin

我对cUrl经验不足。我正在创建一个自动登录网站的机器人。我已经使用cUrl来做到这一点。当我运行我的脚本时,它成功登录了我(我得到响应“ Ok”),但是当我重定向到其他页面时,我退出了。 这是我的代码:

<?php
$username="username";
$userpass="password";
$url="https://www.invertironline.com/User/DoLogin";
$cookie="cookie.txt";


$postdata = "username=".$username."&password=".$userpass."";

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; 
    x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, realpath($cookie));
curl_setopt ($ch, CURLOPT_COOKIEFILE, realpath($cookie));
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$headers  = array();

$headers[] = 'application/xhtml+voice+xml;version=1.2, application/x- 
xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, 
application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, 
*/*;q=0.1';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF- 
8';
$headers[] = 'X-Requested-With: XMLHttpRequest';
$headers[] = 'Referer: https://www.invertironline.com/mercado/cotizaciones';
$headers[] = 'Origin: https://www.invertironline.com';
$headers[] = 'Host: www.invertironline.com';

curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch, CURLOPT_HEADER, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
header("Location: https://www.invertironline.com/mercado/cotizaciones");

以下是一些其他信息: 如果我使用用户名和密码以及操作创建了一个HTML表单并将其提交,它将使我登录并返回以下响应:

{"result":"OK","redirect":"/MiCuenta/EstadoCuenta"}

如果凭据错误,我会收到以下答复:

{"result":"Error"}

因此,当我使用curl时,我会得到相同的响应,但是当我尝试重定向时,我没有登录(可能未保存会话) 我花了3天的时间为此找到解决方案,但仍然无法解决任何问题。

1 个答案:

答案 0 :(得分:0)

在cookie.txt文件中查看。它应该详细显示您遇到的问题。 如果会话可用,但没有响应,请告诉我,这样我就可以知道如何为您提供更好的帮助,如果文件清晰,则在cookie存储阶段您的代码中有问题。因此,请检查cookie。 txt文件,告诉我您在其中找到了什么。