使用PHP Curl重定向到我的学校门户

时间:2012-11-10 12:01:59

标签: php curl

我正在尝试使用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,你可以看到,如果你去那里,它会将我重定向到另一个页面。

1 个答案:

答案 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成功(祝你好运)!