PHPcurl:登录网站并在登录 HTTP 404 资源未找到错误后获取数据
PHPcurl: Login into Website and GET Data after Login HTTP 404 Resource not found Error
我想通过 phpcurl 自动登录我的 Horde Webmail,然后显示我所有的电子邮件。
到目前为止,我的登录工作完美。
我使用凭据和 Cookie 登录。
有什么问题?
我显示了我的仪表板,但没有任何数据。这是一个屏幕截图:
我得到什么错误输出?
在控制台中显示:
Failed to load resource: the server responded with a status of 404 (Not Found)
这是我的控制台的屏幕截图:
到目前为止我使用了什么代码?
//Data
$webmail_login = "http://webmail.licht-austria.at/login.php";
$webmail_mailbox = "http://webmail.licht-austria.at/imp/dynamic.php?page=mailbox";
$login = "";
$password = '';
$postdata = "login_post=1&horde_user=$login&horde_pass=$password&horde_select_view=auto&new_lang=de_DE";
//Curl Login POST
$ch = curl_init();
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $webmail_login );
curl_setopt($ch, CURLOPT_NOBODY, 1);
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_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec($ch);
//Until here it works i logged in
//Curl Mailbox GET
curl_setopt($ch, CURLOPT_URL, $webmail_mailbox);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$data = curl_exec($ch);
echo $data;
我的代码如何工作?
在第一步中,我使用我的凭据并通过 POST 登录到我的 Webmail。
PostData 是正确的,我可以登录。在 webmail.at/login.php 完成后,我被重定向到我的收件箱 (webmail.at/imp/dynamic.php?page=mailbox)。
网络邮件现在使用 GET 方法获取所有电子邮件和资料,此时我收到 404 错误。
它正在使用相对路径加载资源。它需要像 http://www.example.com/jquery.min.js 这样的绝对路径。你可以做的是从它的网站下载所有需要的资源并将它们放在 src 文件夹中。该网站用于示例 /script.js
,现在它在您的项目中查找它,因为它是相对路径。
Failed to load resource: the server responded with a status of 404
(Not Found)
好吧,这个错误与curl无关,它与将网站资源加载到您的网页有关。
要解决这个问题,您可以通过以下方式解决它:
echo '<base href="http://www.example.com" />' . $data;
但是,不建议这样做。
您最好重新处理您的响应数据,
例如,如果响应是 html,则使用 Dom 库解析它,或者简单地使用正则表达式,如果它是 json 响应 rebuild 新的简单 ui 查看您的结果。
我想通过 phpcurl 自动登录我的 Horde Webmail,然后显示我所有的电子邮件。 到目前为止,我的登录工作完美。 我使用凭据和 Cookie 登录。
有什么问题?
我显示了我的仪表板,但没有任何数据。这是一个屏幕截图:
我得到什么错误输出?
在控制台中显示:
Failed to load resource: the server responded with a status of 404 (Not Found)
这是我的控制台的屏幕截图:
到目前为止我使用了什么代码?
//Data
$webmail_login = "http://webmail.licht-austria.at/login.php";
$webmail_mailbox = "http://webmail.licht-austria.at/imp/dynamic.php?page=mailbox";
$login = "";
$password = '';
$postdata = "login_post=1&horde_user=$login&horde_pass=$password&horde_select_view=auto&new_lang=de_DE";
//Curl Login POST
$ch = curl_init();
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $webmail_login );
curl_setopt($ch, CURLOPT_NOBODY, 1);
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_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec($ch);
//Until here it works i logged in
//Curl Mailbox GET
curl_setopt($ch, CURLOPT_URL, $webmail_mailbox);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$data = curl_exec($ch);
echo $data;
我的代码如何工作?
在第一步中,我使用我的凭据并通过 POST 登录到我的 Webmail。 PostData 是正确的,我可以登录。在 webmail.at/login.php 完成后,我被重定向到我的收件箱 (webmail.at/imp/dynamic.php?page=mailbox)。 网络邮件现在使用 GET 方法获取所有电子邮件和资料,此时我收到 404 错误。
它正在使用相对路径加载资源。它需要像 http://www.example.com/jquery.min.js 这样的绝对路径。你可以做的是从它的网站下载所有需要的资源并将它们放在 src 文件夹中。该网站用于示例 /script.js
,现在它在您的项目中查找它,因为它是相对路径。
Failed to load resource: the server responded with a status of 404 (Not Found)
好吧,这个错误与curl无关,它与将网站资源加载到您的网页有关。
要解决这个问题,您可以通过以下方式解决它:
echo '<base href="http://www.example.com" />' . $data;
但是,不建议这样做。
您最好重新处理您的响应数据,
例如,如果响应是 html,则使用 Dom 库解析它,或者简单地使用正则表达式,如果它是 json 响应 rebuild 新的简单 ui 查看您的结果。