我正在尝试使用PHP Curl连接到我的学校门户但没有运气,因为它似乎重定向到某些页面。我正在制作一个webapp,用于显示jQuery mobile中的学校日程安排,但为了显示您自己的日程安排,您需要登录并从那里查看您的日程安排。这是我打算用PHP使用CURL实现的目标。
我使用了来自http://codeaid.net/php/get-the-last-effective-url-from-a-series-of-redirects-for-the-given-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,你可以看到,如果你去那里,它会将我重定向到另一个页面。
答案 0 :(得分:1)
你想要做的几乎是不可能的......他们应用了几种方法和安全令牌的重定向......让我解释一下:
初看起来,我以为我被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)由于某些原因,当我使用篡改数据重定向时,我无法“打开”数据,因此您必须对此步骤进行一些研究...
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>
只需解析这些内容并使用这些POST值重定向到https://aselect.hhs.nl/aselectserver/server ...
4)最后我们在https://aselect.hhs.nl/aselectserver/server我们实际输入我们的凭据,您还应该解析数据并使用凭据发送它。在此步骤之后,您只知道门户网站背后的内容......
结论:这些安全措施清楚表明他们想要阻止像我们这样的自动小孩,如果有一天这些步骤被改变了怎么办?我建议要求学校提供一些API,我知道荷兰的一些学校使用Untis并且他们有一个很棒的API可以返回一些 JSON 数据!
如果您坚持或者无法获得API,那么请做好一些努力工作!
Veel成功(祝你好运)!