我正在尝试使用 PHP Curl 连接到我学校的门户网站,但没有成功,因为它似乎会重定向到某些页面。我正在制作一个用于在 jQuery Mobile 中显示学校时间表的网络应用程序,但为了显示您自己的时间表,您需要登录并从那里转到您的时间表。这就是我打算在 PHP 中使用 CURL 来实现的目标。
我使用了 http://codeaid.net/php/get-the-last-effective-url-from-a-series-of-redirects-for-the-given-url 中的教程它适用于给定的链接,但我找不到应该使用哪个链接重定向到我的学校门户。
如果有人知道要遵循哪些步骤才能知道您必须使用哪个 URL,那将非常有帮助。
我用过的代码:
<?php function getLastEffectiveUrl($url)
{
// initialize cURL
$curl = curl_init($url);
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
));
// execute the request
$result = curl_exec($curl);
// fail if the request was not successful
if ($result === false) {
curl_close($curl);
return null;
}
// extract the target url
$redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
curl_close($curl);
return $redirectUrl;
}
$lastEffectiveUrl = getLastEffectiveUrl('https://login.hhs.nl');
echo $lastEffectiveUrl . "-";
?>
同样,这是我从 Codeaid 学习的教程,我不认为这是我自己制作的。
我的学校页面的链接是 https://portal.hhs.nl,如您所见,如果您去那里,它会将我重定向到另一个页面。
最佳答案
你想做的几乎是不可能的......他们应用了几种重定向和几种方法和安全 token ......让我解释一下:
乍一看,我以为我被 header() 重定向了,但是当我使用 Tamper Data 时图片变得更加清晰:
1) 当你打开https://portal.hhs.nl ,您被一些元标记重定向
<META name="verify-v1" content="Yh6PvgPdX64Vdo9akXqTvstTouu9uQcvrPpFaL9jqZs=" />
<META name="verify-v1" content="eiUD3J3OcF6SjBKGe5ZvkMTzVEJ9rnpr1NaCKV9OIKw=" />
<meta name="google-site-verification" content="Ka0UPoAllNqYvbuviJCk8iV64YfqfWbX6G1APHdY5tg" />
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<META content="0; URL=http://portal.hhs.nl/portal/pls/portal/PORTAL.home" http-equiv=Refresh>
所以你必须解析那些元标记,然后重定向......这是你如何做的PHP: Can CURL follow meta redirects
2) 由于某些原因,当我使用Tamper Data 重定向时,我无法“打开”数据,因此您必须对这一步进行一些研究...
3) 这是另一种使用 JavaScript 的“重定向”技术!!!
<FORM NAME="SingleSignOn" METHOD="POST" ACTION="https://aselect.hhs.nl/aselectserver/server" >
<INPUT TYPE="HIDDEN" NAME="request" VALUE="direct_login1" >
<INPUT TYPE="HIDDEN" NAME="rid" VALUE="C741680139CA153E" >
<INPUT TYPE="HIDDEN" NAME="a-select-server" VALUE="aselectserver1" >
</FORM>
</BODY>
只需解析这些并重定向到 https://aselect.hhs.nl/aselectserver/server使用这些 POST 值 ...
4) 最后我们到了 https://aselect.hhs.nl/aselectserver/server我们实际输入凭据的位置,以及您还应该在哪里解析数据并将其与凭据一起发送。在这一步之后只有你知道门户背后的内容......
结论:这些安全措施清楚地表明他们想要阻止像我们这样的一些自动化小子,如果有一天这些步骤被改变了怎么办?我的建议是向学校询问一些 API,我知道荷兰的一些学校使用 Untis他们有一个很棒的 API,可以返回一些 JSON 数据!
如果您坚持要或无法获得 API,请准备好进行一些艰苦的工作!
Veel 成功(祝你好运)!
关于php - 使用 PHP Curl 重定向到我的学校门户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321861/