【问题标题】:Using PHP Curl to redirect to my school portal使用 PHP Curl 重定向到我的学校门户
【发布时间】:2012-10-30 14:04:59
【问题描述】:

我正在尝试使用 PHP Curl 连接到我学校的门户网站,但没有运气,因为它似乎重定向到某些页面。我正在制作一个用于在 jQuery mobile 中显示学校日程的 web 应用程序,但为了显示您自己的日程安排,您需要登录并从那里转到您的日程安排。这就是我打算使用 CURL 和 PHP 来实现的目标。

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

【问题讨论】:

  • 该代码看起来不错,您在该代码中遇到了什么问题?
  • 它重定向你的页面有没有说什么?也许实际的登录页面是将您重定向到的地方?或者他们可能会主动尝试停止自动连接尝试?
  • 感谢您的回复,它自己的代码完美无缺。问题是我找不到应该用来获取内容的链接。我认为这是因为它每次都使用不同的 url 重定向,但我不知道如何验证它。我如何检查它是否主动尝试停止自动连接尝试?

标签: php curl


【解决方案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) 由于某些原因,当我被 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>

只需解析这些并使用这些 POST 值重定向到 https://aselect.hhs.nl/aselectserver/server ...

4) 最后我们在https://aselect.hhs.nl/aselectserver/server 上实际输入我们的凭据,您还应该在其中解析数据并将其与凭据一起发送。完成此步骤后,只有您知道门户背后的内容...

结论:这些安全措施清楚地表明他们想要阻止像我们这样的自动化小子,如果有一天这些步骤被改变了怎么办?我的建议是向学校索取一些 API,我知道荷兰的一些学校使用 Untis,他们有一个很棒的 AP​​I 可以返回一些 JSON 数据!

如果您坚持,或者如果您无法获得 API,那么请准备好进行一些艰苦的工作!

Veel 成功(祝你好运)!

【讨论】:

  • 非常感谢..你解释得很清楚:)现在我不必继续尝试这样做了..我想我会问学校 voor API 但我认为他们不会给它或不会拥有它..我将保持原样并使用学校的永久链接..我认为在 10 周内更改一次..将尝试另一种方式..如果我得到我会把它贴在这里:) 非常感谢你的努力和清晰的解释..
猜你喜欢
  • 2021-01-13
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
相关资源
最近更新 更多