无法通过php curl登录大学

时间:2015-08-18 17:06:27

标签: php curl

以下是我一直用来编写脚本的代码,该脚本登录到我的大学网站,以便从登录后面提取文件。

一直发生的是它返回登录页面(记住我在此表单中的用户名),但它没有进行身份验证。我觉得密码没有被转移,但我不知道为什么。当我手动执行时,我已经尝试查看通过浏览器发送的帖子请求,一切都很好。字段应分别是用户名和密码......

<?php

$username = 'someuser';
$password = 'somepass';

$loginUrl = 'https://vault.andrews.edu/vault/goto/login';
$loginFields = array('username'=>$username, 'password'=>$password); //login form field names and values
$remotePageUrl = 'google.com'; // Will be changed to a remote page

$login = getUrl($loginUrl, 'post', $loginFields); //login to the site

$remotePage = getUrl($remotePageUrl); //get the remote page

function getUrl($url, $method='', $vars='') {
    $ch = curl_init();
    if ($method == 'post') {
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

    //curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12");
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies/cookies.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies/cookies.txt');
    $buffer = curl_exec($ch);
    print $buffer;
    curl_close($ch);
    return $buffer;
}
print $login;

?>

有人可以弄清楚为什么不通过?对不起,我不能分享真正的凭据供你们使用。

2 个答案:

答案 0 :(得分:1)

你有两种方式

首先是添加

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);

第二是供应证书 像这儿 SSL Certificate request with cURL

答案 1 :(得分:1)

您尝试使用的登录表单不会提交给自己。相反,它提交到https://vault.andrews.edu/vault/app/login/set。此外,表单中可能需要隐藏字段service,其值为http://www.andrews.edu/

进行这些更改:

$loginUrl = 'https://vault.andrews.edu/vault/app/login/set';
$loginFields = array('username'=>$username, 'password'=>$password, 'service' => 'http://www.andrews.edu/');

应该修复你的脚本。

相关问题