获取使用基于表单的身份验证的页面的页面内容


Get page content of a page which is using a form-based authentication

最近,我成功地使用JSON插件获取了wiki页面的内容:

        $username = '****';
        $password = '****';
        $sc = new Serverclient_helper();
        $login = "http://********/api.php?action=login&lgname=$username&lgpassword=$password";
        $content = $sc->getContent($login,array(),false);   
        $host = "http://******/api.php?action=parse&format=json&page=Main";
        $content = $sc->getContent($host);
        $content = json_decode($content);

今天,我也尝试过做同样的事情,但使用了另一个需要登录的页面,比如wiki页面。它并不成功。我认为这是因为这个页面并没有wiki页面的结构。这是wiki页面的内容。我读了很多书,我知道我的页面正在使用基于表单的身份验证。但我仍然想知道如何访问页面的全部内容。

我也使用了curl_setopt,但它并没有帮助我获得内容。只显示了登录页面,但我没有登录。

这是我的代码:

$username='*****';
$password='*****';
$location='http://*****/startphp';

$mycurl = curl_init ();
curl_setopt($mycurl,CURLOPT_URL,$location);
curl_setopt($mycurl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($mycurl,CURLOPT_USERPWD,"$username:$password");
curl_setopt($mycurl, CURLOPT_TIMEOUT, 10);
$result = curl_exec ($mycurl); 
var_dump($result);

提前感谢!

CURLOPT_USERPWD仅用于基本HTTP身份验证。

您将需要使用与服务相匹配的POST命令。

$data = array('username' => 'User', 'password' => 'Pass');
curl_setopt($ch, CURLOPT_POST, 2);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

你还需要考虑存储该网站为你提供的SESSION

带有CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR选项