php: получить содержимое защищенной страницы? - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь получить html-код защищенной страницы.Я собираюсь изменить эту страницу с помощью css, поэтому мне нужно сначала получить html-код !!!

У меня есть правильное имя пользователя и пароль.

Я пытался использовать cURL, ноЯ всегда получаю сообщение: «заглушка получила неверные данные»

URL страницы: http://student.guc.edu.eg

Ответы [ 2 ]

6 голосов
/ 21 июля 2011

У вас уже есть код?Вам необходимо использовать такой код, в частности, CURLOPT_HTTPAUTH и CURLOPT_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

Имя пользователя и пароль, отформатированные как «[имя пользователя]: [пароль]» для использования в соединении.


Просмотрзаголовки, возвращаемые с сайта 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 и посмотреть, поможет ли это.

0 голосов
/ 21 июля 2011

Не используйте cURL, используйте класс, написанный кем-то другим, который устраняет все трудности, связанные с запоминанием, для отправки правильных заголовков, создания полезных сообщений об ошибках и т. Д., Таких как Zend_Http_Client:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...