我正在尝试在我的php Web应用程序上使用按钮在另一个网站上启动登录的会话。换句话说,我希望我的应用程序:无头登录:使用cURL登录并打开远程会话
- 打开一个新标签/窗口(实现)
- 转到另一个网站+登录或
- (或者)收集所需的目标站点的会话数据考虑当前的浏览器登录
这得以实现(在不完全的方式用下面的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_REFERER, $url);
$result = curl_exec ($ch);
curl_close ($ch);
print $result;
这成功地将远程站点的“登录”页面可视化,但是每当我点击此类远程站点的任何功能时,我都会看到并显而易见404。这是因为我只是通过cURL打印成功登录的输出而我的浏览器不处理目标网站上的远程应用程序。例如。我的地址栏说我在local.dev/loggedin.php中,而不是在secure.targetsite.com/loggein.php。
这可能有帮助:一旦通过浏览器登录后,目标网站会设置一个会话cookie,允许会话在一段时间内存活,这样也可能有用。我的web应用程序是否可以从curl执行的auth过程中获取并存储会话数据并使用它登录?
这也许是不可能被通过卷曲做..
我想的只是解析响应报头的cookie和使用PHP的setcookie(),但它不工作:我得到远程反弹应用程序,如果我从未登录过。
请耐心等待,我不是使用卷曲的专家。
你是对的,这不可能通过cURL。而且你也不能为其他域设置Cookie。 – CBroe
如果你想创建一个无头的登录到另一个网站,你会以哪种方式解决这个问题? – artoo