2010-05-20 1 views
0

Да, да, я знаю пользователя и пароль.Как собирать страницы с веб-сайта за аутентификацией в PHP

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

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

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

Аутентификация является обычным протоколом HTTP с POST.

Редактировать: ok Спасибо за помощь!

я отправляю рабочий код здесь для будущей ссылки

//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); 
+0

Вам нужно сделать это программно с помощью PHP. Если нет, попробуйте использовать wget или тому подобное. Какую аутентификацию использует веб-сайт? Форма HTML или базовая аутентификация HTTP или что-то более экзотическое? – fmark

ответ

1

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

+0

, если я это сделаю, как я могу сохранить успех сеансовой аутентификации и вызвать завиток на другие страницы? – apelliciari

1

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

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

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

Как указано в php manual:

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. 
+0

хороший подсказка! thanx – apelliciari