Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Топ пользователей
Drunya
Репутация: 110
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
В предыдущей статье мы остановились на том что научились получать доступ к страницам удаленных сайтов посредством CURL. Для повторения лишь приведу последний пример.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
<?php //устанавливаем что будем посылать
$reguestParams 'var=value&var2=value2';
//инициализируем сеанс
$ch curl_init('http://target.com');
//устанавливаем параметры
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
//говорим что мы собираемся передавать данные и что именно передавать
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$reguestParams);
//делаем запрос
$responseData curl_exec($ch);
//закрываем сеанс
curl_close($ch);?>

Теперь давайте разберемся как нам получить доступ к странице с авторизацией. Для этого мы должны получить ID сессии и в дальнейшем передавать его при каждом запросе. Это может выглядеть сложно, но на самом деле все намного проще. Сперва мы отправляем POST запрос с логином и паролем, а за тем вытягиваем ID сессии и в дальнейшем путешествуем по сайту и получаем его странички, пользуясь этим ID.
Делается это так

 1 
 2 
 3 
<?php if ( isset($_SESSION['user_sess_id']) ) {
    
curl_setopt($chCURLOPT_COOKIE'PHPSESSID=' $_SESSION['user_sess_id']);
}
?>

А теперь все вместе, что бы было понятнее как CURL с этим всем справляется

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
<?php //устанавливаем что будем посылать
$reguestParams 'var=value&var2=value2';
//инициализируем сеанс
$ch curl_init('http://target.com');
//устанавливаем параметры
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
//говорим что мы собираемся передавать данные и что именно передавать
curl_setopt($chCURLOPT_POST1);
//устанавливаем куки с ID сессии
if ( isset($_SESSION['user_sess_id']) ) {
    
curl_setopt($chCURLOPT_COOKIE'PHPSESSID=' $_SESSION['user_sess_id']);
}
curl_setopt($chCURLOPT_POSTFIELDS$reguestParams);
//делаем запрос
$responseData curl_exec($ch);
//закрываем сеанс
curl_close($ch);
//тут мы проверяем пришел ли нам в ответе от сервера ID сессии и если он есть устанавливаем его
if (preg_match('#Set-Cookie:\s+PHPSESSID=(.*);#Ui'$responseData$match)) $_SESSION['user_sess_id'] = $match[1];?>

как видишь, все очень просто. Мы просто, получая ответ проверяем есть ли там то что нам надо и пихаем его в нашу сессию, но перед запросом устанавливаем куки. Но некоторые сайты так же проверяют заголовки, что бы еще немного себя обезопасить. Наш друг КУРЛ и с этим справляется на 5 баллов. Например заголовки в curl можно установить так

 1 
 2 
<?php curl_setopt($chCURLOPT_USERAGENT'Браузер');
curl_setopt($chCURLOPT_REFERER 'Реферер');?>

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

Думаю на некоторое время этого тебе хватит, а осмыслив то что тут написано и как с этим работать, можно почитать третью часть этой статьи.
Как обчистить чужой сайт - Нет проблем. ЧАСТЬ 2

Теги: грабер; парсер; CURL PHP; Грабер сайтов; Как грабить контент;
Источник: Drunya
Автор: Drunya
Категория: PHP
Просмотров: 3217
Комментариев: 0

Сейчас online: 4. Зарегистрированных: 0. Гостей: 4.
-->