Как массово получить страницы с сайта за аутентификацией в PHP - PullRequest
0 голосов
/ 20 мая 2010

Да, да, я знаю пользователя и пароль.

Мне нужен трюк в php, чтобы зайти на сайт и получить некоторые изображения / содержимое, как на обычном сайте.

Очевидно, что с curl o file_get_contents он не работает, потому что я не аутентифицирован.

Как я могу это сделать?

Аутентификация - это обычная аутентификация HTTP с POST.

Редактировать : хорошо, спасибо за помощь, это работает!

Я публикую здесь рабочий код для дальнейшего использования

//login and set cookie
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile"); # SAME cookiefile
curl_setopt($curl, CURLOPT_URL, "url in which there is the login form"); 
curl_setopt($curl, CURLOPT_POSTFIELDS, "user=test&password=test&someparam=somevalue"); //put here the post/get values
$output = curl_exec($curl);

echo $output;

//finally fetch my content
curl_setopt($curl, CURLOPT_URL, $url_to_fetch); 
$output = curl_exec($curl);
echo $output;

curl_close ($curl);

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Вы можете аутентифицироваться с помощью curl. Curl позволяет отправлять переменные POST для входа в систему, а также базовую HTTP-аутентификацию.

1 голос
/ 20 мая 2010

Используйте браузер для аутентификации, экспортируйте куки и используйте их с помощью curl. Пока сеанс длится, вы должны выдавать себя за своего пользователя.

Я спешу и не могу предоставить вам код прямо сейчас, но я думаю, что это может помочь вам

Вы можете использовать опцию CURLOPT_COOKIEFILE, чтобы указать файл, в котором вы сохранили куки.

Как указано в руководстве php :

The name of the file containing the cookie data. 
The cookie file can be in Netscape format, or just 
plain HTTP-style headers dumped into a file. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...