php:获取受保护页面的内容?

时间:2011-07-21 07:15:53

标签: php curl get

我正在尝试获取受保护页面的HTML代码。我的目标是用css重新设置这个页面,所以我需要先获取html代码!!!

我有一个有效的用户名和密码。

我曾尝试使用cURL,但我总是最终收到这条消息:“存根收到错误的数据”

页面的网址为:http://student.guc.edu.eg

2 个答案:

答案 0 :(得分:6)

你有代码吗?您需要使用此类代码,专门使用CURLOPT_HTTPAUTHCURLOPT_USERPWD

$username = 'studentid';
$password = 'studentpassword';

$ch = curl_init("http://student.guc.edu.eg/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
$html = curl_exec($ch);
curl_close($ch);

CURLOPT_HTTPAUTH

要使用的HTTP身份验证方法。选项包括:CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY和CURLAUTH_ANYSAFE。

按位| (或)运算符可用于组合多个方法。如果这样做,cURL将轮询服务器以查看它支持的方法并选择最佳方法。

CURLAUTH_ANY是CURLAUTH_BASIC |的别名CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。

CURLAUTH_ANYSAFE是CURLAUTH_DIGEST |的别名CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM。

CURLOPT_USERPWD

用于连接的格式为“[username]:[password]”的用户名和密码。


查看从网站http://student.guc.edu.eg/返回的标头,如下所示:

> curl -I http://student.guc.edu.eg/
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Thu, 21 Jul 2011 08:18:34 GMT
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="student.guc.edu.eg"
Connection: close
Content-Length: 4431
Content-Type: text/html

这意味着您应该尝试使用CURLAUTH_BASIC,而不是使用CURLAUTH_NTLM,看看是否有帮助。

答案 1 :(得分:0)

不要使用cURL,使用其他人编写的类,它会消除记住发送正确标题的所有麻烦,产生有用的错误消息等,例如Zend_Http_Client:

http://framework.zend.com/manual/en/zend.http.html